mirror of
https://forge.katzen.cafe/schrottkatze/nix-configs.git
synced 2025-10-27 15:55:15 +01:00
49 lines
955 B
Nu
Executable file
49 lines
955 B
Nu
Executable file
#!/usr/bin/env nu
|
|
|
|
def main [] {}
|
|
|
|
def "main find" [
|
|
file: string
|
|
] {
|
|
open $file --raw
|
|
| lines
|
|
| enumerate
|
|
| update item {|it| $it.item | parse '{current}# :{name}:-{template}-:#' }
|
|
| where {|it| $it.item | is-not-empty }
|
|
| flatten -a
|
|
| rename -c { index: line }
|
|
| to json
|
|
}
|
|
|
|
# TODO: support mroe then single template
|
|
def "main edit" [
|
|
file: path
|
|
name: string
|
|
to: string
|
|
--preview
|
|
] {
|
|
let template = main find $file
|
|
| from json
|
|
| where name == $name
|
|
| first;
|
|
let new = $template.template
|
|
| str replace $"%($name)%" $to
|
|
| append $" # :($template.name):-($template.template)-:#"
|
|
| str join;
|
|
let rest = open $file --raw
|
|
| lines
|
|
| enumerate
|
|
| where index != $template.line
|
|
| append { index: $template.line, item: $new}
|
|
| sort-by index
|
|
| reject index
|
|
| get item
|
|
| append ""
|
|
| str join "\n";
|
|
|
|
if $preview {
|
|
print $rest
|
|
} else {
|
|
$rest | save -f $file
|
|
}
|
|
}
|