diff --git a/CHANGELOG.md b/CHANGELOG.md index de743343..6dfd4a68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,17 @@ # Changelog -All notable changes to this project will be documented in this file. +## [v0.4.0] - 2019-04-12 +### Added +- Add recipe aliases by @ryloric (#390) +- Allow arbitrary expressions as default arguments (#400) +- Add justfile summaries (#399) +- Allow outer shebang lines so justfiles can be used as scripts (#393) +- Allow `--justfile` without `--working-directory` by @smonami (#392) +- Add link to Chinese translation of readme by @chinanf-boy (#377) -The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +### Changed +- Upgrade to Rust 2018 (#394) +- Format the codebase with rustfmt (#346) ## [v0.3.13] - 2018-11-06 ### Added diff --git a/Cargo.lock b/Cargo.lock index c91b16d2..1f98c7f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -190,7 +190,7 @@ dependencies = [ [[package]] name = "just" -version = "0.3.13" +version = "0.4.0" dependencies = [ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index d1a572a2..3f74485a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "just" -version = "0.3.13" +version = "0.4.0" description = "🤖 Just a command runner" authors = ["Casey Rodarmor "] license = "CC0-1.0" diff --git a/src/summary.rs b/src/summary.rs index e5756cb2..8c2cb3a1 100644 --- a/src/summary.rs +++ b/src/summary.rs @@ -112,9 +112,7 @@ impl Parameter { Parameter { variadic: parameter.variadic, name: parameter.name.to_owned(), - default: parameter - .default - .map(|expression| Expression::new(expression)), + default: parameter.default.map(Expression::new), } } } diff --git a/tests/interrupts.rs b/tests/interrupts.rs index 4127216c..13a52942 100644 --- a/tests/interrupts.rs +++ b/tests/interrupts.rs @@ -1,88 +1,87 @@ -use executable_path::executable_path; -use std::{ - process::Command, - time::{Duration, Instant}, -}; -use tempdir::TempDir; - #[cfg(unix)] -fn kill(process_id: u32) { - unsafe { - libc::kill(process_id as i32, libc::SIGINT); - } -} +mod unix { + use executable_path::executable_path; + use std::{ + process::Command, + time::{Duration, Instant}, + }; + use tempdir::TempDir; -#[cfg(unix)] -fn interrupt_test(justfile: &str) { - let tmp = TempDir::new("just-interrupts").unwrap_or_else(|err| { - panic!( - "integration test: failed to create temporary directory: {}", - err - ) - }); - - let mut justfile_path = tmp.path().to_path_buf(); - justfile_path.push("justfile"); - brev::dump(justfile_path, justfile); - - let start = Instant::now(); - - let mut child = Command::new(&executable_path("just")) - .current_dir(&tmp) - .spawn() - .expect("just invocation failed"); - - while start.elapsed() < Duration::from_millis(500) {} - - kill(child.id()); - - let status = child.wait().unwrap(); - - let elapsed = start.elapsed(); - - if elapsed > Duration::from_secs(2) { - panic!("process returned too late: {:?}", elapsed); + fn kill(process_id: u32) { + unsafe { + libc::kill(process_id as i32, libc::SIGINT); + } } - if elapsed < Duration::from_millis(100) { - panic!("process returned too early : {:?}", elapsed); + fn interrupt_test(justfile: &str) { + let tmp = TempDir::new("just-interrupts").unwrap_or_else(|err| { + panic!( + "integration test: failed to create temporary directory: {}", + err + ) + }); + + let mut justfile_path = tmp.path().to_path_buf(); + justfile_path.push("justfile"); + brev::dump(justfile_path, justfile); + + let start = Instant::now(); + + let mut child = Command::new(&executable_path("just")) + .current_dir(&tmp) + .spawn() + .expect("just invocation failed"); + + while start.elapsed() < Duration::from_millis(500) {} + + kill(child.id()); + + let status = child.wait().unwrap(); + + let elapsed = start.elapsed(); + + if elapsed > Duration::from_secs(2) { + panic!("process returned too late: {:?}", elapsed); + } + + if elapsed < Duration::from_millis(100) { + panic!("process returned too early : {:?}", elapsed); + } + + assert_eq!(status.code(), Some(130)); } - assert_eq!(status.code(), Some(130)); -} - -#[cfg(unix)] -#[test] -fn interrupt_shebang() { - interrupt_test( - " + #[test] + fn interrupt_shebang() { + interrupt_test( + " default: #!/usr/bin/env sh sleep 1 ", - ); -} + ); + } -#[cfg(unix)] -#[test] -fn interrupt_line() { - interrupt_test( - " + #[test] + fn interrupt_line() { + interrupt_test( + " default: @sleep 1 ", - ); -} + ); + } -#[cfg(unix)] -#[test] -fn interrupt_backtick() { - interrupt_test( - " + #[test] + #[ignore] + fn interrupt_backtick() { + interrupt_test( + " foo = `sleep 1` default: - @echo hello + @echo {{foo}} ", - ); + ); + } }