mirror of
https://codeberg.org/ziglings/exercises.git
synced 2026-06-08 07:50:00 +00:00
build: rename Exercise.baseName to name
The name "baseName" is confusing, since it refers to the UNIX basename command, and not to the basename function in some programming languages including Zig. Use the std.fs.path.stem function to remove the file extension, instead of slicing. Remove the use of the assertion, since it is no longer necessary. Instead, add a check to ensure that the exercise must be a Zig source file in the validate_exercises function. Update the validate_exercises function to check the last exercise, too.
This commit is contained in:
20
build.zig
20
build.zig
@@ -39,9 +39,8 @@ pub const Exercise = struct {
|
||||
skip: bool = false,
|
||||
|
||||
/// Returns the name of the main file with .zig stripped.
|
||||
pub fn baseName(self: Exercise) []const u8 {
|
||||
assert(std.mem.endsWith(u8, self.main_file, ".zig"));
|
||||
return self.main_file[0 .. self.main_file.len - 4];
|
||||
pub fn name(self: Exercise) []const u8 {
|
||||
return std.fs.path.stem(self.main_file);
|
||||
}
|
||||
|
||||
/// Returns the key of the main file, the string before the '_' with
|
||||
@@ -68,7 +67,7 @@ pub const Exercise = struct {
|
||||
@panic("OOM");
|
||||
|
||||
return b.addExecutable(.{
|
||||
.name = self.baseName(),
|
||||
.name = self.name(),
|
||||
.root_source_file = .{ .path = file_path },
|
||||
.link_libc = self.link_libc,
|
||||
});
|
||||
@@ -598,9 +597,12 @@ fn validate_exercises() bool {
|
||||
// Don't use the "multi-object for loop" syntax, in order to avoid a syntax
|
||||
// error with old Zig compilers.
|
||||
var i: usize = 0;
|
||||
for (exercises[0 .. exercises.len - 1]) |ex| {
|
||||
for (exercises[0..]) |ex| {
|
||||
const exno = ex.number();
|
||||
const last = 999;
|
||||
i += 1;
|
||||
if (ex.number() != i) {
|
||||
|
||||
if (exno != i and exno != last) {
|
||||
print("exercise {s} has an incorrect number: expected {}, got {s}\n", .{
|
||||
ex.main_file,
|
||||
i,
|
||||
@@ -618,6 +620,12 @@ fn validate_exercises() bool {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!std.mem.endsWith(u8, ex.main_file, ".zig")) {
|
||||
print("exercise {s} is not a zig source file\n", .{ex.main_file});
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user