From 47ce56b6abdc96727dcd979c6f8f7910241bf8ad Mon Sep 17 00:00:00 2001 From: ee7 <45465154+ee7@users.noreply.github.com> Date: Fri, 23 Oct 2020 16:40:01 +0200 Subject: [PATCH] cli: add `--track-dir` option With this commit, we can now establish a beginning state by specifying: - a track directory - a problem-specifications directory - the offline mode This allows us to do black-box testing of the release binary, running something like: configlet -t /tmp/python -p /tmp/my_prob_specs --offline and then asserting that the changes made are as expected. Closes: #50 --- README.md | 1 + src/cli.nim | 6 ++++++ src/sync/tracks.nim | 6 +++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 121fa261..7e19daac 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Options for uuid: Global options: -h, --help Show this help message and exit --version Show this tool's version information and exit + -t, --track-dir Specify a track directory to use instead of the current directory -v, --verbosity The verbosity of output. Allowed values: q[uiet], n[ormal], d[etailed] ``` diff --git a/src/cli.nim b/src/cli.nim index ea3acb27..4576acc6 100644 --- a/src/cli.nim +++ b/src/cli.nim @@ -35,11 +35,13 @@ type Conf* = object action*: Action + trackDir*: string verbosity*: Verbosity Opt = enum optHelp = "help" optVersion = "version" + optTrackDir = "trackDir" optVerbosity = "verbosity" optSyncExercise = "exercise" optSyncCheck = "check" @@ -110,6 +112,7 @@ func genHelpText: string = for opt in Opt: let paramName = case opt + of optTrackDir: "dir" of optVerbosity: "verbosity" of optSyncExercise: "slug" of optSyncMode: "mode" @@ -127,6 +130,7 @@ func genHelpText: string = const descriptions: array[Opt, string] = [ optHelp: "Show this help message and exit", optVersion: "Show this tool's version information and exit", + optTrackDir: "Specify a track directory to use instead of the current directory", optVerbosity: &"The verbosity of output. {allowedValues(Verbosity)}", optSyncExercise: "Only sync this exercise", optSyncCheck: "Terminates with a non-zero exit code if one or more tests " & @@ -310,6 +314,8 @@ proc handleOption(conf: var Conf; kind: CmdLineKind; key, val: string) = showHelp() of optVersion: showVersion() + of optTrackDir: + setGlobalOpt(trackDir, val) of optVerbosity: setGlobalOpt(verbosity, parseVal[Verbosity](kind, key, val)) else: diff --git a/src/sync/tracks.nim b/src/sync/tracks.nim index 77e90e95..93e28930 100644 --- a/src/sync/tracks.nim +++ b/src/sync/tracks.nim @@ -83,5 +83,9 @@ proc findTrackExercises(repo: TrackRepo, conf: Conf): seq[TrackExercise] = result.add(newTrackExercise(repoExercise)) proc findTrackExercises*(conf: Conf): seq[TrackExercise] = - let trackRepo = newTrackRepo() + let trackRepo = + if conf.trackDir.len > 0: + TrackRepo(dir: conf.trackDir) + else: + newTrackRepo() trackRepo.findTrackExercises(conf)