ratfactor / ziglings

Learn the Zig programming language by fixing tiny broken programs.
MIT License
4.29k stars 485 forks source link

How do you prevent ziglings from running previously solved exercises? #355

Closed davidscholberg closed 1 year ago

davidscholberg commented 1 year ago

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

chrboesch commented 1 year ago

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.

perillo commented 1 year ago

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

perillo commented 1 year ago

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.

avi-cenna commented 12 months ago

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)"
    }
}