mirror of
https://codeberg.org/ziglings/exercises.git
synced 2024-12-26 01:20:30 +00:00
Merge pull request 'Add build parameter to start at a specific exercise' (#140) from mythmon/ziglings-exercises:build-start-from into main
Reviewed-on: https://codeberg.org/ziglings/exercises/pulls/140
This commit is contained in:
commit
e2f356d95c
2 changed files with 28 additions and 1 deletions
|
@ -69,7 +69,7 @@ reading these.
|
||||||
## A Note About Versions
|
## A Note About Versions
|
||||||
|
|
||||||
**Hint:** To check out Ziglings for a stable release of Zig, you can use
|
**Hint:** To check out Ziglings for a stable release of Zig, you can use
|
||||||
the appropriate tag.
|
the appropriate tag.
|
||||||
|
|
||||||
The Zig language is under very active development. In order to be
|
The Zig language is under very active development. In order to be
|
||||||
current, Ziglings tracks **development** builds of the Zig
|
current, Ziglings tracks **development** builds of the Zig
|
||||||
|
@ -128,6 +128,12 @@ It can be handy to check just a single exercise:
|
||||||
zig build -Dn=19
|
zig build -Dn=19
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Or run all exercises, starting from a specific one:
|
||||||
|
|
||||||
|
```
|
||||||
|
zig build -Ds=27
|
||||||
|
```
|
||||||
|
|
||||||
Or let Ziglings pick an exercise for you:
|
Or let Ziglings pick an exercise for you:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
21
build.zig
21
build.zig
|
@ -161,6 +161,7 @@ pub fn build(b: *Build) !void {
|
||||||
const override_healed_path = b.option([]const u8, "healed-path", "Override healed path");
|
const override_healed_path = b.option([]const u8, "healed-path", "Override healed path");
|
||||||
const exno: ?usize = b.option(usize, "n", "Select exercise");
|
const exno: ?usize = b.option(usize, "n", "Select exercise");
|
||||||
const rand: ?bool = b.option(bool, "random", "Select random exercise");
|
const rand: ?bool = b.option(bool, "random", "Select random exercise");
|
||||||
|
const start: ?usize = b.option(usize, "s", "Start at exercise");
|
||||||
|
|
||||||
const sep = std.fs.path.sep_str;
|
const sep = std.fs.path.sep_str;
|
||||||
const healed_path = if (override_healed_path) |path|
|
const healed_path = if (override_healed_path) |path|
|
||||||
|
@ -221,6 +222,26 @@ pub fn build(b: *Build) !void {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (start) |s| {
|
||||||
|
if (s == 0 or s > exercises.len - 1) {
|
||||||
|
print("unknown exercise number: {}\n", .{s});
|
||||||
|
std.process.exit(2);
|
||||||
|
}
|
||||||
|
const first = exercises[s - 1];
|
||||||
|
const ziglings_step = b.step("ziglings", b.fmt("Check ziglings starting with {s}", .{first.main_file}));
|
||||||
|
b.default_step = ziglings_step;
|
||||||
|
|
||||||
|
var prev_step = &header_step.step;
|
||||||
|
for (exercises[(s - 1)..]) |ex| {
|
||||||
|
const verify_stepn = ZiglingStep.create(b, ex, work_path, .normal);
|
||||||
|
verify_stepn.step.dependOn(prev_step);
|
||||||
|
|
||||||
|
prev_step = &verify_stepn.step;
|
||||||
|
}
|
||||||
|
ziglings_step.dependOn(prev_step);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Normal build mode: verifies all exercises according to the recommended
|
// Normal build mode: verifies all exercises according to the recommended
|
||||||
// order.
|
// order.
|
||||||
const ziglings_step = b.step("ziglings", "Check all ziglings");
|
const ziglings_step = b.step("ziglings", "Check all ziglings");
|
||||||
|
|
Loading…
Reference in a new issue