Challenge Overview
Challenge Objectives
-
To upload the current workspace as a submission to a Topcoder contest
-
Update tests to use nock
Project Background
-
Topcoder is aiming to create an extension in Visual Studio Code and package in Atom
-
The extension / package is meant to closely integrate the Topcoder platform with the text editors, to allow the user to perform actions from within the editor, without having to open a browser.
Technology Stack
-
Javascript / Nodejs
Code access
You can find the code here. Use the develop branch as your base branch.
Individual requirements
To upload the current workspace as a submission to a Topcoder contest (Major Requirement)
-
Assume each workspace will have a .topcoderrc file. This file will contain json. At the moment, the only key this file will have is “challengeId”. The value of this key will be the Topcoder challenge id (Look at the url for this contest - it should be https://www.topcoder.com/challenges/${a_number}. The number here is the challenge id.
-
Once the user has completed their code changes and they wish to submit for the contest, they will invoke the “Topcoder: Upload submission” command, which you will create as part of this contest.
-
This command will zip the current workspace and upload it to Topcoder, for the challenge with the id specified in the .topcoderrc file.
-
The command should NOT zip the files specified in the .gitignore file present in the workspace, if any.
-
If the .topcoderrc file is itself not in the .gitignore file, then it will be part of the archive.
-
If the user has not configured the .topcoderrc file and they try to invoke the “Topcoder: Upload submission” command, display a message informing the user that “No .topcoderrc file detected in the current workspace”.
-
If the user is not logged in to Topcoder, the command will automatically log the user in, before carrying out the upload action.
-
Note that the command can be invoked from any sub folder too. The command needs to zip the current workspace and not the sub folder from where the command was invoked.
-
The behaviour will be similar to the vscode extension. In case of any doubts, you can refer to it.
Update tests to use nock (Major Requirement)
-
Update our existing tests to use nock
-
This means that users will no longer have to export their username and password or set the test configuration with the topcoder credentials.
Validate the challenge id (Minor Requirement)
-
For the above requirement to allow users to upload the current workspace to a contest as a submission, they need to specify the topcoder challenge id in a .topcoderrc file. Before we proceed to upload the submission, check if the challenge id is valid. Validity here refers to the challenge existing and the submission phase of the challenge still being open. Additionally, verify that the user has registered for the contest. If any of these conditions fail, respond with the corresponding error message in the notification
Deployment guide and validation document
Keep the deployment guide up to date, based on the changes carried out for this contest. No validation document is expected.
Important Notes
-
After you carry out your changes, the commands that will exist will be:
-
Topcoder: Login
-
Topcoder: View open challenges
-
Topcoder: Logout
-
Topcoder: Upload Submission
-
The feature to view a challenge’s details is only by first viewing open challenges and then clicking on a challenge name to view its details (which opens a new tab to display the details)
-
Update / add new tests as applicable for this contest.
Final Submission Guidelines
Kindly upload a git patch of your changes. Please ensure that the patch can be applied using the git apply patch command on the develop branch.