feat(webserver): Vendor and reimplement main pages in leptos
This commit is contained in:
parent
aeba7301b0
commit
59fdb37222
25 changed files with 4862 additions and 176 deletions
88
pkgs/packages/webserver/update.nu
Normal file
88
pkgs/packages/webserver/update.nu
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
const self = "pkgs/packages/webserver/package.nix"
|
||||
let tmpdir = mktemp -d webserver-update.XXXXXXXXXX
|
||||
|
||||
let dependencies = {
|
||||
fontsource-scss: (prefetch-npm @fontsource-utils/scss)
|
||||
fontsource-arimo: (prefetch-npm @fontsource-variable/arimo)
|
||||
fontsource-nunito: (prefetch-npm @fontsource-variable/nunito)
|
||||
|
||||
bulma: (prefetch-github jgthms bulma)
|
||||
hack-font: (prefetch-github source-foundry Hack)
|
||||
}
|
||||
|
||||
cd (git rev-parse --show-toplevel)
|
||||
|
||||
$dependencies | items {|name, metadata| $metadata | update-dependency $name }
|
||||
|
||||
rm -r $tmpdir
|
||||
|
||||
cd (dirname $self)
|
||||
cargo update
|
||||
|
||||
def prefetch-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 prefetch-github [owner: string, repo: string] {
|
||||
let metadata = http get $'https://api.github.com/repos/($owner)/($repo)/releases/latest'
|
||||
let prefetch = nix-prefetch-github --rev $metadata.tag_name --json $owner $repo | from json
|
||||
$prefetch | select hash | insert version ($metadata.name | str trim --left --char v)
|
||||
}
|
||||
|
||||
def update-dependency [dependency_name: string] {
|
||||
const 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
|
||||
not:
|
||||
regex: '{replacement}'
|
||||
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 $self
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue