78 lines
2 KiB
Text
78 lines
2 KiB
Text
let tmpdir = mktemp -d webserver-update.XXXXXXXXXX
|
|
|
|
def update-npm [package: string] {
|
|
let metadata = http get $'https://registry.npmjs.org/($package)'
|
|
let version = $metadata.dist-tags.latest
|
|
let url = ($metadata.versions | get $version).dist.tarball
|
|
let tarball = ($tmpdir | path join "package.tgz")
|
|
|
|
http get $url | save -f $tarball
|
|
|
|
let hash = nix hash file $tarball
|
|
|
|
{
|
|
url: $url
|
|
version: $version
|
|
hash: $hash
|
|
}
|
|
}
|
|
|
|
def update-dependency [dependency_name: string] {
|
|
let replace_attribute_template = "
|
|
id: update-attribute
|
|
language: nix
|
|
utils:
|
|
is-attribute:
|
|
kind: string_fragment
|
|
inside:
|
|
kind: binding
|
|
stopBy: end
|
|
has:
|
|
field: attrpath
|
|
regex: '{attribute}'
|
|
|
|
rule:
|
|
matches: is-attribute
|
|
inside:
|
|
kind: binding
|
|
stopBy: end
|
|
has:
|
|
field: attrpath
|
|
regex: '{dependency_name}'
|
|
|
|
fix: '{replacement}'"
|
|
|
|
let template_data = (
|
|
$in | if ($in has url) {
|
|
[{attribute: url replacement: $in.url}]
|
|
} else { [] }
|
|
) ++ [
|
|
{attribute: version replacement: $in.version}
|
|
{attribute: hash replacement: $in.hash}
|
|
];
|
|
|
|
let ast_grep_rule = (
|
|
$template_data
|
|
| each { $in | insert dependency_name $dependency_name | format pattern $replace_attribute_template }
|
|
| str join "\n---\n"
|
|
)
|
|
|
|
ast-grep scan --update-all --inline-rules $ast_grep_rule package.nix
|
|
}
|
|
|
|
# Update bulma
|
|
let metadata = http get https://api.github.com/repos/jgthms/bulma/releases/latest
|
|
let bulma_prefetch = nix-prefetch-github --rev $metadata.tag_name --json jgthms bulma | from json
|
|
|
|
let bulma = $bulma_prefetch | select hash | insert version $metadata.name
|
|
let fontsource_scss = update-npm @fontsource-utils/scss
|
|
# let fontsource_arimo = update-npm @fontsource-variable/arimo
|
|
# let fontsource_nunito = update-npm @fontsource-variable/nunito
|
|
|
|
# print $bulma
|
|
print $fontsource_scss
|
|
# print $fontsource_arimo
|
|
# print $fontsource_nunito
|
|
|
|
$bulma | update-dependency bulma
|
|
$fontsource_scss | update-dependency fontsource-scss
|