code wiki / _hdl_build / nx_vroom_autodeploy_install.nx
nx_vroom_autodeploy_install.nx
buildroot/runtime/_hdl_build/nx_vroom_autodeploy_install.nx
about
nx_vroom_autodeploy_install.nx -- install + TEST the /video/ client auto-deploy script on the NAS
(operator 2026-06-23 "get the auto deploy going"). Investigation proved: install-video.sh manages the
daemon/nginx but NOT the client files, so there's no client auto-deploy -- this adds one. The script
pulls index.html+app.js from the Gitea bare repo (agents/invention-engine) + atomic-mv into the served
dir; runs as elderwesto (owns the dir + reads the bare repo); idempotent (only on head change). STEP 1
here = install (base64-decoded, no quoting risk) + force one deploy + a 2nd run to PROVE idempotent +
verify the fix markers survive. STEP 2 (separate) = add the /etc/crontab entry (needs sudo). No sudo here.
license_tier: ORIGINAL
dependencies 1 imports · 0 importers
imports: nx_syscalls.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| 11 | const INSTALL_CMD: *u8 = "echo 'IyEvYmluL3NoCiMgbnhfdmlkZW9fZGVwbG95LnNoIC0tIGF1dG8tZGVwbG95IC92aWRlby8gY2xpZW50IChpbmRleC5odG1sLCBhcHAuanMpIGZyb20gR2l0ZWEKIyBhZ2VudHMvaW52ZW50aW9uLWVuZ2luZSB0byB0aGUgbmdpbngtc2VydmVkIGRpciwgYXMgZWxkZXJ3ZXN0byAob3ducyB0aGUgZGlyICsgcmVhZHMKIyB0aGUgYmFyZSByZXBvKS4gSWRlbXBvdGVudCAoc3luY3Mgb25seSB3aGVuIHRoZSBicmFuY2ggaGVhZCBjaGFuZ2VzKSwgQVRPTUlDIG12IChuZ2lueAojIG5ldmVyIHNlZXMgYSBwYXJ0aWFsIGZpbGUpLCBsb2dnZWQuIE5pc2hpIHRlYW0gYXV0by1kZXBsb3ksIDIwMjYtMDYtMjMuCnNldCAtZQpCQVJFPS92b2x1bWUxL2RvY2tlci9naXRlYS9naXQvcmVwb3NpdG9yaWVzL2VsZGVyd2VzdG8vbmlzaGktY29yZS5naXQKRFNUPS92b2x1bWUxL2hvbWVzL2VsZGVyd2VzdG8vbmlzaGlob3N0L3NpdGVzL25pc2hpZmFtaWx5L3ZpZGVvClNVQj1ueGMyL3NpdGVzL25pc2hpZmFtaWx5L3ZpZGVvCkJSPWFnZW50cy9pbnZlbnRpb24tZW5naW5lClNUPS92b2x1bWUxL2hvbWVzL2VsZGVyd2VzdG8vbmlzaGlob3N0Ly5ueF92aWRlb19kZXBsb3kuc3RhdGUKTE9HPS92b2x1bWUxL2hvbWVzL2VsZGVyd2VzdG8vbmlzaGlob3N0L254X3ZpZGVvX2RlcGxveS5sb2cKSEVBRD0kKGdpdCAtYyBzYWZlLmRpcmVjdG9yeT0nKicgLS1naXQtZGlyPSIkQkFSRSIgcmV2LXBhcnNlICIkQlIiIDI+L2Rldi9udWxsIHx8IGVjaG8gbm9uZSkKWyAiJEhFQUQiID0gbm9uZSBdICYmIGV4aXQgMApMQVNUPSQoY2F0ICIkU1QiIDI+L2Rldi9udWxsIHx8IGVjaG8gbm9uZSkKWyAiJEhFQUQiID0gIiRMQVNUIiBdICYmIGV4aXQgMApXPSQobWt0ZW1wIC1kKQpnaXQgLWMgc2FmZS5kaXJlY3Rvcnk9JyonIC0tZ2l0LWRpcj0iJEJBUkUiIGFyY2hpdmUgIiRCUiIgIiRTVUIvaW5kZXguaHRtbCIgIiRTVUIvYXBwLmpzIiB8IHRhciAteCAtQyAiJFciCmZvciBmIGluIGluZGV4Lmh0bWwgYXBwLmpzOyBkbwogIFsgLXMgIiRXLyRTVUIvJGYiIF0gfHwgY29udGludWUKICBjcCAiJFcvJFNVQi8kZiIgIiREU1QvLiRmLm5ldyIKICBtdiAtZiAiJERTVC8uJGYubmV3IiAiJERTVC8kZiIKZG9uZQpybSAtcmYgIiRXIgpwcmludGYgJyVzJyAiJEhFQUQiID4gIiRTVCIKcHJpbnRmICdbJXNdIGRlcGxveWVkICVzIC0+IHNlcnZlZFxuJyAiJChkYXRlIC11ICslRlQlVFopIiAiJEhFQUQiID4+ICIkTE9HIgo=' | base64 -d > /volume1/homes/elderwesto/nishihost/nx_video_deploy.sh; chmod 755 /volume1/homes/elderwesto/nishihost/nx_video_deploy.sh; echo INSTALLED:; ls -l /volume1/homes/elderwesto/nishihost/nx_video_deploy.sh; echo FORCE_TEST:; rm -f /volume1/homes/elderwesto/nishihost/.nx_video_deploy.state; sh /volume1/homes/elderwesto/nishihost/nx_video_deploy.sh; echo rc=$?; echo RUN2_NOOP:; sh /volume1/homes/elderwesto/nishihost/nx_video_deploy.sh; echo rc=$?; echo MARKERS:; grep -c 'tile self' /volume1/homes/elderwesto/nishihost/sites/nishifamily/video/app.js; grep -c 'scaleX(-1)' /volume1/homes/elderwesto/nishihost/sites/nishifamily/video/index.html; echo STATE:; cat /volume1/homes/elderwesto/nishihost/.nx_video_deploy.state; echo; echo LOG:; tail -2 /volume1/homes/elderwesto/nishihost/nx_video_deploy.log; echo END\n" |
functions
| 13 | func slen(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n } |
| 14 | func pw(s: *u8) -> i64 { sys_write(1,s,slen(s)); return 0 } |
| 15 | func pn(v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48 as u8;k=1} while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1} var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1} sys_write(1,bb,k); return 0 } |
| 17 | func main() -> i64 |