Update notes

This commit is contained in:
Casey Rodarmor 2016-10-23 17:13:06 -07:00
parent 9059f2d474
commit 8d358faf69

176
notes
View File

@ -1,147 +1,67 @@
notes notes
----- -----
- parse arguments and store in recipe - parse arguments on command line by name:
- parse lines into fragments and store in recipe . j build a=hello
- positional error messages . by position: j build hello
- use clippy . with marker: j a 1 : hello 2 :
- document everything, including internal stuff . could also allow this to override variables
- spam in rust irc chat when done although maybe only after a '--': j build -- a=hello
- parse lines into {{fragments}} and allow argument substitution
- change error messages to underline problem token
- try clippy
- use "kind" instead of class - use "kind" instead of class
- should i use // comments, since that's what's used in rust? - should i use // comments, since that's what's used in rust?
- vim and emacs syntax hilighting - allow calling recipes in a justfile in a different directory:
- gah, maybe I should change it back to 'just' - just ../foo # ../justfile:foo
. makes more sense as a name - just xyz/foo # xyz/justfile:foo
- just xyz/ # xyz/justfile:DEFAULT
- create some kind of group feedback forum:
. email list, reddit
- change name back to 'just'
. suggest j as alias . suggest j as alias
. should see if people are using 'j' - change description to "a polyglot command runner"?
. doesn't conflict with autojmp - document all code, including private stuff
- allow calling recipes in a justfile in a different (can this be enforced with a lint?)
directory: #![deny(missing_docs)]
- ../foo # ../justfile:foo - note that shell is invoked with -cu, explain -c and -u
- xyz/foo # xyz/justfile:foo - document all features with example justfiles
- #![deny(missing_docs)] (also make them runnable as tests)
// error on tab after space . update tarball dep
// error on mixed leading whitespace . check version string
// error on inconsistent leading whitespace
// outer shebang
// strict recipe name checking, be lenient in tokenizing
// but strict in parsing
// duplicate recipe name error
// duplicate dependency error
// differentiate shebang and non-shebang recipe
// resolve each recipe after parsing
j:
- vector of substitutions
point to start, end, and &str which is name of variable
- also add a vector of substitutions
- indent for line continuation
- multiple names for short names are actually kind of nice
- multiple {{}} per line
- single assignment variables
- matched /{{.*?}}.*/ then unmatched /{{.*/
- echo subbed line
- static errors when variables are missing {{}}, even if recipe isn't run
- ignore comment lines
- post to facebook to get beta testers
- j user email list (how to engage users more generally?)
- see if dotbot guy likes it
- advertise on facebook to get users
- get the extracted script and test its structure
- can I add rust docs for the command/binary?
- change name to "a polyglot command runner"
- comment code
- fix docs (note that shell is invoked with -cu, explain -c and -u)
- publish to github and cargo
- spam facebook, reddit
- duplicate argument test
- should duplicate dependency mention recipe?
- get rid of panics
- doc comments on recipes
- in depth usage string with doc comments, args, dependencies
get rid of unused public items
tokenize error returns successfully parsed tokens
tokenize continues after parse error but inserts parse error into token stream
make sure regexes are only compiled once
fix grammar.txt to reflect reality
- create a really long example justfile
. unzip tarball
. update package manager deps
. clean . clean
. update logs (repetitive git flow) . update logs (repetitive git flow)
- full documentation - full documentation
. habit of using clever commands and writing little scripts . habit of using clever commands and writing little scripts
. very low friction to write a script (no new file, chmod, add to rcs) . very low friction to write a script (no new file, chmod, add to rcs)
. make list of contributors, include travis . make list of contributors, include travis
- vim and emacs syntax hilighting (use makefile syntax hilighting for now)
- split up code into modules for easier reading
. parsing
. tokenizing
. executing
- make sure there isn't any unused code
variable setting - try to get some users
variable substitution: {{}} . facebook friends
command line arguments: must be specified in recipe 'a foo bar:' . irc
quote . r/rust
arguments are subbed in with {{variable_name}} later:
doesn't conflict with shell syntax - indentation is line continuation
doesn't conflict with jquery - assignment
conflicts a little bit with rust, but can be overcome . export environment variables
very common in many template languages . no barewords
- static errors when variables are missing {{}}, even if recipe isn't run
different ways of setting arguments:
- go for something like python, so we can use full python at the top level
- go for something like rust, so we can use rust at the top level
- don't do barewords, we need strings anyways, so parse them
- x = 10
- export x = 10
- export x
wishlist:
- ability to export environment variables
polyglot:
- get the extracted script and test its structure
- change name to "a polyglot command runner"
- comment code
- fix docs (note that shell is invoked with -cu)
- publish to github and cargo
- spam facebook, reddit
wishlist:
- preludes: - preludes:
may be nice to allow all recipes in a given langauge to share may be nice to allow all recipes in a given langauge to share
functions, variables, etc. could have a "prelude" recipe functions, variables, etc. could have a "prelude" recipe
which was included as a prefix to other recipes which was included as a prefix to other recipes
- windows support: currently calling 'sh', which won't work on windows - windows support: currently calling 'sh', which won't work on windows
- args can be passed after --, or with some special syntax: the answer will probably be to write a 'sh' clone and to only
a: 1 2 3 : call binaries from cargo
- should also add an annotation for recipes - allow specifying justfile on command line with --justfile/-j
a FOO BAR, export variables FOO and BAR with args and dir with --directory/-d, so i can do:
fail if doesn't get two arguments alias .j='just -j ~/.justfile -d ~'
- indent for line continuation - run recipes asyncronously
- use launch recipes asyncronously
- ~/.justfile:
. is this for non-project specific commands, so that when you
type .j in any directory, it uses it as a justfile?
. or is it for commands which are useful across projects?
- super complex recipe lines:
a: b c # run b and c, then a
b | a: c # run c, then b, and pipe output of b into a
a >> a.log: # run a and append output to a.log
a B C: # a takes B and C as command line args, like j a HELLO BOB
# can enforce at command line
- what is the story for allowing justfiles in subdirectories?
use a different name, like 'subjustfile' or 'jfile'.
recurse up to the justfile, but add recipes in any jfile
that you find along the way. recipes in justfile are accessible,
and run from the justfile dir. recipes in jfile are run from jfile
dir. refuse to run if a recipe in justfile and jfile conflict
- rust is a given, so one option is to write a very simple shell
command parser and use that instead of the system shell. this
would make recipes work across systems with incompatible shells.
additionally, we could also define a mode where it will only call
commands from cargo, which would make recipes work across systems
with incompatible userlands 'rc' or 'cargo cult' is a great name