DEV Community

Avelyn Hyunjeong Choi
Avelyn Hyunjeong Choi

Posted on • Edited 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');

...
program
...
  .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) {
                      console.log(err.message);
                      return process.exit(-1);
                 }
              }));
          } else {
             processFile(input, options);
          }
     } catch (err) {
        console.log(err.message);
        return process.exit(-1);
     }

function onError(err) {
    console.error(err.message);
    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 https://github.com/abc123/til_tracker.git

You will now see the two remotes as below.

$ git remote -v                                                                                                                                                        
origin  https://github.com/avelynhc/til_tracker.git (fetch)
origin  https://github.com/avelynhc/til_tracker.git (push)
abc123        https://github.com/abc123/til_tracker.git (fetch)
abc123        https://github.com/abc123/til_tracker.git (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

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay