Don't evaluate comments (#1358)
This commit is contained in:
parent
e445cfb47d
commit
cd09d1e6d4
46
src/line.rs
46
src/line.rs
@ -13,41 +13,39 @@ impl<'src> Line<'src> {
|
||||
}
|
||||
|
||||
pub(crate) fn is_comment(&self) -> bool {
|
||||
match self.fragments.first() {
|
||||
Some(Fragment::Text { token }) => token.lexeme().starts_with('#'),
|
||||
_ => false,
|
||||
}
|
||||
matches!(
|
||||
self.fragments.first(),
|
||||
Some(Fragment::Text { token }) if token.lexeme().starts_with('#'),
|
||||
)
|
||||
}
|
||||
|
||||
pub(crate) fn is_continuation(&self) -> bool {
|
||||
match self.fragments.last() {
|
||||
Some(Fragment::Text { token }) => token.lexeme().ends_with('\\'),
|
||||
_ => false,
|
||||
}
|
||||
matches!(
|
||||
self.fragments.last(),
|
||||
Some(Fragment::Text { token }) if token.lexeme().ends_with('\\'),
|
||||
)
|
||||
}
|
||||
|
||||
pub(crate) fn is_shebang(&self) -> bool {
|
||||
match self.fragments.first() {
|
||||
Some(Fragment::Text { token }) => token.lexeme().starts_with("#!"),
|
||||
_ => false,
|
||||
}
|
||||
matches!(
|
||||
self.fragments.first(),
|
||||
Some(Fragment::Text { token }) if token.lexeme().starts_with("#!"),
|
||||
)
|
||||
}
|
||||
|
||||
pub(crate) fn is_quiet(&self) -> bool {
|
||||
match self.fragments.first() {
|
||||
Some(Fragment::Text { token }) => {
|
||||
token.lexeme().starts_with('@') || token.lexeme().starts_with("-@")
|
||||
}
|
||||
_ => false,
|
||||
}
|
||||
matches!(
|
||||
self.fragments.first(),
|
||||
Some(Fragment::Text { token })
|
||||
if token.lexeme().starts_with('@') || token.lexeme().starts_with("-@"),
|
||||
)
|
||||
}
|
||||
|
||||
pub(crate) fn is_infallible(&self) -> bool {
|
||||
match self.fragments.first() {
|
||||
Some(Fragment::Text { token }) => {
|
||||
token.lexeme().starts_with('-') || token.lexeme().starts_with("@-")
|
||||
}
|
||||
_ => false,
|
||||
}
|
||||
matches!(
|
||||
self.fragments.first(),
|
||||
Some(Fragment::Text { token })
|
||||
if token.lexeme().starts_with('-') || token.lexeme().starts_with("@-"),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -124,7 +124,9 @@ impl<'src, D> Recipe<'src, D> {
|
||||
}
|
||||
let line = lines.next().unwrap();
|
||||
line_number += 1;
|
||||
if !comment_line {
|
||||
evaluated += &evaluator.evaluate_line(line, continued)?;
|
||||
}
|
||||
if line.is_continuation() && !comment_line {
|
||||
continued = true;
|
||||
evaluated.pop();
|
||||
@ -132,6 +134,11 @@ impl<'src, D> Recipe<'src, D> {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if comment_line {
|
||||
continue;
|
||||
}
|
||||
|
||||
let mut command = evaluated.as_str();
|
||||
|
||||
if quiet_command {
|
||||
@ -142,10 +149,6 @@ impl<'src, D> Recipe<'src, D> {
|
||||
command = &command[1..];
|
||||
}
|
||||
|
||||
if comment_line {
|
||||
continue;
|
||||
}
|
||||
|
||||
if command.is_empty() {
|
||||
continue;
|
||||
}
|
||||
|
@ -83,3 +83,17 @@ fn continuations_with_echo_comments_true() {
|
||||
.stderr("# comment lines can be continued echo something-useful\n")
|
||||
.run();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn dont_evalute_comments() {
|
||||
Test::new()
|
||||
.justfile(
|
||||
"
|
||||
set ignore-comments
|
||||
|
||||
some_recipe:
|
||||
# {{ error('foo') }}
|
||||
",
|
||||
)
|
||||
.run();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user