Files
ansiblings/cubes/apt/install
Benjamin Diedrichsen 587ff2cf47
Publish snapshot / snapshot (push) Failing after 1m58s
Add release pipeline and upgrade toolchain to TypeScript 7
Publishing infrastructure
- Three Gitea workflows: ci.yml (PRs, non-main pushes), publish-snapshot.yml
  (main -> Gitea under dist-tag @main) and release.yml (tags -> Gitea + npmjs)
- Tag-driven releases as <package-dir>-v<version>; the manifest stays the
  source of truth and release.yml refuses to run if tag and manifest disagree
- Every publish is idempotent: each step checks the registry first, so a run
  that fails on the second registry can simply be re-run
- Hard coverage gate (85% branches) shared by CI, the pre-push hook and local
  runs, since the thresholds live in vitest.config.ts rather than a CI flag
- README.PUBLISH.md documents the whole mechanism

Toolchain
- TypeScript 7 native compiler; drop tsgo and ts-node, use tsx for dev runs
- Biome 1.9 -> 2.x, Vitest 1 -> 4, zod 3 -> 4, inquirer 8 -> 14, pnpm 11.17.0
- Replace inquirer-checkbox-plus-prompt, which is peer-capped at inquirer <9,
  with enquirer's AutoComplete; the CubeSelection contract is unchanged
- Stand in for zod 4's removed z.AnyZodObject with a local AnyObjectSchema

Repo hygiene
- Stop tracking dist/; ignore coverage/, *.tsbuildinfo, .npmrc* and release.json
- Drop package-lock.json in favour of pnpm-lock.yaml

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 15:17:14 +02:00
..
2026-07-27 13:09:00 +02:00
2026-07-27 13:09:00 +02:00

apt

Install packages with apt

Purpose

This is a generic cube for installing custom packages via the apt package manager. It's useful when you need to install specific packages that aren't covered by other specialized cubes.

What This Cube Does

  1. Optionally updates the apt package cache
  2. Installs the specified space-separated list of packages

Configuration

Parameters

  • UPDATE (boolean, default: true)

    • Update package cache before installing
    • Set to false to skip updating and only install packages
  • PACKAGES (string, default: '')

    • Space-separated list of packages to install
    • Example: "vim git htop curl wget"

Dependencies

None - this cube can run standalone.

Use Cases

Install development tools:

PACKAGES="vim git htop tmux"

Install database clients:

PACKAGES="postgresql-client mysql-client redis-tools"

Install system utilities:

PACKAGES="curl wget jq unzip zip"

Example

When deploying this cube, you would typically configure it like:

exec('apt', {
  PACKAGES: 'nginx certbot python3-certbot-nginx',
  UPDATE: true
})

Notes

  • Package names must match exact apt package names
  • Invalid package names will cause the installation to fail
  • Use apt search <package> to find package names
  • Some packages may require additional configuration after installation