A Straightforward Build Tool¶
Release v0.6.0. (Installation)
This is a Python project that provides a tool for building software. It is language agnostic and works by allowing a user to specify the build tasks which should be performed, as is true of most build tools. You will need at least v3.9 of Python to run it.
There are two major reasons for writing this. Build tools like ant
and gradle
are plentiful but many are overly bloated. They come with tons of stuff that’s either
unnecessary or overly generalized. They are prone to being convoluted to learn. I
wanted something simple to maintain from a project and development workflow perspective.
Under the simplest circumstances you might not even need a project file with this.
There are plenty of build related things this tool cannot do. If you run across
those, I’m sure one of the others will suit you just fine. This one is really meant
to be standalone or to play well with something simple like make
at the top level
of your build process. It is an attempt to have a straightforward build tool that is
not over-engineered. The KISS principle reigns here.
Tasks support the notion of prerequisite tasks. For example, test
type tasks
usually require a compile
type task to be performed first. Each language is
responsible for providing this information for the tasks it publishes. The user has
the ability to bypass this prerequisite task processing, if desired or necessary.
It’s even possible that a language may make a task available that, in and of itself,
does nothing but by virtue of its prerequisites causes other work to be done. A
build
task, for example, may cause compilation, testing, documentation and
packaging tasks to be performed because they are prerequisites. This type of task
is referred to as a pseudo-task. Obviously, disabling prerequisite processing and
specifying a pseudo-task will accomplish nothing.
The tool also provides first class support for dependency management, the key reason for having any sort of non-trivial build tool in the first place. (Otherwise, a language’s CLI tools are usually fine.) This refers to satisfying the need for libraries, APIs and such that are needed to build a given piece of software, including any libraries those libraries or APIs need. Dependencies are scoped to task names as it is reasonable, say, for a compile task to require fewer dependencies than a package task.
The Builder Tool User’s Guide¶
This part of the documentation covers basic concepts, project structure requirements,
languages and the use of the builder
command line interface.
The Languages Guide¶
This part of the documentation covers each supported language, its configuration and operation within the builder tool.
The Languages Extension Guide¶
This part of the documentation covers what it takes to provide support for a language in the builder tool.
Feel free to Search Page the documentation if you’re looking for something specific.