Challenge Overview
Challenge objective
-
Fix bugs in Topcoder CLI, implement new features and enhance tests
Project background
-
Topcoder is creating a command line tool to help members interact with Topcoder platform for various use cases like submitting the current directory to a challenge, retrieving submissions and artifacts etc...
Technology Stack
-
Node.js 10.x
-
Javascript
Challenge Assets
-
Source code of existing Topcoder CLI tool can be found here. Please refer to the latest commit in develop branch
-
Auth0 credentials for implementing M2M support is shared in the challenge forum which will be accessible after registration
-
User credentials to access development environment is shared in the challenge forum as well
Individual Requirements
Complete M2M support
-
In the CLI, there is a service to do M2M Authentication but it is not integrated with `submit` command yet and it needs to be integrated with the commands which we will be implementing as well.
-
Right now, submit command can be executed only with user credentials, we should be able to submit using M2M credentials as well provided that `memberId` parameter is passed via .topcoderrc file or as a CLI parameter
-
You could use any challenge in dev environment to make a submission
Support to Fetch Submissions
-
Please refer https://github.com/topcoder-platform/topcoder-cli/issues/21
-
Command to fetch submissions will be executed as `topcoder fetch-submissions`
-
Option `--latest` will be used to fetch only the latest submission of each member
-
Option `--userId` will be used to fetch only the submission of that particular user id
-
Option `--challengeId` will specify from which challenge we will need to fetch the submission
-
Authentication related options like username, password, m2m should be copied here similar to submit command
-
Create a directory `${challengeId}-submissions` and download each submission within that directory
Support to fetch submission artifacts
-
Please refer https://github.com/topcoder-platform/topcoder-cli/issues/22
-
Command to fetch submissions will be executed as `topcoder fetch-artifacts`
-
Authentication related options like username, password, m2m should be copied here similar to submit command
-
Create a directory `submission-${submissionId}-artifacts` and download the artifacts within it.
Code refactoring
-
Refactor the authentication functions in such a way that every command which need to do user / M2M authentication can use it. E.g. Getting the instance of Submission Api client based on the credentials (User / M2M) should be moved to a common function so that every function relying on Submission Api client instance can directly invoke it to get the instance and start the action
-
Every function in the JS file (except tests for now) should have comments following JSDOC style
-
Helper file should have functions only which is used across multiple services / commands. If it’s not used in multiple functions, please move it to the appropriate service or command file.
Important Notes:
-
Submission, Review, Appeals timeline for this challenge shorter than usual. Please pay attention to the shortened timelines
-
Please ensure that there are no lint errors
-
If you have any doubts, Please feel free to post it in the forum. We will be happy to resolve your queries as soon as possible.
Final Submission Guidelines
-
Create a git patch file against the latest commit in `develop` branch. Please prepare git patch file using git CLI only. Please make sure to test your patch file before submitting.
-
Create a Validation document using any format like Word, Markdown, txt file
-
Zip the patch file and Validation document and submit the zip file using the Submit link
-
After submitting, please ensure that you are able to download your submission from Online Review