{"id":13541331,"url":"https://github.com/fj0r/npup","last_synced_at":"2025-04-02T08:31:02.788Z","repository":{"id":211064142,"uuid":"728102797","full_name":"fj0r/npup","owner":"fj0r","description":null,"archived":false,"fork":false,"pushed_at":"2023-12-16T08:16:26.000Z","size":29,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-03T06:33:09.594Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Nushell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fj0r.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-12-06T08:30:29.000Z","updated_at":"2024-10-28T08:19:02.000Z","dependencies_parsed_at":"2023-12-16T09:46:41.548Z","dependency_job_id":null,"html_url":"https://github.com/fj0r/npup","commit_stats":null,"previous_names":["fj0r/npup"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fj0r%2Fnpup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fj0r%2Fnpup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fj0r%2Fnpup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fj0r%2Fnpup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fj0r","download_url":"https://codeload.github.com/fj0r/npup/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246781975,"owners_count":20832946,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T10:00:44.072Z","updated_at":"2025-04-02T08:31:02.434Z","avatar_url":"https://github.com/fj0r.png","language":"Nushell","readme":"# nushell puppet\n\n## Features\n- the metadata declaration in a separate `manifest.yml`\n- declares dependency in `pkgs` fields\n    - require: other npup\n    - use: npup for build phase\n    - include: os, defs, pip, npm, cargo, etc\n- custom package declaration in `defs` field\n    - update version number in `data.yml '\n    - support download, cloning, shell, etc\n- support cache and predown\n- there are plans to support deletion\n\n## Quick start\n\nupdate version of asset that need to download\n```sh\nnpup update\n```\n\ndownload asset and upload\n```\nnpup download --cache http://file.s/npup\n```\n\ngenerate sh script\n```sh\nnpup gensh 'debian' --clean nu nvim exec http\n```\n\nexecute script\n```sh\nnpup setup --clean nu nvim exec http\n```\n\n## Purpose\n\nthe original purpose was to replace the shell script in `Dockerfile`, because shell script was unstructured. it can also be used to manage the operating system.\n\nit is still generating shell scripts, which has the advantage of placing scripts and assets on the http site, then you can setup system through curl without nushell, like `curl http://npup-site/setup/a,b,c,d | sh` . by adding similar configurations to openresty\n```\nlocation ~ /setup/(.*) {\n    set $target $1;\n    content_by_lua_block {\n        local shell = require \"resty.shell\"\n        local host = ngx.var.scheme..\"://\".. ngx.var.http_host\n        local cmd = 'nu npup.nu setup --config ' .. host\n        local ok, stdout, stderr, reason, status = shell.run(cmd..ngx.var.target, nil, 3000, 409600)\n        if ok then\n            ngx.say(stdout)\n            ngx.exit(200)\n        else\n            ngx.say(stderr)\n            ngx.exit(500)\n        end\n    }\n}\n```\n\u003e http is supported as a cache and assets can be downloaded at once\n\nand there's a very important feature that manifest can be fully customised, for example.\n````\n- git:\n    url: https://github.com/your/nushell-configuration.git\n    target: /etc/nushell\n````\nit's a way to customize a package management system that suits you perfectly.\n","funding_links":[],"categories":["Scripts"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffj0r%2Fnpup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffj0r%2Fnpup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffj0r%2Fnpup/lists"}