ratfactor/ziglings

How do you prevent ziglings from running previously solved exercises?

davidscholberg opened this issue · 4 comments

Every time I run zig build, the previously solved exercises are all compiled and checked as well as the current one. This was fine at first, but now that I'm on exercise 22, the output is getting quite cluttered and the compile time is becoming noticeable.

I had a look at the readme and tried to run zig build -Dn=22 start and got the following output:

no step named 'start'. Access the help menu with 'zig build -h'
error: the following build command failed with exit code 1:
C:\Users\dhscholb\src\git\ziglings\zig-cache\o\4cb658a5bed91aa4d15dc89b35fbe827\build.exe C:\Users\dhscholb\Documents\Standalone Executables\zig-current\zig.exe C:\Users\dhscholb\src\git\ziglings C:\Users\dhscholb\src\git\ziglings\zig-cache C:\Users\dhscholb\AppData\Local\zig -Dn=22 start

Running zig build -l yields:

  ziglings (default)           Check all ziglings
  test                         Run all the tests
  test-cli                     Test the command line interface

Is there still a way to prevent previously solved exercises from being compiled and checked other than specifying each exercise number manually?

zig version: 0.12.0-dev.152+411462e1c
ziglings version: 1e9124b333310b982236d86e2928bbd44f93634e
os: windows 11

Just run zig build -Dn=22 for a single exercise and increase the number after finishing. I'll have to take a look into why start doesn't work.

@chrboesch start step is no longer available but there is still a reference in the README file.

Is there still a way to prevent previously solved exercises from being compiled and checked other than specifying each exercise number manually?

zig version: 0.12.0-dev.152+411462e1c ziglings version: 1e9124b333310b982236d86e2928bbd44f93634e os: windows 11

Unfortunately it is not easy to implement, since the Zig build file is declarative.
In a local branch I have a draft implementation (using the build cache), but it has several problems.

For anyone that wants a more automated solution, you can use this nushell script. You can save it as runner.nu in the root of the ziglings directory, and then run it like so: nu runner.nu 5 10. This will run exercises 5 through 10.

# Change to the path of your dev zig executable
let zig_path = "~/Downloads/zig-dev/zig"

def main [start: int, end: int] {
    print $"Running ziglings exercises from ($start) to ($end)"
    let rng = $start..$end;
    for i in $rng {
        ^$zig_path build $"-Dn=($i)"
    }
}