{"_id":"42grader","_rev":"6-f99eda1393b0852177362ea8e157bf95","time":{"created":"2023-01-07T07:45:45.426Z","2.0.0-0":"2023-01-06T05:39:19.808Z","modified":"2023-01-09T07:52:30.384Z","2.0.0":"2023-01-07T07:45:45.609Z","2.0.1":"2023-01-07T08:30:29.431Z","2.0.2":"2023-01-07T08:37:25.091Z","2.1.0":"2023-01-08T03:21:22.701Z","2.1.1":"2023-01-09T07:52:30.297Z"},"name":"42grader","dist-tags":{"latest":"2.1.1"},"versions":{"2.0.0":{"name":"42grader","version":"2.0.0","type":"module","description":"A Grader framework for 42 Piscine","main":"app.js","scripts":{"start":"node app.js"},"bin":{"42grader":"app.js"},"author":{"name":"Junsang Mun"},"license":"AGPL-3.0","dependencies":{"js-yaml":"^4.1.0","prompts":"^2.4.2","shelljs":"^0.8.5"},"gitHead":"c227c1f6536a0310e0688dd236aa87d8d8648033","_id":"42grader@2.0.0","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-VZViiGOqftJCaoKET09lzuaZ/GBBpH+Qsfee1w35mrkaR2fnN2ipvgAGE2HvJMjW2e0uWZAnCswwUBmBzvTWCQ==","shasum":"bce36963ca1cbaca0faef179bb0dd65cf6ce0e14","tarball":"https://registry.npmjs.org/42grader/-/42grader-2.0.0.tgz","fileCount":3,"unpackedSize":2446,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDZCC6gdo+bbq0P/s7O031eLdm2v0o4WDQgvYqbRjbMbAiBMHMUPPfFj+NVojKjQayZrhTEaQejQMwdRu4hTFkpYQw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjuSMpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpMfA//ZjX9Z5j4dJE+a04NA6dKD9EJL0ixzOZs8p+wQybOOnflh23t\r\nC21KOaZO1LsZUClCGanFOq3MyhzqLkeZIzKZKckqAutZrJ9oCQMQ1OKW6dbA\r\nrrnvMFRhq5dfp2kHjKux2CaMnn4X3epnpskUbfoV6GFQkBMyI9knlrGAK0I4\r\n/JBh/aW0DVO2RKwpy5OJb22W6QxA9hTSL8DRqWPAe/5EZQypPwX0wXbfjQPp\r\n82+qfSBiHntFzOKrV0geS6ThtcLRYe5Ei+SxEzwHonhFpF30wNFEPzuxewHY\r\nR5ILBgC14PavJt5xP7dU+r3cjV9Ulp/BJUdxFrEIIiWCgb2AYjs/REIR6Omj\r\nTEG6hPT/4bDfzmsJknPqA9bxHtxHW2Ib2NyZcZxSJAu4oFcxOZE+1NDlM25z\r\nYyofXzNaBDG4C+zUrwrHt/sIIPn774S+TgAW4rk2Bb6G3MINfZ4vP7BJgf2x\r\nitYk+akUrhTgho/Mp3RYU22pL4qnpS+8I1i7NwtfYr4uPfz5wv+M7XsxWv/6\r\nKqd5HWn7Au2YfCSANRRBCLtNyIrVnJ7nzjTMKwYwDZK8IuMANFgzn6yaOLIL\r\n2dljwxrcPhXlS0iaevhmYDvsqq03pSBdTjdX2tUIoL2XCd7srjalf+0uuwSO\r\nIn3CUbfUO/Hh78FQVD4ebtVBWzEuXC2fMHc=\r\n=46EG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"junsang","email":"mun.js@aol.com"},"directories":{},"maintainers":[{"name":"junsang","email":"mun.js@aol.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/42grader_2.0.0_1673077545426_0.864078643674437"},"_hasShrinkwrap":false},"2.0.1":{"name":"42grader","version":"2.0.1","type":"module","description":"A Grader framework for 42 Piscine","main":"app.js","scripts":{"start":"node app.js"},"bin":{"42grader":"app.js"},"author":{"name":"Junsang Mun"},"license":"AGPL-3.0","dependencies":{"js-yaml":"^4.1.0","prompts":"^2.4.2","shelljs":"^0.8.5"},"gitHead":"78141a48e7ada7aa7ed3773b5877598f613090ca","_id":"42grader@2.0.1","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-iO7KKiLOhhYGV0JfD9/W4eBsbr1bT+CmQQX8EuKrbaGZpOZoPnmiKpVTsb9IkPSladHC58f2tZTBTP0DB3p79g==","shasum":"39e3b332ea495c66a1444381a84ffe8a1aa72d5d","tarball":"https://registry.npmjs.org/42grader/-/42grader-2.0.1.tgz","fileCount":9,"unpackedSize":10739,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEB8TYROb1JuQ7eA93gRnDFU0wSZI+LwBuuajIcjGRjqAiEA1akDvfRAlBRuAB8pxkVGvHSPOrJLrX7OYHigOdrJf4U="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjuS2lACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrm/g/+Ku0adBOG8IJAoP5rXeSQBJcHHCNyIDbjzvsY6cNao10vqNUl\r\nWZIKFL8taaucjLLL1hkJ5IrlARn/GeZ95ndr7lDD9Tc/uY4Hda3Isfx3lOw1\r\nvfi2G7Cg6WdEDJQP8zmXURjWb220DzwtAPf4kXDYbVANOvJPXlGzZ5Kwot4J\r\nl+yyAK9c68T9hL5IlDBGYKy11xRB5Jw/cpy2YS5CAc/F6siblRTLD4KKI/8a\r\nLHubxlaE3d/VEqGZJjCkqXQhU2VFiGKShiDmXxUajnS0m8Jfc7ovm/fwHUk4\r\nKxbS+TNVOXrL9Mvg67mW4IYcKpHk1fCZAFxeNO/cE8zoSuo3OHn2wCw0Z+WP\r\nNTbGjQTQ/NxL08xhqe1UYOKPgr7n9+L1sSZQ6Vp3xRYH6ewX91FSumTn4le0\r\nRstsg6xd/zzSPJE0n+yZ0C0dgAzec7OfXb/kJOuM4U51au7Wjw0/wyvVBqpY\r\nXx8djppjakG7/evj9hxloR49OZyugDn7qfJlGEO/zmSYlLr8ySSzA+qlvv9O\r\nc+EjZW4P4XNBdFqhgD9QWRUWrNwA3ambakYIzvTJenUBBj/VN8gB+xXfgurX\r\nRKG7iXFvQ4E79EH196/NE5ZsaH4WmDt5zQRDl5ol5/GSNWFey8dI1HiTVXnw\r\nfEQGnXj9VVUA1D0CWjMmoYrpSxCP/0FcGY0=\r\n=6pP+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"junsang","email":"mun.js@aol.com"},"directories":{},"maintainers":[{"name":"junsang","email":"mun.js@aol.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/42grader_2.0.1_1673080229199_0.29661840062463773"},"_hasShrinkwrap":false},"2.0.2":{"name":"42grader","version":"2.0.2","type":"module","description":"A Grader framework for 42 Piscine","main":"app.js","scripts":{"start":"node app.js"},"bin":{"42grader":"app.js"},"author":{"name":"Junsang Mun"},"license":"AGPL-3.0","dependencies":{"js-yaml":"^4.1.0","prompts":"^2.4.2","shelljs":"^0.8.5"},"gitHead":"58561bebeed2d13d520bfffb539ff380c7b02522","_id":"42grader@2.0.2","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-v0j67OfQ61YSvGSlEZIfN1+52bc+UtZgGopTYuRFn9J1FTqxGqB60PA3h9Ed+5Zhg2C4jcvvMGD6Tt8txXpH6A==","shasum":"4d74fd7a1df8a3dee19bfa4e045c4f0446f883c2","tarball":"https://registry.npmjs.org/42grader/-/42grader-2.0.2.tgz","fileCount":9,"unpackedSize":13825,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGX/DA7+kiwpCj4rJK4mCTQVMnmv50KIBpL4+34ze3xxAiBqMqsQF7rGqaH55p9DbaIJ/EiCR7i0uEifGjWFutp4VA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjuS9FACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoCDQ/9HEBKw455f+8CNqFjKBZYNIfOYXXp91sPM00y8mV6yhszYU3h\r\nrrMo+3184Jv/kUJjxIlACRI+8dqkkG1cFiHSNnMv0YC2clS1mzF/Di6zDZhJ\r\n+J0+e6m902geJTqZbrCWLskfMBzpN0XjmAxNbRx8IK8bAlyFc2WvuuBzA2kZ\r\n+90+Ras7dxsEj91K70pA71rZ9390SK880/PRA4OXNhygVAMQ5u6VckLFJmDl\r\n2xLP2aEkw6IyfPOKviLPjtWHkB2UPHasQfoXrIIJf/2iXqIAcEr9Pw6J3/4v\r\nSh79+QslhUIiE1O4atYQxtZbOLeYafH2y4qV9B4ZpAwHlq6zPzGaDb/LaJJ8\r\ngwTOxRzRh1ODDrwUMf1KneT7/r1mIahs+GgiL+chZD1yzP7LQnTF/54a2ayI\r\nnycKSB1U8qITD7IAwvuFmFtqv/aLXpxpZBKDcE3MNGaqQEe7aBTD1PrAeDlK\r\n89/0RG86aRABPIKKrheXITogaizGiqlJkFHhLXUzuulwckdxsdCaf7bMxUMZ\r\nLD7mMLMmxS4iAGMkEtoaig2/XhtFpnIWYqBf8oyOMwDLZLvgxI5SJcVRtx/P\r\nIggVfv1fc1DF+Y24QZgDsPqizYDa74XYiEJ8M4WBEjbNQsNmVxU1ho9vomwP\r\nciRmBLUBeGDLzLAY4cx4HPcigJI1eU2ptpw=\r\n=DMZL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"junsang","email":"mun.js@aol.com"},"directories":{},"maintainers":[{"name":"junsang","email":"mun.js@aol.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/42grader_2.0.2_1673080644914_0.8035285036734097"},"_hasShrinkwrap":false},"2.1.0":{"name":"42grader","version":"2.1.0","type":"module","description":"A Grader framework for 42 Piscine","main":"app.js","scripts":{"start":"node app.js"},"bin":{"42grader":"app.js"},"author":{"name":"Junsang Mun"},"license":"AGPL-3.0","dependencies":{"js-yaml":"^4.1.0","prompts":"^2.4.2","shelljs":"^0.8.5"},"gitHead":"ee797422471846afbed7fcd78cc9f0793816d4db","_id":"42grader@2.1.0","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-EVp8YrV0kioUONZSoJ2a2mJFJeTmgvOhn1V5LyQTfE66AR0vJ2cEKT816Yi1mAKBTOkHFGGsj4krr+C46xrEuw==","shasum":"c34fc32e9b17fddaa8fcd2750bcf0cf53630d345","tarball":"https://registry.npmjs.org/42grader/-/42grader-2.1.0.tgz","fileCount":9,"unpackedSize":13507,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyyakxbp2o4tniSUD4XY0R8+uCjMvdWCwUwRLOZjaYCwIhAMwSs+c8T68gGJxawi64zEXT/muB3jwZY5ecKfedg9CB"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjujayACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqXlA/9EVwABdy2Sacag4oBdoVtha3Y0xc84MAFxxhGZaTsdfeKyk01\r\njXJJssDG32LWooXVUF8na/aBFci2Ky+QUKLBgXWfXIx7GT/Kg3Vr0+KGZ/md\r\nGVJWqodLqIeqi9qZ8DmuiAlmwiFuP5AbvtUdRiQaOH9mD/nJrrNyPMYvWkOV\r\n4TSrkCJqsC+Qyx0IBX+HOcKMzipl+u4GyDfFINfLEoscEcRVJbabdRVVFBLl\r\nwjQvqijMlFrfFihtWNPOsKP4T4zqGpUjwc9uUomQybD/jYuZp2c/8Uti5Tvf\r\nIwK3HEjwCpc1EnDoY5SFZKCWXLxJKYaax2hI/iTHRY8tCafqeqHMTrgnyzVT\r\npbsuY/nvCdqQFFQfu1uOX+sfxY+Sfn3KlGAXtPYSHauBPsvlR3XjAm9f7CZ9\r\nx8bQ/ViWBRJMS5FveU8HLgnyDQ+5pkQGDAO4czIftNDCYIXRI6G1nSi9JgkS\r\nrAk8wj2QgHLrl3P2mctjjPzR7CqfqhF9WxpFhQVMPB4B660IC+fD6MJkMeLZ\r\ngmwwQKAFUNyhm2wpXDDgaHo3dhQ9f8lWJ1bzBHaMmPWhF+vufjL+JPfl6tVJ\r\nWt2EgOdmV+60g0Epfak1QsUYTtBW1CG4AfEXUlxbVDUZ3YVzoheM5WusZF6X\r\nNwBX1YW2AIDy7kt/Ac6VWgwcgd3EYzs6w2c=\r\n=8J9Y\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"junsang","email":"mun.js@aol.com"},"directories":{},"maintainers":[{"name":"junsang","email":"mun.js@aol.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/42grader_2.1.0_1673148082507_0.04116023243754818"},"_hasShrinkwrap":false},"2.1.1":{"name":"42grader","version":"2.1.1","type":"module","description":"A Grader framework for 42 Piscine","main":"app.js","scripts":{"start":"node app.js"},"bin":{"42grader":"app.js"},"author":{"name":"Junsang Mun"},"license":"AGPL-3.0","dependencies":{"js-yaml":"^4.1.0","prompts":"^2.4.2","shelljs":"^0.8.5"},"gitHead":"81b50d25a7508c872237a33f1a0417cce8635358","_id":"42grader@2.1.1","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-QQJNLXdW/G1U43pNJwWemwVfVID1msMg638CoJvupFEWxlj7qf8gSZeNY04+pHGFbfzuF8XjsluiGBvoqRxNIA==","shasum":"577389d354d1b5350692b24a1cff0585d76f0fd7","tarball":"https://registry.npmjs.org/42grader/-/42grader-2.1.1.tgz","fileCount":9,"unpackedSize":13557,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBuLC4rdT59fMPA+H4x1jK6T54eKb36GWD4aynTdqWCrAiA1q/AKIiomjnPkwfKlYjRuJ7dN0T4KXbxZmRqD1e5ueA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJju8e+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpFRw//QDuUPT6DZGax+dHLlb9o1p4dblSV5kj77L9DKIPTxAXn9eNs\r\naftSN16j0RqEXqkV0j6A8GmWllyZS1ISG0HwpuUVREiNvjkOiBWVNeiENLt8\r\nNnG/2lIMAzTgdr49g4uWx2pyEA2GXBefvfol10RW87QYW3bgnMfV5vRJjLbd\r\nz/ZarVq4pfxGfhIv9V6EI5FQMFXWv2PZ4cBF4VnF/9BczziIC+lND2eD20wQ\r\nFsz6Am/AuWjYmXnwwCcuc4p5t7WFOBHPp6JezbhnEwm8i3lEez0TieLhKW6V\r\n5+htt5sYo8R44HyIRz0KXZ2iPTUUAGZuOwVpGjYtAeq/69omTXYrPrrJMIsa\r\nwN6fnO2xZTBG/z7msUhEujXp9fv3zM49NdalyElDBnKX7V/A6S0HwUJ3Rl0c\r\n7o0anur9jhLte85F23kCeOvabAmTAzsWfUFaAQOMShDxfMU9j/M9d9IZlz2Y\r\ns0KeYSkv0V6vgB+Wwa1RtdVW8rI7miNWQLdnCXuAQ4aq9AV+Sg1/sy1FW36J\r\n2tWaMOjYJBb4XovC+fvUtOX1ZviqgXgn4mjOCft6HkhqGFojSc94atNzX4Ih\r\nu2AjdtqO1GGXKxjWfJpvaR3MYO6IWFYuKTB2UyBr4UiNJC4E3eG2w01lPvWC\r\nGhYbkPxCG3w0EZtMMuz0M1iqiAcEPaV6w7Y=\r\n=FKF3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"junsang","email":"mun.js@aol.com"},"directories":{},"maintainers":[{"name":"junsang","email":"mun.js@aol.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/42grader_2.1.1_1673250750113_0.42581799811555343"},"_hasShrinkwrap":false}},"maintainers":[{"name":"junsang","email":"mun.js@aol.com"}],"description":"A Grader framework for 42 Piscine","author":{"name":"Junsang Mun"},"license":"AGPL-3.0","readme":"# 42Grader\n\n42 Picsine을 위해 Node.js 런타임과 자바스크립트로 만들어진 채점기\n\n## 목차\n\n1. [설치 가이드](#설치-가이드)\n2. [사용방법](#사용방법)\n\n## 설치 가이드\n\n42grader는 npm 저장소에 업로드되어 있습니다. `npm install` 명령으로 바로 설치할 수 있습니다.\n\n```Shell\nnpm i -g 42grader\n```\n\n<details>\n<summary>with nvm</summary>\n\n### 1. node.js 설치(권장 버전: 18 lts)\n\n```Shell\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash\nnvm install --lts\n```\n\n### 2. npm으로 42grader 설치\n\n```Shell\nnpm i -g 42grader\n```\n\n</details>\n\n<details>\n<summary>root 권한 없이 설치하기</summary>\n\n### 1. node.js 설치(권장 버전: 18 lts)\n\n```Shell\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash\nnvm install --lts\n```\n\n### 2. npm prefix 변경\n\n**이 명령을 실행하기 전에 npm prefix를 변경하는 것이 무엇인지 반드시 이해해야 합니다. 이해하지 못했다면 절대 이 명령을 실행하지 마십시오.**\n\n```Shell\nnpm config set prefix '~/.local/'\necho 'export PATH=~/.local/bin/:$PATH' >> ~/.zshrc\nzsh\n```\n\n### 3. npm으로 42grader 설치\n\n```Shell\nnpm i -g 42grader\n```\n\n</details>\n\n## 사용방법\n\n`42grader` 명령으로 바로 실행할 수 있습니다.\n\n### 폴더 구조\n\n`42Grader`는 `~/.42Grader` 폴더를 사용합니다.\n\n```\n~/.42Grader/\n├─ submission/\n│  └─ (cloned git files)\n└─ test/\n   └─ tester files\n```\n\nclone git from remote 옵션에 `no`를 선택한 경우 submissions 폴더 및 내용이 반드시 존재해야 합니다.\n\nrun test 옵션에 `yes`를 선택한 경우 test 폴더 및 테스터 파일이 반드시 필요합니다.\n\n### 테스터 파일\n\n테스터 파일은 yaml 포맷을 가지고 있어야 합니다.\n\n- `directory` 필드에 폴더명을 입력하고,\n- Pdf의 `Files to turn in` 섹션에 적힌 파일명을 `file` 필드에 입력하세요.\n- 또한 pdf에 적힌 것과 동일한 함수 원형을 `function` 필드에 입력하세요.\n- `testcase` 필드에는 main.c 파일에 들어갈 C 코드를 작성합니다. main.c는 `stdio.h`, `stdlib.h`, `string.h` 및 `unistd.h`를 포함하고 있습니다.\n- 모든 `answer` 필드의 정답은 마지막 개행 하나를 제거한 후 diff합니다. 만약 정답에 개행이 필요한 경우 `\\n` 혹은 진짜 `newline` 하나를 삽입하세요.\n\n예시 테스터 파일입니다.\n\n```yaml\ntest:\n  - directory: ex00\n    file: ft_putchar.c\n    function: void\tft_putchar(char c);\n    testcase: |\n      ft_putchar('a');\n      ft_putchar('b');\n    answer: |\n      ab\n  - directory: ex01\n    file: ft_print_alphabet.c\n    function: void\tft_print_alphabet(void);\n    testcase: |\n      ft_print_alphabet();\n    answer: |\n      abcdefghijklmnopqrstuvwxyz\n  - directory: ex02\n    file: ft_print_reverse_alphabet.c\n    function: void\tft_print_reverse_alphabet(void);\n    testcase: |\n      ft_print_reverse_alphabet();\n    answer: |\n      zyxwvutsrqponmlkjihgfedcba\n```\n\n## About\n\n`./grader v1` 폴더 안에 있는 42grader v1은 사용하지 마세요. MVP를 위해 C로 급조한 테스터기입니다. 안전/안정성을 보장하지 못합니다.\n\n본 프로그램은 자유 소프트웨어입니다. Free Software Foundation에 의해 배포된 GNU Affero General Public License v3 혹은 이후의 버전 하에 본 프로그램을 배포하거나 수정할 수 있습니다.\n","readmeFilename":"README.ko.md"}