Age | Commit message (Collapse) | Author |
|
Add the Mode enum, so that ZiglingStep can detect if it was called in
normal mode or in named mode.
Update the help method to print the correct message based on the current
build mode.
|
|
Remove the `Exercise.addExecutable` method and the `SkipStep` struct, since
they are no longer used.
|
|
When running `zig build -Dn=n`, ensure that the logo is printed.
Update the tests.
Closes #214
|
|
Remove the following steps, since they are rarely (if never) used and
only increase the complexity of the `build.zig` file:
- install step (zig build -Dn=n install)
- test step (zig build -Dn=n test)
- start step (zig build -Dn=n start)
The only remaining step is the default zigling step (zig build -Dn=n),
where the user can choose the exercise to solve.
Update the tests. Additionally, update CheckNamedStep and CheckStep so
that they can share the same functions.
Closes #299
|
|
Removing the install step will simplify the current code.
Copying the exercise executable to the zig-out directory can be done in
`ZiglingStep.
Closes #298
|
|
The special eowyn mode was added in order to improve the performance of
the Eowyn Github workflow.
Remove it, since it adds unnecessary complexity to the `build.zig` file.
Closes #297
|
|
|
|
|
|
Commit dbd42bb (Cleaning up zig build output) broke the unit test.
Always use exit code 2, instead of 0. This is the exit code used by the
build runner to notify the compiler to not report any further
diagnostics.
Move the Ziglings logo from the `build` function scope to the global
scope, and make it public so that tests.zig can use it to find the
number of lines to skip, instead of using an hard coded value.
Fixes #295
|
|
Use fs.path.sep_str instead of a slash, in literal paths.
|
|
Avoid too long lines or too many line breaks.
|
|
Use it in Zigling.compile, in order to reduce code duplication.
|
|
Some functions and custom build steps incorrectly used a normal comment.
Use a doc-comment instead.
Additionally, use a present tense verb to describe the action of a
function or custom build step.
|
|
Instead of marking a parameter as unused inside the function body.
|
|
Update PrintStep and SkipStep to use the `self` variable when getting
the parent pointer from Step.
This convention is used in `std.Build`.
|
|
Update the code in `zig build install` and `zig build -Dn=n install`, so
that exercises that must be skipped are not installed, since it will
cause an error. Ensure that a skip message is printed.
|
|
The command fails because the path to the exercises directory was
incorrectly set to "exercises" instead of `work_path`.
The bug was introduced in commit b56bb7b
(build: enable full parallelism when -Dhealed is set).
Remove the comment about not using multi-object loop, since it is
confusing.
|
|
|
|
* Only show actual Zig compiler errors, not build internals to
confused and dismay.
* Remove advanced usage instructions not needed in normal
operation.
|
|
|
|
|
|
|
|
|
|
Replace the file_path variable with path.
|
|
Update the output and hint fields in the `exercises` slice to use a
multiline string literal when the string have multiple lines or use the
`"` character. This will greatly improve readability.
Additionally, remove the trailing whitespace on each line and check it
in the validate_exercises function.
Update the output comparison logic in ZiglingStep, since the current
code assumes that the string has only one line.
Update test/tests.zig to use the new `CheckNamedStep` in test case 1,
since RunStep.StdIo.Check is no longer able to correctly check the
output.
Fixes #283
|
|
|
|
Use `orelse unreachable` instead, in order to simplify the code.
Fix doc-comments in the Exercise type.
|
|
Use an optional type, instead of an empty string, since it is more
idiomatic.
|
|
This is necessary in the unit tests, to ensure each test case use a
different exercises directory.
Update test/tests.zig to use the new healed-path option, ensuring that
each temp directory is removed.
In test case 3, 4 and 5, move case_step as the first step in the
dependency chain. This will improve the build summary tree.
In test case 5, remove the dependency to heal_step, since it is not
necessary.
|
|
|
|
Also created a simple exercise '102_testing' to test the new flag.
After the new build system is ready, we skip the exercise in the flow to finish the actual testing exercise.
|
|
- Use an anonymous struct when initializing std.Build.Step.
- Rename the builder parameter in the create method to b
- Avoid lines too long
Additionally:
- In the run method, rename output to raw_output in order to make the
next variable names shorter.
- In the compile method, rename zig_file to path.
|
|
The code in ZiglingStep copied the error handling used in std.Build in
the past.
Use @panic("OOM") when the error is caused by the allocator failing to
allocate memory.
|
|
Make the error message consistent with the one in std.Build.RunStep,
using the "=" character instead of "-" and correctly aligning the text.
|
|
Use ZiglingStep, instead.
This is consistent with the coding style in std.Build.
|
|
It is not necessary, since the builder is available in self.step.owner.
|
|
Update the run method to use Child.exec, instead of Child.spawn followed
by Child.wait.
This simplifies the code.
|
|
When handling the error from the eval method, some possible errors are
ignored. The make method will only print the exercise hint and the
help message.
Print the unexpected error message, in the else prong.
Note that FileNotFound can also be considered unexpected.
|
|
Rename the doCompile method to compile and add the run method.
The two methods are now called from the make method.
Add the help method, since the error handling of compile and run methods
are now separate.
Remove the obsolete comment for the compile method.
|
|
Heal only in test
|
|
Also gave a shot at explaining data-oriented design, a Zig "hot
topic" ever since the red Hawaiian shirt talk(s).
|
|
|
|
|
|
|
|
When running `zig build -Dn=n`, the install and uninstall steps where
overridden in order to improve the description.
In recent version of Zig this is no longer allowed.
|
|
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.
|
|
Currently addExecutable is called 3 times, unnecessarily making the code
more complex.
The method takes as argument the path to the exercises directory.
Additionally, use the new std.Build.ExecutableOptions.link_libc field.
The new field was added in ziglang/zig@adc9b77d5f on 2023-04-13.
Update the required Zig compiler version.
Note that I added the **current** zig version to the changelog, since
the reason for the change is known only to the person updating the
version.
|
|
The name "C" does not follow the naming conventions for container
fields.
|
|
Currently, the code for defining the path to the exercises directory is
duplicate 4 times.
Add the constants `healed_path` and `work_path`, and use work_path
instead of the duplicated if expression. Update ZiglingStep to take
`work_path` instead of `use_healed` as argument.
Reduce code length by using `join` instead of `std.fs.path.join` and
replace the use of a slice with a tuple.
Additionally, in case of an error from the `join` function, use @panic
instead of unreachable.
Document why the special branch, when the exercises are healed by the
eowyn script, has been disabled.
|
|
The stage1 C++ compiler is gone forever.
Remove the custom support and documentation for the old stage1 compiler
in build.zig and README.md.
|