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

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

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