notes ----- - implement string parsing \n \r \t \\ \" let mut evaluated = String::new(); let mut escape = false; for c in contents.chars() { if escape { match c { 'n' => evaluated.push('\n'), 'r' => evaluated.push('\r'), 't' => evaluated.push('\t'), '\\' => evaluated.push('\\'), '"' => evaluated.push('"'), other => panic!("bad escape sequence: {}", other), } } else if c == '\\' { escape = true; } else { evaluated.push(c); } } if escape { } evaluated - integration testing . run app with command line options and test output . exercise all features and all command line options . test that first recipe runs by default - underline problem token in error messages - add context to unexpected_token error "while parsing a recipe" "while parsing an expression" - figure out argument passing: . flag: j build --set a=hello . by export: A=HELLO j build . by export 2: BUILD.A=HELLO j build . by name: j build a=hello . by position: j build hello . with marker: j build hello : clean hello : . after -- : j build -- foo baz . fast errors when arguments are missing . could also allow this to override variables although maybe only after a '--': j build -- a=hello . sub arguments into recipes - before release: - rewrite grammar.txt - 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 . 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 - try to get some users . facebook friends . irc . r/rust enhancements: - add post requirements: # do c then a then b a: c b~ - 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 . get all directories, if more than one, fork just for each - allow setting and exporting environment variables - indentation or slash for line continuation