Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support --config with Config File #15

Closed
Qiwen-Yu opened this issue Oct 8, 2021 · 0 comments
Closed

Support --config with Config File #15

Qiwen-Yu opened this issue Oct 8, 2021 · 0 comments

Comments

@Qiwen-Yu
Copy link
Contributor

Qiwen-Yu commented Oct 8, 2021

Description

Users want to be able to specify all of their SSG options in a JSON formatted configuration file instead of having to pass them all as command line arguments every time. For example, consider the following config file, ./ssg-config.json:

{
  "input": "./site",
  "output": "./build",
  "stylesheet": "https://cdn.jsdelivr.net/npm/water.css@2/out/water.css",
  "lang": "fr"
}

A user could run the SSG by doing either of the following:

# Option 1: use command line arguments:
ssg --input ./site --output ./build --stylesheet https://cdn.jsdelivr.net/npm/water.css@2/out/water.css --lang fr

# Option 2: use a config file
ssg --config ./ssg-config.json

The config file option means we can have a much shorter command, and instead store our options in a file.

Requirements

  1. The -c or --config flags accept a file path to a JSON config file.
  2. If the file is missing, or can't be parsed as JSON, exit with an appropriate error message.
  3. If the -c or --config option is provided, ignore all other options (i.e., a config file overrides other options on the command line).
  4. The program should ignore any options in the config file it doesn't recognize. For example, if the SSG doesn't support stylesheets, ignore a stylesheet property.
  5. If the config file is missing any options, assume the usual defaults. For example, use dist/ as the output directory if it isn't specified.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants