use nu_protocol::ast::ExternalArgument;
use super::{
CommandEffects, ExternEffect,
predicates::{always, has_flag},
};
use crate::{context::LintContext, effect::CommonEffect};
fn tar_modifies_fs(context: &LintContext, args: &[ExternalArgument]) -> bool {
has_flag(
args,
context,
&["-x", "--extract", "--get", "-c", "--create"],
)
}
fn tar_has_streaming(context: &LintContext, args: &[ExternalArgument]) -> bool {
has_flag(args, context, &["-v", "--verbose"])
}
pub const COMMANDS: &[CommandEffects] = &[
(
"tar",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, tar_modifies_fs),
(ExternEffect::SlowStreamingOutput, tar_has_streaming),
],
),
(
"zip",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"unzip",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"gzip",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"gunzip",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"bzip2",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"bunzip2",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"xz",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"unxz",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"zstd",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"unzstd",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"7z",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"7za",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"rar",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
(
"unrar",
&[
(
ExternEffect::CommonEffect(CommonEffect::FailsInNormalCircumstances),
always,
),
(ExternEffect::ModifiesFileSystem, always),
],
),
];