just/notes
2016-10-29 20:39:21 -07:00

95 lines
3.5 KiB
Plaintext

notes
-----
- deferred evaluation, even though it's good for testing, is a bad idea
i should have a resolve assignments phase which just checks,
an evaluate assignments phase which runs before any recipe
and a evaluate recipe phase that runs when a recipe is run
and produces the evaluated lines
- --debug tests that:
- should consider renaming it to --evaluate if it actually evaluates stuff
- test values of assignments
- test values of interpolations
- remove evaluated_lines field from recipe
- change unknown variable to undefined variable
- save result of commands in variables
. backticks: `echo hello`
. backticks in assignments are evaluated before the first recipe is run
. backticks in recipes are evaluated before that recipe is run
. should i do deferred evaluation for everything and just resolve initially?
. should i merge evaluator into Justfile?
. backtick evaluation returns None initially
. justfile.run() evaluates all backticks in assignments
. should i have a resolve step and an deval step? should they be different code?
. when you run the recipe, then you execute it
. eval shebang recipes all at once, but plain recipes line by line
. we want to avoid executing backticks before we need them
- --debug mode will evaluate everything and print values after assignments and interpolation expressions
- nicely convert a map to option string to a map to string
- set variables from the command line:
. j --set build linux
. j build=linux
- before release:
- where can users get help?
- irc, email, github, mailing list
- rewrite grammar.txt
- start with an example justfile
- then installation instructions
- then a long guide
- make it clear it's beta, mention that, as a command runner
there is probably a higher than normal chance of disaster
- change name back to 'just', suggest j as alias
- change description to "a polyglot command runner"?
- update readme
- document all code, including private stuff
(can this be enforced with a lint?)
#![deny(missing_docs)]
- note that shell is invoked with -cu, explain -c and -u
- document all features with example justfiles
(also make them runnable as tests)
. update tarball dep
. check version string
. clean
. update logs (repetitive git flow)
- full documentation
. talk about why the syntax is so unforgiving
easier to accept a program that you once rejected than to
no longer accept a program or change its meaning
. habit of using clever commands and writing little scripts
. debugging with --debug or --evaluate
. very low friction to write a script (no new file, chmod, add to rcs)
. make list of contributors, include travis
. alias .j='just --justfile ~/.justfile --working-directory ~'
. lay out the structure of the code, mention tests, give tips
for contributing
- vim and emacs syntax hilighting (use makefile syntax hilighting for now)
- make sure there isn't any unused code
- ask users to contribute their justfiles as tests
- try to get some users
. facebook friends
. irc
. r/rust
enhancements:
- use cow strings where we currently use String
- colored error messages
- multi line strings (maybe not in recipe interpolations)
- raw strings with ''
- iteration: {{x for x in y}}
- allow calling recipes in a justfile in a different directory:
. just ../foo # ../justfile:foo
. just xyz/foo # xyz/justfile:foo
. just xyz/ # xyz/justfile:DEFAULT
- allow setting and exporting environment variables
- indentation or slash for line continuation in plain recipes