mirror of
https://github.com/DeterminateSystems/magic-nix-cache-action.git
synced 2024-12-26 09:20:35 +01:00
Try logging into FlakeHub if nix-installer didn't do that for us
This commit is contained in:
parent
bc93e73758
commit
b1e40f81bd
4 changed files with 79 additions and 6 deletions
BIN
bun.lockb
BIN
bun.lockb
Binary file not shown.
34
dist/index.js
generated
vendored
34
dist/index.js
generated
vendored
|
@ -12192,6 +12192,7 @@ async function setUpAutoCache() {
|
|||
const output = openSync(outputPath, 'a');
|
||||
const log = tailLog(daemonDir);
|
||||
const notifyFd = 3;
|
||||
const netrc = await netrcPath();
|
||||
const daemon = spawn(daemonBin, [
|
||||
'--notify-fd', String(notifyFd),
|
||||
'--listen', coreExports.getInput('listen'),
|
||||
|
@ -12202,7 +12203,7 @@ async function setUpAutoCache() {
|
|||
'--use-flakehub',
|
||||
'--flakehub-cache-server', coreExports.getInput('flakehub-cache-server'),
|
||||
'--flakehub-api-server', coreExports.getInput('flakehub-api-server'),
|
||||
'--flakehub-api-server-netrc', path$1.join(process.env['RUNNER_TEMP'], 'determinate-nix-installer-netrc'),
|
||||
'--flakehub-api-server-netrc', netrc,
|
||||
] : []).concat(coreExports.getInput('use-gha-cache') === 'true' ? [
|
||||
'--use-gha-cache'
|
||||
] : []), {
|
||||
|
@ -12252,6 +12253,37 @@ async function notifyAutoCache() {
|
|||
coreExports.info(`Magic Nix Cache may not be running for this workflow.`);
|
||||
}
|
||||
}
|
||||
async function netrcPath() {
|
||||
const expectedNetrcPath = path$1.join(process.env['RUNNER_TEMP'], 'determinate-nix-installer-netrc');
|
||||
try {
|
||||
await fs$2.access(expectedNetrcPath);
|
||||
return expectedNetrcPath;
|
||||
}
|
||||
catch {
|
||||
// `nix-installer` was not used, the user may be registered with FlakeHub though.
|
||||
const destinedNetrcPath = path$1.join(process.env['RUNNER_TEMP'], 'magic-nix-cache-netrc');
|
||||
try {
|
||||
await flakehub_login(destinedNetrcPath);
|
||||
}
|
||||
catch {
|
||||
coreExports.info("FlakeHub cache disabled.");
|
||||
}
|
||||
return destinedNetrcPath;
|
||||
}
|
||||
}
|
||||
async function flakehub_login(netrc) {
|
||||
const jwt = await coreExports.getIDToken("api.flakehub.com");
|
||||
await fs$2.writeFile(netrc, [
|
||||
`machine api.flakehub.com login flakehub password ${jwt}`,
|
||||
`machine flakehub.com login flakehub password ${jwt}`,
|
||||
].join("\n"));
|
||||
coreExports.info("Logging in to FlakeHub.");
|
||||
// the join followed by a match on ^... looks silly, but extra_config
|
||||
// could contain multi-line values
|
||||
if (this.extra_conf?.join("\n").match(/^netrc-file/m)) {
|
||||
coreExports.warning("Logging in to FlakeHub conflicts with the Nix option `netrc-file`.");
|
||||
}
|
||||
}
|
||||
async function tearDownAutoCache() {
|
||||
const daemonDir = process.env[ENV_CACHE_DAEMONDIR];
|
||||
if (!daemonDir) {
|
||||
|
|
|
@ -10,15 +10,15 @@
|
|||
"license": "LGPL",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.10.0",
|
||||
"got": "^12.6.0",
|
||||
"tail": "^2.2.6",
|
||||
"tslib": "^2.5.2",
|
||||
"got": "^12.6.0"
|
||||
"tslib": "^2.5.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-commonjs": "^25.0.0",
|
||||
"@rollup/plugin-node-resolve": "^15.0.2",
|
||||
"@rollup/plugin-typescript": "^11.1.1",
|
||||
"@types/node": "^20.2.1",
|
||||
"@types/node": "^20.11.17",
|
||||
"rollup": "^3.22.0",
|
||||
"typescript": "^5.0.4"
|
||||
}
|
||||
|
|
45
src/index.ts
45
src/index.ts
|
@ -123,6 +123,8 @@ async function setUpAutoCache() {
|
|||
const output = openSync(outputPath, 'a');
|
||||
const log = tailLog(daemonDir);
|
||||
const notifyFd = 3;
|
||||
const netrc = await netrcPath();
|
||||
|
||||
const daemon = spawn(
|
||||
daemonBin,
|
||||
[
|
||||
|
@ -136,7 +138,7 @@ async function setUpAutoCache() {
|
|||
'--use-flakehub',
|
||||
'--flakehub-cache-server', core.getInput('flakehub-cache-server'),
|
||||
'--flakehub-api-server', core.getInput('flakehub-api-server'),
|
||||
'--flakehub-api-server-netrc', path.join(process.env['RUNNER_TEMP'], 'determinate-nix-installer-netrc'),
|
||||
'--flakehub-api-server-netrc', netrc,
|
||||
] : []).concat(
|
||||
core.getInput('use-gha-cache') === 'true' ? [
|
||||
'--use-gha-cache'
|
||||
|
@ -196,6 +198,46 @@ async function notifyAutoCache() {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
async function netrcPath() {
|
||||
const expectedNetrcPath = path.join(process.env['RUNNER_TEMP'], 'determinate-nix-installer-netrc')
|
||||
try {
|
||||
await fs.access(expectedNetrcPath)
|
||||
return expectedNetrcPath;
|
||||
} catch {
|
||||
// `nix-installer` was not used, the user may be registered with FlakeHub though.
|
||||
const destinedNetrcPath = path.join(process.env['RUNNER_TEMP'], 'magic-nix-cache-netrc')
|
||||
try {
|
||||
await flakehub_login(destinedNetrcPath);
|
||||
} catch {
|
||||
core.info("FlakeHub cache disabled.")
|
||||
}
|
||||
return destinedNetrcPath;
|
||||
}
|
||||
}
|
||||
|
||||
async function flakehub_login(netrc: string) {
|
||||
const jwt = await core.getIDToken("api.flakehub.com");
|
||||
|
||||
await fs.writeFile(
|
||||
netrc,
|
||||
[
|
||||
`machine api.flakehub.com login flakehub password ${jwt}`,
|
||||
`machine flakehub.com login flakehub password ${jwt}`,
|
||||
].join("\n"),
|
||||
);
|
||||
|
||||
core.info("Logging in to FlakeHub.");
|
||||
|
||||
// the join followed by a match on ^... looks silly, but extra_config
|
||||
// could contain multi-line values
|
||||
if (this.extra_conf?.join("\n").match(/^netrc-file/m)) {
|
||||
core.warning(
|
||||
"Logging in to FlakeHub conflicts with the Nix option `netrc-file`.",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
async function tearDownAutoCache() {
|
||||
const daemonDir = process.env[ENV_CACHE_DAEMONDIR];
|
||||
|
||||
|
@ -258,4 +300,3 @@ try {
|
|||
}}
|
||||
|
||||
core.debug(`rip`);
|
||||
|
||||
|
|
Loading…
Reference in a new issue