Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ spell out exactly what to run.
|---|---|---|
| Already use Homebrew for dev tooling on macOS / Linux | **Homebrew** | One command, auto-updates with `brew upgrade`, lives outside any Node install, uninstalls cleanly with `brew uninstall`. |
| Already use Scoop on Windows | **Scoop** | Same shape as Homebrew on the Windows side — `scoop update nodeup` keeps it current, no admin shell needed. |
| Already manage dev tools via `npm install -g` and want a one-liner | **npm wrapper** | No new package manager to set up; the install travels with the Node version it's installed against. Slight catch: a `nodeup` upgrade ships when the wrapper version bumps. |
| Already manage dev tools via `npm install -g` and want a one-liner | **npm wrapper** (`nodeup-cli`) | No new package manager to set up; the install travels with the Node version it's installed against. Slight catch: a `nodeup` upgrade ships when the wrapper version bumps. The npm name is `nodeup-cli` because `nodeup` is taken. |
| Are blocked from system package installs but can `npm i -g` | **npm wrapper** | Sandboxed / corp-locked-down machines often allow npm globals where they block system installers. |
| Maintain `nodeup` itself, or want a version pinned to a specific tag without any postinstall network step | **Direct binary download** | You choose the exact release; no installer, no auto-update, no Node coupling. Best for reproducible CI installs. |
| Are a Go developer hacking on `nodeup` and want the latest commit | **`go install`** | Pulls the current source and builds it locally. Fastest iteration loop for contributors. |
Expand Down Expand Up @@ -103,11 +103,17 @@ auto-managed by GoReleaser from `scoop: {}` in `.goreleaser.yaml`.
#### npm wrapper (any platform with Node ≥ 14)

```bash
npm install -g nodeup
npm install -g nodeup-cli
```

Best for: anyone who treats their global npm install as the source of
truth for CLI tools — typical in JavaScript / TypeScript projects.
The wrapper is published as **`nodeup-cli`**, not `nodeup`, because
the bare `nodeup` name on npmjs.com is owned by an unrelated,
dormant 2015 package (`romanmt/nodeup` — "a simple cluster
implementation for node"). The downloaded binary still installs
as the `nodeup` CLI on your `$PATH`.

Best for: anyone who treats their global npm install as the source
of truth for CLI tools — typical in JavaScript / TypeScript projects.
The wrapper is a thin downloader (`scripts/install.js`) that fetches
the matching static Go binary from the GitHub release tagged by this
package's `binaryVersion` field. See
Expand Down
14 changes: 10 additions & 4 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ exactly what to run.
|---|---|---|---|---|---|
| **Homebrew** | `brew install dipto0321/tap/nodeup` | Yes — `brew upgrade` | `/opt/homebrew/bin/` (macOS) or `/home/linuxbrew/.linuxbrew/bin/` (Linux) | macOS / Linux devs already using Homebrew for tooling | You don't have Homebrew and don't want to set it up just for one tool |
| **Scoop** | `scoop install nodeup` (after adding the bucket) | Yes — `scoop update` | `%USERPROFILE%\scoop\apps\nodeup\` | Windows devs already using Scoop | You prefer winget / Chocolatey — neither is wired up today |
| **npm wrapper** | `npm install -g nodeup` | Semi — `npm update -g nodeup` only when a wrapper version bumps | Inside a Node install, on your global `node_modules/` path | JS devs who already treat `npm i -g` as the source of truth for CLIs; locked-down machines that block system installers but allow npm globals | You want a CLI that lives completely outside any Node install, or you want to track Go-binary releases the moment they tag (the wrapper lags by one publish) |
| **npm wrapper** | `npm install -g nodeup-cli` | Semi — `npm update -g nodeup-cli` only when a wrapper version bumps | Inside a Node install, on your global `node_modules/` path | JS devs who already treat `npm i -g` as the source of truth for CLIs; locked-down machines that block system installers but allow npm globals | You want a CLI that lives completely outside any Node install, or you want to track Go-binary releases the moment they tag (the wrapper lags by one publish). **Note**: the package is `nodeup-cli`, not `nodeup` — `nodeup` is taken on npmjs.com. |
| **Direct binary** | `curl … \| tar xz` | No — you re-run to update | Wherever you put the extracted binary | CI pipelines, reproducible installs, lock-down environments without npm or brew | You want auto-updates; you'll forget to re-run |
| **From source** | `go install ./cmd/nodeup@latest` | No — re-run against a new tag | `$GOBIN` or `$GOPATH/bin` | `nodeup` contributors and Go developers who want HEAD | Anyone who doesn't have Go installed and isn't trying to hack on the tool |

Expand Down Expand Up @@ -68,9 +68,15 @@ holds the manifest and is auto-pushed by GoReleaser.
### npm wrapper (any platform with Node ≥ 14)

```bash
npm install -g nodeup
npm install -g nodeup-cli
```

The package is published as **`nodeup-cli`**, not `nodeup`, because
the bare `nodeup` name on npmjs.com is owned by an unrelated,
dormant 2015 package (`romanmt/nodeup` — "a simple cluster
implementation for node"). The downloaded binary still installs as
the `nodeup` CLI on your `$PATH`.

**Who this is for:** developers who already treat `npm install -g` as
the canonical way to install CLIs. Common in JavaScript-heavy
projects where the team's onboarding script already runs `npm i -g
Expand All @@ -81,7 +87,7 @@ blocked but npm globals are allowed.

- **Slight version lag.** The wrapper pins to the Go-binary version
in its `binaryVersion` field. A new Go release needs a new wrapper
publish — `npm update -g nodeup` only gets you a new Go binary
publish — `npm update -g nodeup-cli` only gets you a new Go binary
after the wrapper version that pins to it ships. To jump to a
brand-new release ahead of that, use a direct-binary install.
- **Coupled to a Node install.** The wrapper and binary live inside
Expand Down Expand Up @@ -161,7 +167,7 @@ and uninstalls consistently:

- **Homebrew** owns upgrades → use `brew upgrade nodeup`.
- **Scoop** owns upgrades → use `scoop update nodeup`.
- **npm** owns upgrades → use `npm update -g nodeup`.
- **npm** owns upgrades → use `npm update -g nodeup-cli`.
- **Direct binary** owns upgrades → re-run the curl one-liner (or
pin a specific tag in CI).
- **From source** owns upgrades → `go install -u
Expand Down
10 changes: 6 additions & 4 deletions docs/release-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,12 @@ cd ..

**Required once, not per release:**

- An `npmjs.com` account with publish rights on the `nodeup` package
name. The package name must be claimed on npm before the first
publish — `npm publish` will fail with `You do not have permission
to publish "nodeup"` if it isn't.
- An `npmjs.com` account with publish rights on the `nodeup-cli`
package name. The bare `nodeup` name is owned by an unrelated
2015 package (`romanmt/nodeup`, "a simple cluster implementation
for node") so we ship under `nodeup-cli`. `npm publish` will fail
with `You do not have permission to publish "nodeup-cli"` if the
name isn't claimed yet on your account.
- **2FA enabled** on the npm account. Publishing to npmjs.com
requires 2FA; configure it under
`https://www.npmjs.com/settings/<your-username>/security`.
Expand Down
22 changes: 14 additions & 8 deletions nodeup-npm/README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
# nodeup (npm wrapper)
# nodeup-cli (npm wrapper)

> Thin npm wrapper around the [`nodeup`](https://github.com/dipto0321/nodeup)
> Go binary. Installs the right static binary for your OS/arch on
> `npm install -g` and exposes `nodeup` on your `$PATH`.
> `npm install -g nodeup-cli` and exposes `nodeup` on your `$PATH`.

This directory is the **npm distribution channel** for `nodeup`. It does
**not** contain the Go tool itself — it downloads the matching binary
from the [GitHub release](https://github.com/dipto0321/nodeup/releases)
that this package's `binaryVersion` field points at.
This directory is the **npm distribution channel** for `nodeup`. The
package is published as **`nodeup-cli`** because the bare `nodeup`
name on npmjs.com is owned by an unrelated, dormant 2015 package
(`romanmt/nodeup`, "a simple cluster implementation for node").
The downloaded binary still ships as the `nodeup` CLI you know.

It does **not** contain the Go tool itself — it downloads the
matching binary from the [GitHub
release](https://github.com/dipto0321/nodeup/releases) that this
package's `binaryVersion` field points at.

## Install

```bash
npm install -g nodeup
npm install -g nodeup-cli
nodeup version
```

Expand Down Expand Up @@ -67,7 +73,7 @@ release bump ship in the same commit.
## Updating

```bash
npm update -g nodeup
npm update -g nodeup-cli
```

You get a new wrapper version. If that wrapper pins a newer
Expand Down
2 changes: 1 addition & 1 deletion nodeup-npm/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "nodeup",
"name": "nodeup-cli",
"version": "1.0.0",
"description": "Automated Node.js version upgrade + global package migration CLI. Static Go binary wrapped for npm distribution.",
"license": "MIT",
Expand Down
Loading