Commit Graph

146 Commits

Author SHA1 Message Date
Casey Rodarmor
aefdcea7d0
Gargantuan refactor (#522)
- Instead of changing the current directory with `env::set_current_dir`
  to be implicitly inherited by subprocesses, we now use
  `Command::current_dir` to set it explicitly. This feels much better,
  since we aren't dependent on the implicit state of the process's
  current directory.

- Subcommand execution is much improved.

- Added a ton of tests for config parsing, config execution, working
  dir, and search dir.

- Error messages are improved. Many more will be colored.

- The Config is now onwed, instead of borrowing from the arguments and
  the `clap::ArgMatches` object. This is a huge ergonomic improvement,
  especially in tests, and I don't think anyone will notice.

- `--edit` now uses `$VISUAL`, `$EDITOR`, or `vim`, in that order,
  matching git, which I think is what most people will expect.

- Added a cute `tmptree!{}` macro, for creating temporary directories
  populated with directories and files for tests.

- Admitted that grammer is LL(k) and I don't know what `k` is.
2019-11-09 21:43:20 -08:00
Casey Rodarmor
b2285ce0e0
Reform Parser (#509)
Just's first parser performed both parsing, i.e the transformation of a
token stream according to the language grammar, and a number of consistency
checks and analysis passes.

This made parsing and analysis quite complex, so this diff introduces a
new, much cleaner `Parser`, and moves existing analysis into a dedicated
`Analyzer`.
2019-11-07 10:55:15 -08:00
Casey Rodarmor
8e084a7042
Note need to publish with nightly cargo (#506)
Until github.com/rust-lang/cargo/pull/7333 makes it into stable rust,
we'll be forced to publish using nightly, due to our unpublished dev
dependency on `test-utilities`.
2019-10-31 20:10:18 -07:00
Casey Rodarmor
f3b8030070
Bump version: v0.4.4 -> v0.4.5 (#505) 2019-10-31 19:19:01 -07:00
Casey Rodarmor
5da0079ad9
Check minimal version compatibility before publishing (#487)
Checks that we build and pass tests with the minimal dependency versions
declared declared in Cargo.toml, as part of the `publish-check` recipe
run before publishing a new version of Just.
2019-10-08 22:17:22 -07:00
Casey Rodarmor
04a2b6461e
Generate man page with help2man (#463)
The generated man page doesn't look great by default, so this also adds the
help4help2man feature, which makes Just print a help message that produces
a better man page.
2019-07-18 21:58:06 -07:00
Casey Rodarmor
24311b7c0b
Pass all arguments to just watch (#441) 2019-05-15 17:30:47 -04:00
Casey Rodarmor
d9986a393c
Improve done recipe (#444)
The old version often failed due to rebase conflicts if the feature branch to delete had multiple commits and was squash-merged into master.

This version just checks that the up-to-date master branch matches the feature branch and uses -D to delete the feature branch. This guarantees that we don't lose any work, and avoids bad rebases from squash merges to master.
2019-05-15 16:07:41 -04:00
Casey Rodarmor
d46e6d86a6
Update justfile to use := instead of = (#432) 2019-05-07 20:15:22 -07:00
Casey Rodarmor
0ad5574ecc
Deprecate = in assignments, aliases, and exports in favor of := (#413) 2019-04-18 11:48:02 -07:00
Casey Rodarmor
85336f09b0
Bump version: v0.4.1 -> v0.4.2 (#407) 2019-04-15 23:39:18 -07:00
Casey Rodarmor
596ea34460
Replace regex-based lexer with character-at-a-time lexer (#406) 2019-04-15 22:40:02 -07:00
Casey Rodarmor
1d5fa6d29b
Clean up justfile and fix version extraction (#402) 2019-04-12 01:42:05 -07:00
Casey Rodarmor
3a287b864a
Housekeeping (#394)
- Upgrade to rust 2018
- Update dependencies
- Use BTree{Map,Set} instead of Map and Set
2019-04-11 15:23:14 -07:00
Casey Rodarmor
37639d68d7
Allow shebang lines so justfiles can be used as scripts (#393) 2019-04-08 14:28:17 -07:00
Casey Rodarmor
1ad3f99636
Add changelog for v0.3.13 (#372)
Also add check that current version appears in CHANGELOG in `publish` recipe, so hopefully I remember to update the CHANGELOG for the current release when bumping versions, not afterward :P
2018-11-06 01:00:34 -08:00
Geoff Shannon
6b0fc174d8 Fuzz test compiler (#362) 2018-10-13 19:12:35 +09:00
Casey Rodarmor
b14d1ec97c
Wait for child processes to finish (#345)
Thanks to @bheisler for the feature request and initial implementation.

Fixes #302
2018-08-27 16:03:52 -07:00
Joshua Warner
cf3fde442f Implement invocation_directory function (#312) 2018-06-19 13:13:21 -04:00
Casey Rodarmor
c0f8dfbc89
Remove unused recipes (#314) 2018-04-29 02:27:35 -04:00
Casey Rodarmor
b7a126742f
Use .adoc for asciidoctor files instead of .asc (#300) 2018-02-03 20:27:07 -08:00
Casey Rodarmor
26098ba609
Bump version: 0.3.4 -> 0.3.5 (#286) 2017-12-11 21:44:45 +01:00
Casey Rodarmor
88afe90630
Bump version: 0.3.3 -> 0.3.4 (#269) 2017-11-30 18:13:13 +01:00
Casey Rodarmor
def1bda9ff
Miscellaneous cleanup (#261) 2017-11-19 23:16:55 -08:00
Casey Rodarmor
13a124d659
Refactor some other stuff (#252) 2017-11-17 17:28:06 -08:00
Casey Rodarmor
2b6b715528
Refactor Everything (#250) 2017-11-16 23:30:08 -08:00
Casey Rodarmor
a4bf6c3a4e
Add rename recipe to justfile (#248) 2017-11-16 13:25:24 -08:00
Casey Rodarmor
6e3b43ac9e Overhaul README (#231)
- Switch to asciidoc, since it supports an auto-generated table of contents
- Re-organize into sections
- Document private recipes
- Document windows dependencies
- Document doc comments
2017-10-12 16:12:23 -07:00
Casey Rodarmor
5bed607fb2 Remove old recipes (#205) 2017-06-01 18:05:19 -07:00
Casey Rodarmor
5af2e4ae5e Build, test, and release on fewer os/arch combinations (#201)
Build, test, and release for:

- x86-64 MacOS
- x86-64 Linux
- x86-64 FreeBSD
- x86-64 Windows
2017-05-13 18:34:26 -04:00
Casey Rodarmor
62a0d7de05 Bump version: 0.2.31 -> 0.2.32 2017-05-13 00:14:20 -04:00
Casey Rodarmor
dca8cffde4 Update release recipe 2017-05-13 00:06:48 -04:00
Casey Rodarmor
1cb7be2351 Bump version: 0.2.27 -> 0.2.28 (#200) 2017-05-12 23:02:35 -04:00
Casey Rodarmor
98fe09f26b Fix lints and things that make clippy sad (#199) 2017-05-12 22:09:47 -04:00
Casey Rodarmor
d68f7867ca Set emacs and vim filetype in justfile for syntax highlighting (#163) 2017-03-12 19:17:52 -07:00
Casey Rodarmor
f47e69ceae mkdir -p tmp/... (#134)
This is needed in case we're on a branch which didn't have a ./tmp
2016-11-23 20:32:03 -08:00
Casey Rodarmor
efb4d5e908 Checkout master when building linux binaries (#133) 2016-11-23 20:28:40 -08:00
Casey Rodarmor
6b9922fc2c Build Linux binaries using Vagrant (#132)
Adds a Vagrantfile to provision a Debian VM, and recipes to build for
linux on the VM.
2016-11-23 20:20:32 -08:00
Casey Rodarmor
da8108f19d Add recipes to build binaries for release (#131) 2016-11-23 19:40:06 -08:00
Casey Rodarmor
0195a15e68 Add FLAGS to push recipe, get rid of push-f recipe (#130) 2016-11-18 07:14:48 -08:00
Casey Rodarmor
9ece0b9a6b Add comment to push-f recipe (#126) 2016-11-16 22:20:26 -08:00
Casey Rodarmor
cef117f8bd Report line number in recipe failure messages (#125)
The grammar now permits blank lines in recipes.

Note that inside of recipes, the token `NEWLINE` is used instead of the
non-terminal `eol`. This is because an `eol` optionally includes a
comment, whereas inside recipes bodies comments get no special
treatment.
2016-11-16 22:18:55 -08:00
Casey Rodarmor
2f4bcc57bc Add --verbose flag (#123)
Causes all recipe lines to be printed, regardless of --quiet or `@`.
Prints the name of each recipe before running it. Hopefully useful for
diagnosing problems.
2016-11-16 21:06:51 -08:00
Casey Rodarmor
aaee7341c4 Deny clippy lints by default (#112) 2016-11-13 15:03:33 -08:00
Casey Rodarmor
de4a299899 Make quine-text multiline string (#111) 2016-11-13 14:33:41 -08:00
Casey Rodarmor
10c377b88c Allow ' raw strings to contain literal newlines (#107)
Fixes #8
2016-11-13 14:04:20 -08:00
Casey Rodarmor
c8d8fad294 Update project justfile to take advantage of 0.2.21 (#104)
Fixed an error where certain patterns of recipe dependencies were causing a spurious circular dependency error, and added quiet recipes.
2016-11-13 00:08:14 -08:00
Casey Rodarmor
2b81dc2b76 Fix spurious circular dependency error (#102)
The resolver.seen() needs to be cleared between recipes.

Also add push recipe for creating branches on github without needing to
create one locally.
2016-11-13 00:01:42 -08:00
Casey Rodarmor
26bfef4a2f Add doc comments to recipes (#101)
If a `#...` comment appears on the line immediately before a recipe, it
is considered to be a doc comment for that recipe.

Doc comments will be printed when recipes are `--list`ed or `--dump`ed.

Also adds some color to the `--list`ing.

Fixes #84
2016-11-12 23:31:19 -08:00
Casey Rodarmor
26910a9fdc Add install recipe (#90)
Force installs just from crates.io locally
2016-11-12 11:47:49 -08:00
Casey Rodarmor
6e8289c624 Make --list print recipes with arguments (#88)
Added `--summary` which just prints recipe names, like `--list` previous
to this change.

Fixes #75
2016-11-12 11:40:52 -08:00
Casey Rodarmor
a44640b613 Add watch and install-dev-deps recipes (#87) 2016-11-12 10:28:47 -08:00
Casey Rodarmor
22a97b3e86 Lint when publishing (#78) 2016-11-12 09:21:37 -08:00
Casey Rodarmor
6c5f4eea62 Improve lint recipe (#76)
Also check for FIXME or TODO in source
2016-11-12 07:56:13 -08:00
Casey Rodarmor
d3c2d1acfa Test before publishing (#61)
Add the `test` recipe as a dependency of the `publish` recipe
2016-11-11 19:44:25 -08:00
Casey Rodarmor
716b4eba19 Fix publish recipe (#59)
Sed command didn't deal with variable amounts of whitespace.
2016-11-11 19:23:46 -08:00
Casey Rodarmor
b038490061 Add done recipe that cleans up a merged branch (#57)
Rebases BRANCH on github master and deletes if merged.
2016-11-11 18:52:27 -08:00
Casey Rodarmor
ac7634000e Fix error messages with wide character
Input may contain tabs and other characters whose byte widths do not
correspond to their display widths. This causes error context
underlining to be off when lines contain those characters

Fixed by properly accounting for the display width of characters, as
well as replacing tabs with spaces when printing error messages.
2016-11-11 17:32:35 -08:00
Casey Rodarmor
4d20ffeac4 Use colors in output
This is a pretty gross commit, since it also includes a lot of
unrelated refactoring, especially of how error messages are printed.

Also adds a lint recipe that prints lines over 100 characters

To test, I added a `--color=[auto|always|never]` option that defaults to
auto in normal use, but can be forced to `always` for testing. In `auto`
mode it defers to `atty` to figure out if the current stream is a
terminal and uses color if so.

Color printing is controlled by the `alternate` formatting flag.

When printing an error message, using `{:#}` will print it with colors
and `{}` will print it normally.
2016-11-11 17:32:35 -08:00
Casey Rodarmor
59136a1145 Add no-op recipe to justfile for testing (#50)
Useful for testing using `cargo run -- nop` to make sure that things aren't horribly broken.
2016-11-11 17:05:14 -08:00
Casey Rodarmor
2bc55ba815 Improve a few error messages (#47)
Surround variables with backticks, capitalize first letter of error
message, inflect properly depending on number of unknown overrides, and
improve wording.

Also added build dependency to `filter` recipe.
2016-11-11 14:33:17 -08:00
Casey Rodarmor
ef39637c00 Add examples of comments to readme (#40)
Thanks @vitiral for suggesting this.
2016-11-11 13:04:47 -08:00
Casey Rodarmor
c775828d3c Use version from env! macro (#37)
This saves us from having to manually keep the version string in app.rs
up to date, so we can also drop that check from the publish recipe.

Fixes #36
2016-11-10 23:09:02 -08:00
Casey Rodarmor
6861a346c3 Create a unique branch when bumping version (#20) 2016-11-05 01:51:56 -07:00
Casey Rodarmor
416f3b3d59 Add a 'filter' pattern to justfile (#15)
Useful for filtering tests
2016-11-04 23:56:15 -07:00
Casey Rodarmor
ac996f8940 Push code before publishing 2016-11-02 00:28:33 -07:00
Casey Rodarmor
f9abb72887 New publish recipe, bump version to 0.2.14 to test. 2016-11-02 00:19:07 -07:00
Casey Rodarmor
ca9a0b7bff Update readme. 2016-10-31 21:27:10 -07:00
Casey Rodarmor
9a368fb351 variable=value overrides done 2016-10-30 03:08:28 -07:00
Casey Rodarmor
70e9d4e653 Refactoring. Checkpoint commit. 2016-10-29 21:51:39 -07:00
Casey Rodarmor
ac5433248e Arguments working but still ugly 2016-10-29 00:14:41 -07:00
Casey Rodarmor
b956ce2397 Bump version in lock file. Make sure repo is clean before publishing 2016-10-28 20:48:53 -07:00
Casey Rodarmor
011876baff Bump version to 0.2.6, build before publishing 2016-10-28 20:45:05 -07:00
Casey Rodarmor
383754d2fb More tests 2016-10-28 19:38:32 -07:00
Casey Rodarmor
01df3d5e4a Add {:#} format printing to justfile for --show 2016-10-28 16:32:13 -07:00
Casey Rodarmor
a8a5c342e7 More integration tests 2016-10-28 15:59:50 -07:00
Casey Rodarmor
a1722fe241 Add integration tests 2016-10-28 15:25:59 -07:00
Casey Rodarmor
ec41eaf0e7 Bump version, use variable for quine text 2016-10-28 00:10:19 -07:00
Casey Rodarmor
4dd09a6e63 Add sloc recipe 2016-10-27 09:50:06 -07:00
Casey Rodarmor
ab2e19d409 Add comment to polyglot recipe in justfile 2016-10-23 21:25:23 -07:00
Casey Rodarmor
f74ece6629 Ran clippy and fixed issues. I <3 clippy! 2016-10-23 20:39:50 -07:00
Casey Rodarmor
90078b5956 Make sure version in app.rs and Cargo.toml match before publishing 2016-10-23 16:45:46 -07:00
Casey Rodarmor
3b92e00ee7 Comment out everything to rewrite parser 2016-10-22 19:36:54 -07:00
Casey Rodarmor
4c44096718 Giant fucking mess. 2016-10-16 18:59:49 -07:00
Casey Rodarmor
e5efa3f7d5 Make dependencies execute in order they appear
It doesn't seem particularly valuable for dependencies to execute in any
order, so make Recipe.dependencies a vec so they execute in order.
2016-10-09 00:30:33 -07:00
Casey Rodarmor
c476afb951 Add git push github master to publish recipe
So that github always reflect version in cargo.
2016-10-08 17:56:28 -07:00
Casey Rodarmor
c3bfb44917 Add publish recipe 2016-10-08 17:55:17 -07:00
Casey Rodarmor
fc351fccc8 Add polyglot recipes to justfile 2016-10-08 17:29:45 -07:00
Casey Rodarmor
c4f87b7e77 Remove list and args from justfile 2016-10-08 17:29:45 -07:00
Casey Rodarmor
c957165f4c Actually run recipes, add a bunch of tests 2016-10-08 17:29:45 -07:00
Casey Rodarmor
823b7a5181 Only test lib to avoid duplicate error messages 2016-10-06 16:27:44 -07:00
Casey Rodarmor
c0f58eefe8 Lots of work. 2016-10-03 23:55:55 -07:00
Casey Rodarmor
1a7a61acbc Update justfile, notes 2016-10-02 22:31:15 -07:00
Casey Rodarmor
2d8e3d9abe Basic parsing and circular dependency detection working 2016-09-30 23:48:23 -07:00
Casey Rodarmor
114f6b7bdc Working 2016-09-27 22:49:17 -07:00
Casey Rodarmor
a0d5b83a80 Initial commit. Broken. 2016-06-16 17:13:43 -07:00