Skip to content

Conversation

@kamwoods
Copy link
Member

Replace username package with native os.userInfo()

The username package (v7.0.0) is ESM-only and depends on execa, which causes bundling issues with @yao-pkg/pkg when building the standalone executable. The execa dependency was not being included in the pkg snapshot filesystem, resulting in:

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'execa'

Since username was only used to get the current user as a fallback when SUDO_USER is not set, replace it with Node's built-in os.userInfo().username which provides the same functionality without external dependencies.

Preliminary (testing) support for 26.04LTS (Resolute). Only for use in development testing with daily builds.

Replace username package with native os.userInfo()

The username package (v7.0.0) is ESM-only and depends on execa,
which causes bundling issues with @yao-pkg/pkg when building the
standalone executable. The execa dependency was not being included
in the pkg snapshot filesystem, resulting in:

  Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'execa'

Since username was only used to get the current user as a fallback
when SUDO_USER is not set, replace it with Node's built-in
os.userInfo().username which provides the same functionality
without external dependencies.

Preliminary (testing) support for 26.04LTS (Resolute). Only
for use in development testing with daily builds.
Automates the build process for bitcurator-cli using Node 24 on
ubuntu-latest. The workflow:

- Runs on pushes/PRs to main, version tags, and manual dispatch
- Builds the Linux executable using @yao-pkg/pkg
- Generates SHA256 checksum and GPG signature (.sha256.asc)
- Uploads build artifacts for all runs
- Creates GitHub Releases automatically when version tags are pushed

Requires GPG_PRIVATE_KEY and GPG_PASSPHRASE repository secrets
for signing.
Properly fetches tags with error suppression

Replicates the .ci/version logic inline, handling these cases:
- Exact tag match (e.g., v3.1.0) → outputs 3.1.0
- Commits after a tag → outputs 3.1.0.5.g20ed9a6 (version.commits.grevision)
- No tags exist → outputs 3.1.0.0.g20ed9a6 (falls back to 0 commits)

Generates config.json with just the version field, matching existing format
Copy link
Contributor

@digitalsleuth digitalsleuth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, approved.

@digitalsleuth digitalsleuth merged commit 31411e5 into main Jan 14, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants