https://github.com/pkgxdev/setup
GitHub Action and `curl pkgx.sh | sh`
https://github.com/pkgxdev/setup
github-actions installer-script
Last synced: 3 months ago
JSON representation
GitHub Action and `curl pkgx.sh | sh`
- Host: GitHub
- URL: https://github.com/pkgxdev/setup
- Owner: pkgxdev
- License: apache-2.0
- Created: 2022-02-10T15:37:49.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-04-07T14:08:56.000Z (3 months ago)
- Last Synced: 2025-04-09T20:09:05.379Z (3 months ago)
- Topics: github-actions, installer-script
- Language: Shell
- Homepage:
- Size: 6.88 MB
- Stars: 138
- Watchers: 9
- Forks: 49
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README

* This repository provides the `pkgx` GitHub Action.
* It also hosts [`installer.sh`](./installer.sh); the result of `curl pkgx.sh`.# GitHub Action
```yaml
- uses: pkgxdev/setup@v4
```Installs the latest version of `pkgx`.
> [!NOTE]
>
> * `v3` & `v4` default to pkgx^2
> * `v2` defaults to pkgx^1See [`action.yml`] for all inputs and outputs, but here’s the usual ones:
```yaml
- uses: pkgxdev/setup@v4
with:
+: [email protected]
[email protected] # we understand colloquial names, generally just type what you know
clang # versions aren’t necessary if you don’t care
```The easiest way to know if it will work in the action is to try it locally on your computer:
```
$ pkgx +rust
# if there’s output, we got it
```> See [`@pkgxdev/dev`] to run the `dev` command in a GitHub Actions compatible manner
## Should you Cache `~/.pkgx`?
No. pkgx packages are just tarballs. Caching is just a tarball. You’ll likely
just slow things down.## Version History
* `v4` defaults to `pkgx`^2, uses node^20 and doesn’t install any pre-reqs on Linux†
* `v3` defaults to `pkgx`^2 and uses node^20
* `v2` defaults to `pkgx`^1 and uses node^20
* `v1` defaults to `pkgx`@latest and uses node^16
* `v0` should not be used> † `pkgx` requires glibc>=2.28, libgcc, libstdc++ and libatomic. Generally
> images come installed with these. If you are building binaries you may need
> the `-dev` versions of these packages also.
# The `pkgx` Installer
To install `pkgx`:
```sh
$ curl https://pkgx.sh | sh# - installs `pkgx` & `pkgm` to `/usr/local/bin`
# - if both are already installed, does an update check
```Or on Windows:
```ps1
$ irm https://pkgx.sh | iex
# - installs `pkgx.exe` to `$env:ProgramFiles/pkgx`
# - adds it to your system PATH
```## Temporary Sandboxes
To use `pkgx` to run a command in a temporary sandbox:
```sh
$ curl -Ssf https://pkgx.sh | sh -s -- gum spin -- sleep 5# - if pkgx is installed, uses that installation to run gum
# - if pkgx *isn’t* installed, downloads pkgx to a temporary location
# - if pkgx *isn’t* installed, packages are also cached to a temporary location
```> This usage of our installer can be useful for demonstrative purposes in
> READMEs and gists.This syntax is easier to remember:
```sh
sh <(curl -L pkgx.sh) gum spin -- sleep 5
```> There is the **notable caveat** that the above easier syntax will not work with bash <4
> which is the bash that comes with macOS. Even though macOS has defaulted to
> zsh for years it is still relatively easy for users to end up in a situation
> where bash is the shell interpreting your commands. **Your call**.
>
> Additionally, use of `-L` is subject to man-in-the-middle attacks.
> Again **your call**.[`action.yml`]: ./action.yml
[`@pkgxdev/dev`]: https://github.com/pkgxdev/dev