use super::rule_registry::RuleMetadata;
use crate::linter::shell_compatibility::ShellCompatibility;
use std::collections::HashMap;
pub(crate) fn register_more(registry: &mut HashMap<&'static str, RuleMetadata>) {
registry.insert(
"SC2252",
RuleMetadata {
id: "SC2252",
name: "You probably wanted && here, not a second [",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2253",
RuleMetadata {
id: "SC2253",
name: "Quote the RHS of = in [[ ]] to prevent glob matching",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2254",
RuleMetadata {
id: "SC2254",
name: "Quote expansions in case patterns to prevent word splitting",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2255",
RuleMetadata {
id: "SC2255",
name: "This [ .. ] is true whenever str is non-empty",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2256",
RuleMetadata {
id: "SC2256",
name: "Prefer -n/-z over comparison with empty string",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2257",
RuleMetadata {
id: "SC2257",
name: "Prefer explicit -n to check non-empty string",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2258",
RuleMetadata {
id: "SC2258",
name: "Prefer explicit -n to check output",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2259",
RuleMetadata {
id: "SC2259",
name: "This assumes $RANDOM is always positive",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2260",
RuleMetadata {
id: "SC2260",
name: "Fix $((..)) arithmetic so [[ ]] can interpret it",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2261",
RuleMetadata {
id: "SC2261",
name: "Unquoted operand will be glob expanded",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2262",
RuleMetadata {
id: "SC2262",
name: "This command may need quoting (context sensitive)",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2263",
RuleMetadata {
id: "SC2263",
name: "Use cd ... || exit to handle cd failures",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2264",
RuleMetadata {
id: "SC2264",
name: "Prefer [ p ] && [ q ] over [ p -a q ]",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2265",
RuleMetadata {
id: "SC2265",
name: "Use ${var:?} to ensure this never expands to /* /",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2266",
RuleMetadata {
id: "SC2266",
name: "Prefer [ p ] || [ q ] over [ p -o q ]",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2267",
RuleMetadata {
id: "SC2267",
name: "Use ${var:?} to ensure variable is set",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2268",
RuleMetadata {
id: "SC2268",
name: "Avoid x-prefix in comparisons",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2269",
RuleMetadata {
id: "SC2269",
name: "This regex should be put in a variable",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2270",
RuleMetadata {
id: "SC2270",
name: "Prefer getopts over manual argument parsing",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2271",
RuleMetadata {
id: "SC2271",
name: "Prefer printf over echo for non-trivial formatting",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2272",
RuleMetadata {
id: "SC2272",
name: "This is a constant, not a variable",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2273",
RuleMetadata {
id: "SC2273",
name: "Use ${var:?} if this should never be empty",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2274",
RuleMetadata {
id: "SC2274",
name: "Quote the RHS of = in [ ] to prevent globbing",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2275",
RuleMetadata {
id: "SC2275",
name: "Use ${var} to avoid field splitting",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2276",
RuleMetadata {
id: "SC2276",
name: "Prefer explicit -n to check non-empty",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2277",
RuleMetadata {
id: "SC2277",
name: "Use || instead of -o for test operators",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2278",
RuleMetadata {
id: "SC2278",
name: "Use [[ ]] instead of deprecated syntax",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2279",
RuleMetadata {
id: "SC2279",
name: "Use [[ < instead of [ <",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2280",
RuleMetadata {
id: "SC2280",
name: "Remove redundant (..) or use 'if .. then'",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2281",
RuleMetadata {
id: "SC2281",
name: "Don't use $@ in double quotes, it breaks word splitting",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2282",
RuleMetadata {
id: "SC2282",
name: "Use ${var:?} to require variables to be set",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2283",
RuleMetadata {
id: "SC2283",
name: "Remove extra spaces after ! in test expressions",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2284",
RuleMetadata {
id: "SC2284",
name: "Use ${var:+value} for conditional value assignment",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2285",
RuleMetadata {
id: "SC2285",
name: "Remove $ from variables in arithmetic contexts",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2286",
RuleMetadata {
id: "SC2286",
name: "Prefer mapfile/readarray over read loops",
compatibility: ShellCompatibility::NotSh, },
);
registry.insert(
"SC2287",
RuleMetadata {
id: "SC2287",
name: "Use [[ -v var ]] to check if variable is set",
compatibility: ShellCompatibility::NotSh, },
);
registry.insert(
"SC2288",
RuleMetadata {
id: "SC2288",
name: "Use true/false directly instead of [ 1 = 1 ]",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2289",
RuleMetadata {
id: "SC2289",
name: "Use ${#var} instead of expr length for string length",
compatibility: ShellCompatibility::Universal,
},
);
registry.insert(
"SC2290",
RuleMetadata {
id: "SC2290",
name: "Remove $ from array index: ${array[i]} not ${array[$i]}",
compatibility: ShellCompatibility::NotSh, },
);
registry.insert(
"SC2291",
RuleMetadata {
id: "SC2291",
name: "Use [[ ! -v var ]] to check if variable is unset",
compatibility: ShellCompatibility::NotSh, },
);
}