From 51c9fb25adb74b513d846c2b21812a7dc87649d8 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 121fa2616..7e19daac6 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 ea3acb27c..4576acc62 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 77e90e950..93e28930d 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)