Commit Graph

288 Commits

Author SHA1 Message Date
Casey Rodarmor
1d3235780a
Make comments in common.rs lowercase (#470) 2019-09-15 01:29:11 +02:00
Casey Rodarmor
e8c25423b8 Display alias with --show NAME if one exists
Given the following justfile:

    alias b := build
    build:
        echo 'Building!'

Just will show the alias along with the recipe:

    $ just --show b
    alias b := build
    build:
        echo 'Building!'
2019-08-23 21:46:57 -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
74e45e7c05
Remove dependency on brev (#462)
Just's dependency on brev was the cause of a
fairly deep branch of the transitive dependency
tree. To decrease build time and make the life of
packagers easier, this diff moves the functionality
that Just was using in Brev into Just itself, and
removes the dependency on Brev.

Fortunately, the only functionality that Just was
using was the output function and OutputError
enum, so this was easily done.
2019-07-13 01:55:06 -07:00
Niklas Claesson
ff91e3d7c6 Use tempfile crate instead of tempdir (#455) 2019-07-06 20:55:46 -07:00
Light Ning
a4556241de Update deprecated rust range patterns and clippy config (#450)
- Fix warning: `...` range patterns are deprecated
- Update deprecated cyclomatic-complexity-threshold to cognitive-complexity-threshold
2019-06-06 23:34:07 -07:00
Rostyslav Shevtsiv
7f06bc68d4 Ignore file name case while searching for justfile (#436) 2019-06-01 22:38:02 -07:00
Casey Rodarmor
9b08ce6fd8
Display alias target with --show (#443) 2019-05-15 15:43:47 -04:00
Casey Rodarmor
fdb5c4f578
Typo: "command equivelant" -> "command equivalent" (#418) 2019-04-19 14:18:24 -07:00
Casey Rodarmor
fce4c232d3
Remove write_token_error_context (#417) 2019-04-19 04:07:29 -07:00
Casey Rodarmor
9c82a1e329
Move CompilationErrorKind into separate module (#416) 2019-04-19 02:40:25 -07:00
Casey Rodarmor
415c84ea39
Refactor and rename test macros (#415) 2019-04-19 02:17:43 -07:00
Casey Rodarmor
d065d1c54f
Lexer code deduplication and refactoring (#414) 2019-04-18 13:12:38 -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
eb3ae2d093
Replace some calls to brev crate (#410) 2019-04-16 22:06:28 -07:00
Casey Rodarmor
792b7a249c
Pass stdin handle to backtick process (#409) 2019-04-16 19:52:16 -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
a2e55ef40e
Make summary function non-generic (#404) 2019-04-15 13:21:35 -07:00
Casey Rodarmor
c3d1d9049f
Bump version: 0.3.13 -> 0.4.0 (#401) 2019-04-12 00:46:29 -07:00
Casey Rodarmor
fe0a6c252c
Allow arbitrary expressions as default arguments (#400) 2019-04-11 23:58:08 -07:00
Casey Rodarmor
12f9428695
Add justfile summaries (#399)
Exposes an interface for producing a summary that captures the important details of the parsed justfile.
2019-04-11 16:35:16 -07:00
Casey Rodarmor
e118051a5c
Omit aliases that begin with _ from --list` (#398) 2019-04-11 15:57:34 -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
ryloric
f64f07a0cc Add recipe aliases (#390)
Recipe aliases may be defined with `alias f = foo`, allowing recipes to be called by shorter names on the command line.
2019-04-11 12:30:29 -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
cee9ac21e0
Allow --justfile without --working-directory (#392) 2019-04-08 00:54:05 -07:00
Casey Rodarmor
3d67786aaf
Förmatterdämmerung (#346)
Format with rustfmt
2018-12-08 14:29:41 -08:00
Casey Rodarmor
849cdcb37f
Bump version: 0.3.12 -> 0.3.13 (#371) 2018-11-06 00:41:33 -08:00
ladysamantha
af97f3f1c1 Print recipe signature if missing arguments (#369) 2018-11-03 14:51:06 -07:00
Casey Rodarmor
6430d38a6a
Fail fuzzing on internal errors (#366) 2018-10-13 21:38:44 +08:00
Geoff Shannon
6b0fc174d8 Fuzz test compiler (#362) 2018-10-13 19:12:35 +09:00
Casey Rodarmor
bcfd47dcbf
Use PutBackN instead of PutBack in parser (#364)
The parser could be confused into calling `PutBack::put_back` twice in a row, and thus dropping tokens. This commit switches to `PutBackN`, which allows any number of put backs in a row.
2018-10-13 18:39:26 +09:00
Casey Rodarmor
ad0d37a173
Remove trailing whitespace in parser tests (#350) 2018-09-03 14:48:15 -07:00
Casey Rodarmor
816183b975
Add grandiloquent verbosity level that echos shebang recipes (#348) 2018-08-31 00:04:06 -07:00
Casey Rodarmor
4e6585d391
Slake Clippy's thirst for blood (#347) 2018-08-27 18:36:40 -07: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
Casey Rodarmor
438b5147fe
Improve invalid escape sequence error messages (#328)
The invalid escape sequence error message is delimited with backticks
and isn't used as input to other programs. This diff tweaks the escaping rules
slightly when printing invalid escape sequences. In particular, `, \, ',
and " are now not be escaped.
2018-06-30 22:19:13 -04:00
Joshua Warner
cf3fde442f Implement invocation_directory function (#312) 2018-06-19 13:13:21 -04:00
Casey Rodarmor
886220d4cc
Always enable ansi support on windows (#317) 2018-05-06 22:02:17 -04:00
Casey Rodarmor
a3294822c3
Get package name from Cargo.toml (#315) 2018-05-01 17:01:59 -04:00
Casey Rodarmor
68b343bc17
Make .env vars available in env_var functions (#310) 2018-03-17 09:17:41 -07:00
Casey Rodarmor
70234f6193
Add dotenv integration (#306) 2018-03-05 13:21:35 -08:00
Gaeulbyul
9eac537a01 Enable ANSI support for Windows 10 Console
On Windows 10, console applications must activate ANSI support in order for colors to be supported.
2018-02-16 00:52:00 -08:00
Casey Rodarmor
b7a126742f
Use .adoc for asciidoctor files instead of .asc (#300) 2018-02-03 20:27:07 -08:00
Casey Rodarmor
5cbcf47038
Allow ! in comments (#296) 2018-01-23 08:17:14 +01:00
Casey Rodarmor
1d0aa178f7
Lex CRLF line endings properly (#292) 2018-01-05 11:03:58 +01:00
Casey Rodarmor
26098ba609
Bump version: 0.3.4 -> 0.3.5 (#286) 2017-12-11 21:44:45 +01:00
Casey Rodarmor
79c0994387
Add env_var(key) and env_var_or_default(key, default) functions (#280)
`env_var(key)` looks up the value of the environment variable with name `key`, aborting execution if it is not found.

`env_var_or_default(key, default)` looks up the value of the environment variable with name `key`, returning `default` if it is not found.
2017-12-02 23:59:07 +01:00
Casey Rodarmor
9a56e27e18
Make EOL after interpolation a proper error (#279) 2017-12-02 21:49:31 +01:00
Casey Rodarmor
afa4aebd4a
Add functions (#277)
– Parse unary (no-argument) functions
– Add functions for detecting the current os, arch, and os family, according to rustc's cfg attributes
2017-12-02 14:37:10 +01:00
Casey Rodarmor
66391de3f8
Rename Scanner to Lexer (#276) 2017-12-01 11:22:32 +01:00
Casey Rodarmor
c5eeb8944e
Align doc-comments in --list output (#273) 2017-12-01 00:03:59 +01:00
Casey Rodarmor
861173581c
Refactor Tokenizer (#260) 2017-11-18 03:36:02 -08:00
Casey Rodarmor
afe2c0f94e
Refactor more tests into macro invocations (#259) 2017-11-18 01:44:59 -08:00
Casey Rodarmor
28a57d9828
Refactor evaluators and resolvers into common form (#258) 2017-11-18 01:18:04 -08:00
Casey Rodarmor
bc79d16eac
Convert parser tests to macros (#257) 2017-11-17 23:59:55 -08:00
Casey Rodarmor
87b2130db0
Use imperative mood in help strings (#256) 2017-11-17 23:59:36 -08:00
Casey Rodarmor
c84a86dd2b
Use uppercase names for arguments (#255) 2017-11-17 23:23:24 -08:00
Casey Rodarmor
7166fa9e6f
Rename options to configuration (#254) 2017-11-17 23:23:02 -08:00
Travis snɯǝᗡɔW
acb5d6f98b Do not evaluate backticks in assignments during dry runs (#253) 2017-11-17 20:21:37 -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
86dc82f548
Give errors clearer names (#249) 2017-11-16 13:26:01 -08:00
Casey Rodarmor
3acd56646f
Stop empty comments from swallowing the next line (#247) 2017-11-15 12:53:01 -08:00
Casey Rodarmor
b9e1f73919
Make unexpected token formatting clearer (#243)
Symbols are now be surrounded by single quotes, to set them off more
clearly.
2017-11-14 13:03:26 -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
8fa91a4eb1 Hide recipes with names starting with an _ from --list and --sumamary (#229) 2017-10-06 23:48:07 -07:00
Christopher Vittal
a07fc226c1 Add short options for justfile and working-directory (#222)
Adds -f and -d as short options for --justfile and --working-directory
respectively.

Thanks @chrisvittal!
2017-09-11 00:58:35 -07:00
Casey Rodarmor
e22da124d4 Update dependencies (#225)
Thanks @chrisvittal for reporting!
2017-09-10 17:28:00 -07:00
Casey Rodarmor
58f545f240 🔥 Stop parsing flags after positional args (#219)
This allows things like the following to work as,
I hope, one would expect:

  commit +flags:
    git commit {{flags}}

  $ just commit -a

It is however a breaking change, so also bump version number to 0.3.0.
2017-08-18 14:21:18 -07:00
Casey Rodarmor
1fd1c05653 Retire warn! in favor of eprintln! (#218) 2017-08-18 14:15:43 -07:00
Casey Rodarmor
4320d1c699 Remove integration test debug spam (#206) 2017-06-03 22:46:07 -07:00
Casey Rodarmor
1b1a155dda Refactor color handling (#204)
Color logic is fairly complicated, so moved it into its own
module.

A `Color` object now encapsulates the --color setting, which
stream we are printing to, and what color we are painting.

This way, Color::paint can just do the right thing when asked to
paint text.

Also added tests to make sure that --list and --highlight colors
are using the correct color codes.
2017-06-01 18:01:35 -07:00
Casey Rodarmor
98fe09f26b Fix lints and things that make clippy sad (#199) 2017-05-12 22:09:47 -04:00
Casey Rodarmor
839f314439 Make appveyor continuous integration tests pass (#196) 2017-05-12 22:03:43 -04:00
Casey Rodarmor
59d863f6f4 Use crate metadata in --help string (#197) 2017-05-09 20:31:30 -04:00
Casey Rodarmor
b84fa89d71 Remove debugging output (#195) 2017-05-07 23:27:52 -04:00
Casey Rodarmor
4a35c14024 Set up cross platform continuous integration on travis (#191)
Gets travis cross platform testing working.

Based on the templates from:

japaric/trust/commit/29b0e084ff2c40d1aa1b6a5d66ab81eca90439e1
2017-05-07 22:48:07 -04:00
Casey Rodarmor
616d324cd7 Error if running default recipe that requires arguments (#194) 2017-05-07 15:11:10 -07:00
Casey Rodarmor
200cb4ee26 Add period to empty justfile error message (#192) 2017-05-07 14:50:46 -07:00
Casey Rodarmor
7f2d360231 Write argument_range() in terms of min_arguments() and max_arguments() (#193) 2017-05-07 14:45:23 -07:00
Casey Rodarmor
1990c58a21 Add option to highlight echoed recipe lines (#190)
Using bold and cyan, for visibility.
2017-04-25 23:39:34 -07:00
Casey Rodarmor
bb15310549 Unicode integration test fix for windows (#189)
Windows had trouble with a backtick, so simplify it
2017-04-23 16:36:38 -07:00
Casey Rodarmor
165e7951af Use cygpath to translate paths on windows (#188)
I was previous doing it manually, which failed when running in
powershell in a Github Desktop for windows.

Use the `cygpath` utility instead.
2017-04-23 16:09:34 -07:00
Casey Rodarmor
832cf7b357 Move output() and OutputError into brev (#187)
They're pretty generic and generally useful, so move them into brev on crates.io.
2017-04-23 15:37:17 -07:00
Casey Rodarmor
af764f5eab Refactor RunError::Backtick* to use OutputError (#186)
Add `output()` to get stdout of a command, return a OutputError if
it failes. Refactor backtick run errors to contain an OutputError.
2017-04-23 14:21:21 -07:00
Casey Rodarmor
84a55da1ce Make shebangs work on windows (#185)
We use EXEPATH, which points to the root of the MinGW installation
and can be used as a base for translating the unix path to the
executable in the shebang line.

If we're not on MinGW, well, we just throw up our hands and hope
for the best.
2017-04-22 21:39:29 -07:00
Casey Rodarmor
6a0e3abb32 Improve shebang execution error message (#184)
I was reusing TmpdirIoError for a few cases, but one of them
usually has more to do with the contents of the shebang line than
an actual io error involving the tmpdir. Pull it out into its own
RunError variant and improve the message.
2017-04-22 19:05:51 -07:00
Casey Rodarmor
a6e1cc8ac5 Uppercase integration test exported variable names (#183)
For windows, since windows environment variables are not case
sensitive.
2017-04-22 16:39:13 -07:00
Casey Rodarmor
8d1ef2f54f Fix type in unit test panic message (#182) 2017-04-22 16:22:54 -07:00
Casey Rodarmor
b0c5fa23ee Multi shell integration tests (#181)
* Run integration tests on multiple shells

To make sure that I don't break tests for shells other than my
dev-box's `sh` and the `sh` on travis, each integration test case
now runs using `sh`, `dash`, and `bash.
2017-04-22 16:15:15 -07:00
Casey Rodarmor
2b294f0b30 Create platform module (#178)
Moves platform specific functionality into its own module.

Thanks to @Meralis40 for starting this!

This also gets just building on windows \^_^/

Although a lot of tests still fail (✖╭╮✖)

The `PlatformInterface` trait contains functions which abstract
over platform specific functionality, with implementations for
different platforms behind #[cfg(*)] attributes.

- `make_shebang_command()` constructs a command which will execute
  the given script as if by a shebang. On linux this executes the
  file, on windows it runs the interpreter directly.

- `set_execute_permission()` sets the execute permission on a
  file. This is a nop on windows, since all files are executable.

- `signal_from_exit_status()` extracts the signal a process was
  halted by from its exit status, if it was halted by a signal.
2017-04-21 22:20:13 -07:00
Casey Rodarmor
6a26c72131 Use libc::{EXIT_SUCCESS, EXIT_FAILURE} for status (#177) 2017-04-21 22:11:18 -07:00
Casey Rodarmor
f38f984f12 Use CAPITALIZED option names (#176)
Since this seems to be the convention.
2017-04-20 23:24:23 -07:00
Casey Rodarmor
c9ce4601b9 Add --shell option to specify the shell to use (#175)
Mostly for debugging purposes, so I can make sure behavior is
consistent across different shells. Although I suppose this might
also be of use if you've got a mega weird `sh` that you'd like to
avoid.

Defaults to `sh` so current behavior is preserved.
2017-04-20 23:06:03 -07:00
Casey Rodarmor
799986dd34 Sort clap arguments alphabetically (#174) 2017-04-20 22:49:51 -07:00
Casey Rodarmor
d7bb94ab5b Update and adapt to latest versions of dependencies (#171)
- Unicode 9 defines emoji to be wide characters; before their
  width was ambiguous. unicode-width has picked this up, so the
  tests which expected emoji to be single-width have been updated.

- The ordering of the --quiet and --dry-run flags seems to be
  have flipped in a clap error message, which broke a test, which
  is unbroken by this commit
2017-04-20 21:38:44 -07:00
Casey Rodarmor
435b4c5ea3 Remove trailing whitespace (#167) 2017-04-02 20:39:23 -07:00
Casey Rodarmor
b6b01bf6d4 🔥 Disallow names that start with '-' (#154)
This is done for two reasons:

1. Such names cannot be given on the command line, since clap will
intercept them and wrongly interpret them as flags.

2. The name '---' can conflict with yaml document delimiters. Kind of
speculative, but I was thinking that it would be nice to make sure that
'---' and '...' are illegal in a justfile, so that that one can be
included in a yaml document stream. Is this silly? I am really not sure.

This is backwards incompatible, but I don't think anyone will notice,
since names that start with '-' are likely to be rare.
2017-02-10 20:15:25 -08:00