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)