CNU-ANT / BOJ-AutoCommit

When you solve the problem of Baekjoon Online Judge site, it automatically commits and pushes to remote repository.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BOJ-AutoCommit

BOJ-AutoCommitBaekjoon Online Judge(이하 BOJ)의 다양한 알고리즘 문제를 풀어서 제출하고 정답을 맞추면 Github 또는 Bitbucket과 같은 원격저장소에 Source Code를 Push합니다. 일정한 시간마다 CasperJS를 사용하여 BOJ에서 ID로 정답을 맞춘 문제들을 검색 및 분석하여, Repository에 해당 문제 파일이 존재하지 않으면 Source Code를 다운로드 받아 Local Repository에 저장함과 동시에 Git을 사용하여 Add, Commit 그리고 Push를 자동으로 하며, Node.js를 기반으로 만들어졌습니다.

Installation

$ git clone https://github.com/ISKU/BOJ-AutoCommit

Dependency

$ sudo apt-get install phantomjs
$ npm install -g casperjs

How to use

  • info.json에 다음과 같이 BOJ의 회원 정보와, 원격저장소의 회원 정보 및 URL을 입력하여야 합니다.
{
	"boj_id": "my_boj_id",
	"boj_password": "my_boj_password",
	"git_id": "my_github_id",
	"git_password": "my_github_password",
	"remoteUrl": "https://github.com/ISKU/Algorithm"
}
  • 반드시 info.json에 올바른 정보를 입력하고 다음 두가지 방법으로 Tool을 실행합니다.
$ node app.js info.json
$ ./app.js info.json
  • 이 Tool은 대기하고 있는 시간이 길기 때문에 다음과 같이 Background에서 실행을 권장합니다.
$ nohup node app.js info.json &

Default

  • 문제번호로 Directory를 생성 한 후, 하위에 문제번호를 제목으로 Source Code 파일이 저장됩니다.
  • Commit Message는 기본적으로 "https://www.acmicpc.net/problem/문제번호" 입니다.
  • 약 10분마다 맞았던 문제를 검색하고 새롭게 맞은 문제가 있으면 원격저장소에 Push합니다.
  • 정답을 맞춘 가장 최근 20개의 문제에 대해서만 분석하며, 정답을 맞춘 모든 문제를 다루지는 않습니다.
  • 정답을 맞춘 문제가 여러가지가 있을 경우 가장 마지막에 제출한 Source Code를 선택합니다.

Extension

  • Tool을 확장하여 자유롭게 자신의 원격저장소를 관리할 수 있습니다.
  • info.json에 다음 예제와 같이 원하는 Option을 설정하세요.
{
	"boj_id": "my_boj_id",
	"boj_password": "my_boj_password",
	"git_id": "my_github_id",
	"git_password": "my_github_password",
	"remoteUrl": "https://github.com/ISKU/Algorithm",
	
	"commitMessage": "[NO]번 [TITLE] 문제풀이",
	"sourceTree": "Algorithm/BOJ/Src",
	"dirName": "[NO]",
	"mkdir": true,
	"private": true,
	"poll": 60000,
	"sourceName": "[NO]"
}

💡 사용하지 않는 Option은 반드시 지워야 합니다.


Key Options:

Key Description
commitMessage Commit 내용을 지정합니다.
sourceTree 원하는 위치에 Source를 저장합니다. (시작 Directory는 Repository 이름과 일치하여야 합니다.)
dirName Source가 저장 되는 Directory의 이름을 지정합니다.
mkdir Source가 저장 될 때 Directory를 생성 할 것인지를 결정합니다. (false: dirName Option은 무시됩니다.)
private BOJ에서 Source를 비공개로 설정하면 해당 문제는 무시됩니다.
poll BOJ의 맞은 문제를 검색하는 주기를 Millisecond 단위로 설정합니다. (최소 5분 이상이여야 합니다.)
sourceName Source 파일의 이름을 설정합니다. [NO]를 사용하여 문제번호로 저장하는 것을 추천합니다.

💡 [NO]: 내용에 [NO]가 있으면 문제의 번호로 Replace 됩니다.
💡 [TITLE]: 내용에 [TITLE]이 있으면 문제의 제목으로 Replace 됩니다. (commitMessage Option에만 적용됩니다.)

Example

{
	"boj_id": "my_boj_id",
	"boj_password": "my_boj_password",
	"git_id": "my_github_id",
	"git_password": "my_github_password",
	"remoteUrl": "https://github.com/ISKU/Algorithm",
	
	"commitMessage": "BOJ #[NO]: [TITLE]",
	"sourceTree": "Algorithm/BOJ",
	"private": true,
	"poll": 30000,
	"sourceName": "Main"
}

License

Author

About

When you solve the problem of Baekjoon Online Judge site, it automatically commits and pushes to remote repository.

License:MIT License


Languages

Language:JavaScript 100.0%