Misc fixes (#1700)
This commit is contained in:
parent
55da31a8a5
commit
be7f161554
2
justfile
2
justfile
@ -15,7 +15,7 @@ test:
|
|||||||
|
|
||||||
ci: build-book
|
ci: build-book
|
||||||
cargo test --all
|
cargo test --all
|
||||||
cargo clippy --all --all-targets
|
cargo clippy --all --all-targets -- --deny warnings
|
||||||
cargo fmt --all -- --check
|
cargo fmt --all -- --check
|
||||||
./bin/forbid
|
./bin/forbid
|
||||||
cargo update --locked --package just
|
cargo update --locked --package just
|
||||||
|
@ -616,7 +616,7 @@ impl Config {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let unstable = matches.is_present(arg::UNSTABLE)
|
let unstable = matches.is_present(arg::UNSTABLE)
|
||||||
|| std::env::var_os("JUST_UNSTABLE")
|
|| env::var_os("JUST_UNSTABLE")
|
||||||
.map(|val| !(val == "false" || val == "0" || val.is_empty()))
|
.map(|val| !(val == "false" || val == "0" || val.is_empty()))
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
@ -662,7 +662,7 @@ impl Config {
|
|||||||
|
|
||||||
pub(crate) fn run(self, loader: &Loader) -> Result<(), Error> {
|
pub(crate) fn run(self, loader: &Loader) -> Result<(), Error> {
|
||||||
if let Err(error) = InterruptHandler::install(self.verbosity) {
|
if let Err(error) = InterruptHandler::install(self.verbosity) {
|
||||||
warn!("Failed to set CTRL-C handler: {}", error);
|
warn!("Failed to set CTRL-C handler: {error}");
|
||||||
}
|
}
|
||||||
|
|
||||||
self.subcommand.execute(&self, loader)
|
self.subcommand.execute(&self, loader)
|
||||||
@ -761,7 +761,7 @@ mod tests {
|
|||||||
|
|
||||||
match Config::from_matches(&matches).expect_err("config parsing succeeded") {
|
match Config::from_matches(&matches).expect_err("config parsing succeeded") {
|
||||||
$error => { $($check)? }
|
$error => { $($check)? }
|
||||||
other => panic!("Unexpected config error: {}", other),
|
other => panic!("Unexpected config error: {other}"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -210,12 +210,12 @@ impl<'src, 'run> Evaluator<'src, 'run> {
|
|||||||
|
|
||||||
cmd.export(self.settings, self.dotenv, &self.scope);
|
cmd.export(self.settings, self.dotenv, &self.scope);
|
||||||
|
|
||||||
cmd.stdin(process::Stdio::inherit());
|
cmd.stdin(Stdio::inherit());
|
||||||
|
|
||||||
cmd.stderr(if self.config.verbosity.quiet() {
|
cmd.stderr(if self.config.verbosity.quiet() {
|
||||||
process::Stdio::null()
|
Stdio::null()
|
||||||
} else {
|
} else {
|
||||||
process::Stdio::inherit()
|
Stdio::inherit()
|
||||||
});
|
});
|
||||||
|
|
||||||
InterruptHandler::guard(|| {
|
InterruptHandler::guard(|| {
|
||||||
|
@ -337,9 +337,9 @@ fn sha256_file(context: &FunctionContext, path: &str) -> Result<String, String>
|
|||||||
let justpath = context.search.working_directory.join(path);
|
let justpath = context.search.working_directory.join(path);
|
||||||
let mut hasher = Sha256::new();
|
let mut hasher = Sha256::new();
|
||||||
let mut file = fs::File::open(&justpath)
|
let mut file = fs::File::open(&justpath)
|
||||||
.map_err(|err| format!("Failed to open file at `{:?}`: {err}", &justpath.to_str()))?;
|
.map_err(|err| format!("Failed to open file at `{:?}`: {err}", justpath.to_str()))?;
|
||||||
std::io::copy(&mut file, &mut hasher)
|
std::io::copy(&mut file, &mut hasher)
|
||||||
.map_err(|err| format!("Failed to read file at `{:?}`: {err}", &justpath.to_str()))?;
|
.map_err(|err| format!("Failed to read file at `{:?}`: {err}", justpath.to_str()))?;
|
||||||
let hash = hasher.finalize();
|
let hash = hasher.finalize();
|
||||||
Ok(format!("{hash:x}"))
|
Ok(format!("{hash:x}"))
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ impl InterruptHandler {
|
|||||||
}
|
}
|
||||||
.color_display(Color::auto().stderr())
|
.color_display(Color::auto().stderr())
|
||||||
);
|
);
|
||||||
std::process::exit(EXIT_FAILURE);
|
process::exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -69,7 +69,7 @@ impl InterruptHandler {
|
|||||||
.color_display(Color::auto().stderr())
|
.color_display(Color::auto().stderr())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
std::process::exit(EXIT_FAILURE);
|
process::exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.blocks -= 1;
|
self.blocks -= 1;
|
||||||
|
@ -729,7 +729,7 @@ impl<'src> Lexer<'src> {
|
|||||||
}
|
}
|
||||||
self.token(Whitespace);
|
self.token(Whitespace);
|
||||||
} else if let Some(character) = self.next {
|
} else if let Some(character) = self.next {
|
||||||
return Err(self.error(CompileErrorKind::InvalidEscapeSequence { character }));
|
return Err(self.error(InvalidEscapeSequence { character }));
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -48,7 +48,7 @@ pub(crate) use {
|
|||||||
rc::Rc,
|
rc::Rc,
|
||||||
str::{self, Chars},
|
str::{self, Chars},
|
||||||
sync::{Mutex, MutexGuard},
|
sync::{Mutex, MutexGuard},
|
||||||
usize, vec,
|
vec,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
camino::Utf8Path,
|
camino::Utf8Path,
|
||||||
|
@ -15,7 +15,7 @@ pub(crate) fn output(mut command: Command) -> Result<String, OutputError> {
|
|||||||
None => OutputError::Unknown,
|
None => OutputError::Unknown,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
match std::str::from_utf8(&output.stdout) {
|
match str::from_utf8(&output.stdout) {
|
||||||
Err(error) => Err(OutputError::Utf8(error)),
|
Err(error) => Err(OutputError::Utf8(error)),
|
||||||
Ok(utf8) => Ok(
|
Ok(utf8) => Ok(
|
||||||
if utf8.ends_with('\n') {
|
if utf8.ends_with('\n') {
|
||||||
|
@ -11,11 +11,11 @@ pub(crate) enum OutputError {
|
|||||||
/// Unknown failure
|
/// Unknown failure
|
||||||
Unknown,
|
Unknown,
|
||||||
/// Stdout not UTF-8
|
/// Stdout not UTF-8
|
||||||
Utf8(std::str::Utf8Error),
|
Utf8(str::Utf8Error),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Display for OutputError {
|
impl Display for OutputError {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
|
fn fmt(&self, f: &mut Formatter) -> Result<(), fmt::Error> {
|
||||||
match *self {
|
match *self {
|
||||||
Self::Code(code) => write!(f, "Process exited with status code {code}"),
|
Self::Code(code) => write!(f, "Process exited with status code {code}"),
|
||||||
Self::Io(ref io_error) => write!(f, "Error executing process: {io_error}"),
|
Self::Io(ref io_error) => write!(f, "Error executing process: {io_error}"),
|
||||||
|
@ -33,7 +33,7 @@ impl PlatformInterface for Platform {
|
|||||||
fs::set_permissions(path, permissions)
|
fs::set_permissions(path, permissions)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn signal_from_exit_status(exit_status: process::ExitStatus) -> Option<i32> {
|
fn signal_from_exit_status(exit_status: ExitStatus) -> Option<i32> {
|
||||||
use std::os::unix::process::ExitStatusExt;
|
use std::os::unix::process::ExitStatusExt;
|
||||||
exit_status.signal()
|
exit_status.signal()
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ pub(crate) trait PlatformInterface {
|
|||||||
|
|
||||||
/// Extract the signal from a process exit status, if it was terminated by a
|
/// Extract the signal from a process exit status, if it was terminated by a
|
||||||
/// signal
|
/// signal
|
||||||
fn signal_from_exit_status(exit_status: process::ExitStatus) -> Option<i32>;
|
fn signal_from_exit_status(exit_status: ExitStatus) -> Option<i32>;
|
||||||
|
|
||||||
/// Translate a path from a "native" path to a path the interpreter expects
|
/// Translate a path from a "native" path to a path the interpreter expects
|
||||||
fn convert_native_path(working_directory: &Path, path: &Path) -> Result<String, String>;
|
fn convert_native_path(working_directory: &Path, path: &Path) -> Result<String, String>;
|
||||||
|
@ -49,7 +49,7 @@ impl<'src, D> Recipe<'src, D> {
|
|||||||
|
|
||||||
pub(crate) fn max_arguments(&self) -> usize {
|
pub(crate) fn max_arguments(&self) -> usize {
|
||||||
if self.parameters.iter().any(|p| p.kind.is_variadic()) {
|
if self.parameters.iter().any(|p| p.kind.is_variadic()) {
|
||||||
usize::max_value() - 1
|
usize::MAX - 1
|
||||||
} else {
|
} else {
|
||||||
self.parameters.len()
|
self.parameters.len()
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ impl Subcommand {
|
|||||||
let starting_path = match &config.search_config {
|
let starting_path = match &config.search_config {
|
||||||
SearchConfig::FromInvocationDirectory => config.invocation_directory.clone(),
|
SearchConfig::FromInvocationDirectory => config.invocation_directory.clone(),
|
||||||
SearchConfig::FromSearchDirectory { search_directory } => {
|
SearchConfig::FromSearchDirectory { search_directory } => {
|
||||||
std::env::current_dir().unwrap().join(search_directory)
|
env::current_dir().unwrap().join(search_directory)
|
||||||
}
|
}
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
};
|
};
|
||||||
|
@ -108,7 +108,7 @@ macro_rules! run_error {
|
|||||||
).expect_err("Expected runtime error") {
|
).expect_err("Expected runtime error") {
|
||||||
$error => $check
|
$error => $check
|
||||||
other => {
|
other => {
|
||||||
panic!("Unexpected run error: {:?}", other);
|
panic!("Unexpected run error: {other:?}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -56,7 +56,7 @@ impl<'src> Thunk<'src> {
|
|||||||
name: Name<'src>,
|
name: Name<'src>,
|
||||||
mut arguments: Vec<Expression<'src>>,
|
mut arguments: Vec<Expression<'src>>,
|
||||||
) -> CompileResult<'src, Thunk<'src>> {
|
) -> CompileResult<'src, Thunk<'src>> {
|
||||||
crate::function::get(name.lexeme()).map_or(
|
function::get(name.lexeme()).map_or(
|
||||||
Err(name.error(CompileErrorKind::UnknownFunction {
|
Err(name.error(CompileErrorKind::UnknownFunction {
|
||||||
function: name.lexeme(),
|
function: name.lexeme(),
|
||||||
})),
|
})),
|
||||||
|
@ -40,6 +40,6 @@ impl Verbosity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub const fn default() -> Self {
|
pub const fn default() -> Self {
|
||||||
Self::Taciturn
|
Taciturn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,7 @@ fn skip_recipes_that_require_arguments() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn no_choosable_recipes() {
|
fn no_choosable_recipes() {
|
||||||
crate::test::Test::new()
|
Test::new()
|
||||||
.arg("--choose")
|
.arg("--choose")
|
||||||
.justfile(
|
.justfile(
|
||||||
"
|
"
|
||||||
@ -200,7 +200,7 @@ fn default() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let cat = which("cat").unwrap();
|
let cat = which("cat").unwrap();
|
||||||
let fzf = tmp.path().join(format!("fzf{}", env::consts::EXE_SUFFIX));
|
let fzf = tmp.path().join(format!("fzf{EXE_SUFFIX}"));
|
||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
std::os::unix::fs::symlink(cat, fzf).unwrap();
|
std::os::unix::fs::symlink(cat, fzf).unwrap();
|
||||||
|
@ -116,7 +116,7 @@ fn editor_precedence() {
|
|||||||
assert_stdout(&output, JUSTFILE);
|
assert_stdout(&output, JUSTFILE);
|
||||||
|
|
||||||
let cat = which("cat").unwrap();
|
let cat = which("cat").unwrap();
|
||||||
let vim = tmp.path().join(format!("vim{}", EXE_SUFFIX));
|
let vim = tmp.path().join(format!("vim{EXE_SUFFIX}"));
|
||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
std::os::unix::fs::symlink(cat, vim).unwrap();
|
std::os::unix::fs::symlink(cat, vim).unwrap();
|
||||||
|
@ -120,7 +120,7 @@ fn test_downwards_multiple_path_argument() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn single_downards() {
|
fn single_downwards() {
|
||||||
let tmp = temptree! {
|
let tmp = temptree! {
|
||||||
justfile: "default:\n\techo ok",
|
justfile: "default:\n\techo ok",
|
||||||
child: {},
|
child: {},
|
||||||
|
@ -23,7 +23,7 @@ fn flag() {
|
|||||||
#[cfg(not(windows))]
|
#[cfg(not(windows))]
|
||||||
{
|
{
|
||||||
let permissions = std::os::unix::fs::PermissionsExt::from_mode(0o700);
|
let permissions = std::os::unix::fs::PermissionsExt::from_mode(0o700);
|
||||||
std::fs::set_permissions(&shell, permissions).unwrap();
|
fs::set_permissions(&shell, permissions).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
let output = Command::new(executable_path("just"))
|
let output = Command::new(executable_path("just"))
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
pub(crate) fn tempdir() -> tempfile::TempDir {
|
pub(crate) fn tempdir() -> TempDir {
|
||||||
tempfile::Builder::new()
|
tempfile::Builder::new()
|
||||||
.prefix("just-test-tempdir")
|
.prefix("just-test-tempdir")
|
||||||
.tempdir()
|
.tempdir()
|
||||||
|
@ -33,10 +33,7 @@ a:hover {
|
|||||||
body {
|
body {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(4, 1fr);
|
grid-template-columns: repeat(4, 1fr);
|
||||||
margin-bottom: var(--margin-vertical);
|
margin: var(--margin-vertical) var(--margin-horizontal);
|
||||||
margin-left: var(--margin-horizontal);
|
|
||||||
margin-right: var(--margin-horizontal);
|
|
||||||
margin-top: var(--margin-vertical);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
body > * {
|
body > * {
|
||||||
|
Loading…
Reference in New Issue
Block a user