cache-apt-pkgs-action/rollup.config.mjs
Andrew Walsh 9792dbe32f
style: set Prettier print width to 110 and reformat (#246)
* style: set Prettier print width to 110 and reformat

Without a repo config, the Prettier CLI and Trunk used the default
width of 80, while editors with a user printWidth reflowed files on
save, producing formatting-only diffs. Pin the width in .prettierrc.json
and reformat source, tests, scripts and JS/TS config files to match.

Files that already failed Prettier at width 80 for unrelated reasons
(tsconfig*.json, .trunk/*, V2_FAQ.MD) are left untouched.

No code changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test: cover cache restore and save failure paths

Codecov flagged lines in #246 as uncovered patch lines; they were
untested before the reformat touched them. Add behavior tests for:

- Cache: cache miss, missing or empty manifests, unreadable cache dir,
  metapackage-only restore, install scripts running after their archive
  with dpkg actions, existing archives, unavailable cache service, and
  save failures.
- ManifestEntry.fromJSON round trip.
- buildFileList dropping missing files, updateAptLists skipping update
  for populated lists and searching only to max depth, and fromInput
  ignoring a version without a package name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 11:45:29 -08:00

63 lines
2.1 KiB
JavaScript

import commonjs from "@rollup/plugin-commonjs";
import json from "@rollup/plugin-json";
import { nodeResolve } from "@rollup/plugin-node-resolve";
import fs from "node:fs";
// ts-apt runs scripts/dist/apt-fast.sh, which it finds relative to its own
// module (i.e. ../scripts/dist from the bundle). Bundling moves that module
// into dist/action/index.js, so ship the scripts at dist/scripts/dist.
const TS_APT_SCRIPTS_SRC = "node_modules/ts-apt/scripts/dist";
const TS_APT_SCRIPTS_DEST = "dist/scripts/dist";
/** Copies the ts-apt shell scripts next to the bundle after it's written. */
function copyTsAptScripts() {
return {
name: "copy-ts-apt-scripts",
writeBundle() {
fs.cpSync(TS_APT_SCRIPTS_SRC, TS_APT_SCRIPTS_DEST, { recursive: true });
},
};
}
/**
* Bundles the action and all of its dependencies into dist/action/index.js,
* the entrypoint action.yml runs. GitHub Actions doesn't install node_modules, so
* the bundle has to be self-contained.
*
* The input is the tsc output from `npm run build:lib`, so TypeScript is only
* compiled one way.
*
* @type {import('rollup').RollupOptions}
*/
export default {
input: "dist/src/index.js",
output: {
file: "dist/action/index.js",
format: "es",
sourcemap: true,
// Some CommonJS dependencies call require() at runtime.
banner:
"import { createRequire as __createRequire } from 'node:module';\n" +
"const require = __createRequire(import.meta.url);",
},
plugins: [
nodeResolve({ preferBuiltins: true, exportConditions: ["node"] }),
commonjs(),
json(),
copyTsAptScripts(),
],
onwarn(warning, warn) {
// Dependencies trigger these and they are harmless and very noisy:
// top level `this` in ES modules, misplaced /*@__PURE__*/ comments and
// circular imports inside third-party packages.
const fromDependency = (warning.ids ?? [warning.id ?? ""]).every((id) => id.includes("node_modules"));
if (
warning.code === "THIS_IS_UNDEFINED" ||
(fromDependency && ["INVALID_ANNOTATION", "CIRCULAR_DEPENDENCY"].includes(warning.code))
) {
return;
}
warn(warning);
},
};