Improving "Local" Builds
When writing a new piece of software bespoke within Occam, you will want to be able to incrementally build that object as you go. To facilitate that, we have "links" which can link a local directory to an Object. You can interact with a "local" object every way you can interact with a stored object: listing directories and reading files, etc. The difference is that the changes are merely staged within the "local" object.
When you build, the build is also staged. It retains the build task and the prior build data every time you build between commits. Potentially, it also preserves build stage post-commit. There needs to be a separate "from-clean" build button that rejects this stage and rebuilds from a clean room. This requires a UI change in the client to add this button (or a dropdown near the normal "build" button that specifies it.)
Local builds are weird in many ways considering this incremental building and the fact that prior builds are indistinguishable from new builds when they are reusing the same directories. There is no reason to retain past built binaries, etc, since the presumption is they are to be thrown away. So listing the files from an older build should not work and just warn that they have been removed/superceded.
However, the normal builds component commands to query the file listing should work as expected. They just need to not look into the normal build repository storage and rather the linked directory's special build directories under the metadata
heading.
-
Build From Clean Button -
Local Builds are kept in their own directory. -
The builds new
command takes the--from-clean
argument. -
The builds list
reads the directory from the local build directory. -
The builds status
stats the files from the local build directory. -
The builds view
command reads file data from the local build directory. -
The UI for listing builds can read the log and task from the pending local build. -
The UI for a local build updates when the build is no longer pending. -
The UI for the file listing for a local build updates when the build completes. -
The UI reflects and warns about weirdness surrounding local builds.