DEV Community

Avelyn Hyunjeong Choi
Avelyn Hyunjeong Choi

Posted on • Updated on

Process of working on a new feature using remotes

How did the code itself go?
It took a bit of time to figure out how to parse the config.toml file. I decided to use the TOML Parser, which converts TOML to an object. With this, I was able to extract the data from the config file we received from the command line.

With the new feature of supporting the -c and --config options:

  • Users can specify options in a TOML formatted config file without having to pass all of them as command line arguments.
  • If there is no config file or if there's an error during parsing, the program will exit with the corresponding error message.

You can find PR from here.

const toml = require('toml');
const concat = require('concat-stream');
const fs = require('fs');

  .option('-c, --config <d>', 'specify the file path to a TOML-based config file','')
  .action((input, options) => {
     try {
          if(options.config) {
              if(path.extname(options.config)!=='.toml') {
                  throw new Error('Extension of config file should be .toml');
              fs.createReadStream(options.config, 'utf8').on('error', onError).pipe(concat(function(data) {
                 try {
                       const parsedOptions = toml.parse(data);

                         // when config file is missing any option, use the default value
                       parsedOptions.output =  parsedOptions.output || 'til';
                       parsedOptions.stylesheet =  parsedOptions.stylesheet || null;
                       parsedOptions.lang = parsedOptions.lang || 'en-CA';
                       processFile(input, parsedOptions);
                 } catch(err) {
                      return process.exit(-1);
          } else {
             processFile(input, options);
     } catch (err) {
        return process.exit(-1);

function onError(err) {
    console.error('Failed to parse the config file');
    return process.exit(-1);
Enter fullscreen mode Exit fullscreen mode

What did I learn today?
Steps to review and test other's PR via remotes

1.Add a git remote.
$ git remote add <name-of-student> <https://git-url-of-other-student-fork.git>
Example) git remote add abc123

You will now see the two remotes as below.

$ git remote -v                                                                                                                                                        
origin (fetch)
origin (push)
abc123 (fetch)
abc123 (push)
Enter fullscreen mode Exit fullscreen mode

2.Download all the commits and branches of other student in the remote repo to my local repo.
$ git fetch <name-of-student>
Example) git fetch abc123

3.Create a branch pointing to the same commit as the other student's repo and branch. You can use this branch to review and test their work.
$ git checkout -b <branch-name> <name-of-student>/<branch-name>
Example) git checkout -b issue-10 abc123/issue-10

4.If other student pushed another commits and you want to update your local tracking branch, you can do the following.
$ git pull <name-of-student> issue-10
Example) git pull abc123 issue-10

Top comments (0)