diff --git a/install/install.nu b/install/install.nu index 6b2f6e1..6dd900f 100755 --- a/install/install.nu +++ b/install/install.nu @@ -112,10 +112,35 @@ def main [] { } mkdir $data_dir - cp -r $templates_src $"($data_dir)/templates" - cp -r $public_src $"($data_dir)/public" - print $"✓ assets ($data_dir)/" + let asset_dirs = [$templates_src $public_src] + mut updated = 0 + mut skipped = 0 + + for asset_dir in $asset_dirs { + let dir_name = ($asset_dir | path basename) + let dest_base = $"($data_dir)/($dir_name)" + mkdir $dest_base + for src_file in (glob $"($asset_dir)/**/*" | where { |f| ($f | path type) == "file" }) { + let rel = ($src_file | str replace $"($asset_dir)/" "") + let dest_file = $"($dest_base)/($rel)" + let dest_parent = ($dest_file | path dirname) + mkdir $dest_parent + let needs_update = if ($dest_file | path exists) { + (open --raw $src_file | hash sha256) != (open --raw $dest_file | hash sha256) + } else { + true + } + if $needs_update { + cp $src_file $dest_file + $updated = $updated + 1 + } else { + $skipped = $skipped + 1 + } + } + } + + print $"✓ assets ($data_dir)/ updated=($updated) unchanged=($skipped)" # ── 5. Config skeleton + global NATS topology ───────────────────────────── let streams_default = $"($repo_root)/install/resources/streams.json"