settings.rs

 1use std::ops::Range;
 2use tree_sitter::{Query, QueryMatch};
 3
 4use crate::MigrationPatterns;
 5use crate::patterns::SETTINGS_ASSISTANT_TOOLS_PATTERN;
 6
 7pub const SETTINGS_PATTERNS: MigrationPatterns = &[(
 8    SETTINGS_ASSISTANT_TOOLS_PATTERN,
 9    replace_bash_with_terminal_in_profiles,
10)];
11
12fn replace_bash_with_terminal_in_profiles(
13    contents: &str,
14    mat: &QueryMatch,
15    query: &Query,
16) -> Option<(Range<usize>, String)> {
17    let tool_name_capture_ix = query.capture_index_for_name("tool_name")?;
18    let tool_name_range = mat
19        .nodes_for_capture_index(tool_name_capture_ix)
20        .next()?
21        .byte_range();
22    let tool_name = contents.get(tool_name_range.clone())?;
23
24    if tool_name != "bash" {
25        return None;
26    }
27
28    Some((tool_name_range, "terminal".to_string()))
29}