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