11import { createHash } from "node:crypto" ;
2- import { chmodSync , copyFileSync , cpSync , existsSync , lstatSync , mkdirSync , mkdtempSync , readFileSync , readlinkSync , renameSync , rmSync , symlinkSync } from "node:fs" ;
2+ import {
3+ chmodSync ,
4+ copyFileSync ,
5+ cpSync ,
6+ existsSync ,
7+ lstatSync ,
8+ mkdirSync ,
9+ mkdtempSync ,
10+ readFileSync ,
11+ readlinkSync ,
12+ renameSync ,
13+ rmSync ,
14+ symlinkSync ,
15+ writeFileSync
16+ } from "node:fs" ;
317import { tmpdir } from "node:os" ;
418import { join , resolve } from "node:path" ;
519import { runText } from "../lib/common" ;
@@ -14,6 +28,9 @@ const ANSIBLE_GALAXY_ATTEMPTS = 4;
1428const INSTALLED_CLI = "/usr/local/bin/terrariumctl" ;
1529const TRM_ALIAS = "/usr/local/bin/trm" ;
1630const RELEASE_SIGNER_WORKFLOW = `${ GITHUB_REPO } /.github/workflows/release.yml` ;
31+ const GITHUB_CLI_APT_KEYRING = "/etc/apt/keyrings/githubcli-archive-keyring.gpg" ;
32+ const GITHUB_CLI_APT_SOURCE = "/etc/apt/sources.list.d/github-cli.list" ;
33+ const GITHUB_CLI_APT_REPO = "https://cli.github.com/packages" ;
1734
1835export type UpdateOptions = {
1936 ref ?: string ;
@@ -198,7 +215,15 @@ async function installAnsibleCollections(): Promise<void> {
198215
199216async function ensureUpdateDependencies ( ) : Promise < void > {
200217 await runText ( [ "apt-get" , "-o" , "DPkg::Lock::Timeout=900" , "update" , "-y" ] , PREFIX ) ;
201- await runText ( [ "apt-get" , "-o" , "DPkg::Lock::Timeout=900" , "install" , "-y" , "ca-certificates" , "curl" , "git" , "gh" , "ansible" , "python3" , "jq" , "unzip" ] , PREFIX ) ;
218+ await runText ( [ "apt-get" , "-o" , "DPkg::Lock::Timeout=900" , "install" , "-y" , "ca-certificates" , "curl" ] , PREFIX ) ;
219+ await runText ( [ "install" , "-d" , "-m" , "0755" , "/etc/apt/keyrings" ] , PREFIX ) ;
220+ await runText ( [ "curl" , "-fsSL" , `${ GITHUB_CLI_APT_REPO } /githubcli-archive-keyring.gpg` , "-o" , GITHUB_CLI_APT_KEYRING ] , PREFIX ) ;
221+ chmodSync ( GITHUB_CLI_APT_KEYRING , 0o644 ) ;
222+ const arch = ( await runText ( [ "dpkg" , "--print-architecture" ] , PREFIX ) ) . trim ( ) ;
223+ writeFileSync ( GITHUB_CLI_APT_SOURCE , `deb [arch=${ arch } signed-by=${ GITHUB_CLI_APT_KEYRING } ] ${ GITHUB_CLI_APT_REPO } stable main\n` ) ;
224+ await runText ( [ "apt-get" , "-o" , "DPkg::Lock::Timeout=900" , "update" , "-y" ] , PREFIX ) ;
225+ await runText ( [ "apt-get" , "-o" , "DPkg::Lock::Timeout=900" , "install" , "-y" , "git" , "gh" , "ansible" , "python3" , "jq" , "unzip" ] , PREFIX ) ;
226+ await runText ( [ "gh" , "attestation" , "verify" , "--help" ] , PREFIX ) ;
202227}
203228
204229function trmAliasIsManaged ( ) : boolean {
0 commit comments