diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-06-02 12:42:07 +0200 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-06-02 12:42:49 +0200 |
commit | 9545aa2e0305ba970380f358eb043cdf13b85ac7 (patch) | |
tree | 9d723121172b9cf41aa654a4fd3fe162778e14fd /pkgs/by-name/ts/tskm/src/interface/input/handle.rs | |
parent | pkgs/tskm/input/handle: Use types to contain parsing and dry code (diff) | |
download | nixos-config-9545aa2e0305ba970380f358eb043cdf13b85ac7.zip |
pkgs/tskm/cli::input::file: Support adding default tags to file import prime
Diffstat (limited to 'pkgs/by-name/ts/tskm/src/interface/input/handle.rs')
-rw-r--r-- | pkgs/by-name/ts/tskm/src/interface/input/handle.rs | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/pkgs/by-name/ts/tskm/src/interface/input/handle.rs b/pkgs/by-name/ts/tskm/src/interface/input/handle.rs index 9c39cfef..09827fca 100644 --- a/pkgs/by-name/ts/tskm/src/interface/input/handle.rs +++ b/pkgs/by-name/ts/tskm/src/interface/input/handle.rs @@ -9,6 +9,7 @@ // If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. use std::{ + collections::HashSet, fs, process, str::FromStr, thread::{self, sleep}, @@ -43,10 +44,23 @@ pub fn handle(command: InputCommand) -> Result<()> { })?; } } - InputCommand::File { file } => { - let file = fs::read_to_string(file)?; - for line in file.lines() { - let input = Input::from_str(line)?; + InputCommand::File { file, tags } => { + let file = fs::read_to_string(&file) + .with_context(|| format!("Failed to read input file '{}'", file.display()))?; + + let mut tag_set = HashSet::with_capacity(tags.len()); + for tag in tags { + tag_set.insert(tag); + } + + for line in file.lines().map(str::trim) { + if line.is_empty() { + continue; + } + + let mut input = Input::from_str(line)?; + input.tags = input.tags.union(&tag_set).cloned().collect(); + input.commit().with_context(|| { format!("Failed to add input ('{input}') to the input storage.") })?; |