alecthomas / bit Goto Github PK
View Code? Open in Web Editor NEWBit - A simple yet powerful build tool
Bit - A simple yet powerful build tool
Given a rule like:
build/%{1}: cmd/*
inputs: **/*.go
build: go build -o %{OUT} -o build/%{1}
If a cmd
is removed or renamed between builds, the build
directory will contain stale outputs. The Bit database could be used to track this . This should be relatively straightforward, in that we could populate a variable with a list of files that have been removed from the build since the last run.
eg.
build/%{1}: cmd/*
inputs: **/*.go
build:
for stale in %{STALE}; do [[ $stale == build/* ]] && rm $stale; done
go build -o %{OUT} -o build/%{1}
Shake has the concept of "pruning", which could be useful inspiration.
eg.
virtual hello:
build:
#!/usr/bin/env python3
print("Hello, world!")
eg. if we have something like:
dist/index.html: html/**/*.html
build: build-index
If build-index
generates a .html
file under html/
then the targets inputs will be altered, resulting in the target being immediately invalidated.
Instead of this weird failure mode, bit should re-expand the globs, compare them to the old set, and error if they differ.
panic: /Users/alec/dev/ftl/Bitfile:69:8: branch (<ws> | ~(<nl> | <dedent>))* was accepted but did not progress the lexer at /Users/alec/dev/ftl/Bitfile:69:8 ("\n")
This results in targets that should be out of date, being marked as up to date.
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
.github/workflows/ci.yml
actions/checkout v4
cashapp/activate-hermit v1
actions/checkout v4
cashapp/activate-hermit v1
actions/checkout v4
cashapp/activate-hermit v1
.github/workflows/release.yml
actions/checkout v4
cashapp/activate-hermit v1
go.mod
go 1.22.2
github.com/alecthomas/assert/v2 v2.8.1
github.com/alecthomas/atomic v0.1.0-alpha2
github.com/alecthomas/kong v0.9.0
github.com/alecthomas/participle/v2 v2.1.1
github.com/alecthomas/repr v0.4.0
github.com/bmatcuk/doublestar/v4 v4.6.1
github.com/creack/pty v1.1.21
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51@95032a82bc51
github.com/lithammer/dedent v1.1.0
github.com/mattn/go-isatty v0.0.20
golang.design/x/reflect v0.0.0-20220504060917-02c43be63f3b@02c43be63f3b
github.com/alecthomas/types v0.13.0
golang.org/x/term v0.19.0
bin/hermit
enumer 1.5.9
go 1.22.2
go-check-sumtype 0.1.4
goreleaser 1.25.1
just 1.25.2
svu 1.12.0
watchexec 1.25.1
Given the .gitignore file:
.build/
If this directory exists in Git, and is explicitly specified in a glob like so:
backend/template/.build/**/*
Bit will not expand this glob.
Currently the only way to exclude files from a pattern is to use .gitignore
, which is obviously not ideal.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.