use nu_protocol::ast::ExternalArgument;
use super::{
CommandEffects, ExternEffect,
predicates::{always, has_flag},
};
use crate::{context::LintContext, effect::CommonEffect};
fn sed_has_inplace(context: &LintContext, args: &[ExternalArgument]) -> bool {
has_flag(args, context, &["-i", "--in-place"])
}
pub const COMMANDS: &[CommandEffects] = &[
(
"cat",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"head",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"tail",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"grep",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"awk",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"sed",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, sed_has_inplace),
(
ExternEffect::CommonEffect(CommonEffect::MayCauseDataLoss),
sed_has_inplace,
),
],
),
(
"sort",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"uniq",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"wc",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"cut",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"tr",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"xargs",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"diff",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"patch",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"rg",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"fd",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
("bat", &[]),
(
"sd",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"jq",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"yq",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"mlr",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
(
"csvtool",
&[(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
)],
),
("less", &[(ExternEffect::NoDataInStdout, always)]),
("more", &[(ExternEffect::NoDataInStdout, always)]),
];