particle-os-modules/modules/os-release/os-release.nu
Gerald Pinder 1e6588c5dc
feat: OS Release Module (#417)
* feat: OS Release Module

* docs: clearer description

* chore: update shortdesc to match new description

---------

Co-authored-by: xyny <60004820+xynydev@users.noreply.github.com>
2025-07-14 12:51:21 -04:00

34 lines
1 KiB
Text

#!/usr/bin/env nu
def main [config: string]: nothing -> nothing {
let config = $config
| from json
| default {} properties
mut os_release = open --raw /etc/os-release
| lines
| parse '{key}={value}'
| transpose --ignore-titles -dr
| str trim -c '"'
| str trim -c "'"
print $'(ansi green)Original release:(ansi reset)'
print $os_release
for $item in ($config.properties | transpose key value) {
if $item.key in $os_release {
print $'(ansi green)Updating (ansi cyan)($item.key)(ansi green) with value (ansi yellow)($item.value)(ansi reset)'
$os_release = $os_release | update $item.key $item.value
} else {
print $'(ansi green)Adding (ansi cyan)($item.key)(ansi green) with value (ansi yellow)($item.value)(ansi reset)'
$os_release = $os_release | insert $item.key $item.value
}
}
print $'(ansi green)New release:(ansi reset)'
print $os_release
$os_release
| transpose key value
| each { $'($in.key)="($in.value)"' }
| str join "\n"
| save --force /etc/os-release
}