Skip to content

Commit

Permalink
fix: save store paths to file (#5)
Browse files Browse the repository at this point in the history
closes #4
  • Loading branch information
gallexme authored Aug 6, 2023
1 parent e78c87f commit 56ba67d
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 24 deletions.
5 changes: 2 additions & 3 deletions src/stages/configure.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as core from "@actions/core";
import { exec } from "@actions/exec";
import { getStorePaths } from "../utils";
import { saveStorePaths } from "../utils";

export const configure = async () => {
core.startGroup("Configure attic");
Expand All @@ -14,8 +14,7 @@ export const configure = async () => {
await exec("attic", ["login", "--set-default", cache, endpoint, token]);

core.info("Collecting store paths before build");
const paths = await getStorePaths();
core.saveState("initial-paths", JSON.stringify(paths));
await saveStorePaths();
} catch (e) {
core.setFailed(`Action failed with error: ${e}`);
}
Expand Down
6 changes: 3 additions & 3 deletions src/stages/push.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import * as core from "@actions/core";
import { exec } from "@actions/exec";

import splitArray from "just-split";
import { getStorePaths } from "../utils";

import { saveStorePaths, getStorePaths } from "../utils";
export const push = async () => {
core.startGroup("Push to Attic");

Expand All @@ -15,7 +14,8 @@ export const push = async () => {
const cache = core.getInput("cache");

core.info("Pushing to cache");
const oldPaths = JSON.parse(core.getState("initial-paths")) as string[];
const oldPaths = await getStorePaths();
await saveStorePaths();
const newPaths = await getStorePaths();
const addedPaths = newPaths
.filter((p) => !oldPaths.includes(p))
Expand Down
23 changes: 5 additions & 18 deletions src/utils.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,10 @@
import { exec } from "@actions/exec";
import { Writable } from "node:stream";

class StringStream extends Writable {
chunks: Buffer[] = [];

_write(chunk: WithImplicitCoercion<ArrayBuffer | SharedArrayBuffer>, _enc: unknown, next: () => unknown) {
this.chunks.push(Buffer.from(chunk));
next();
}

string() {
return Buffer.concat(this.chunks).toString("utf-8");
}
}
import { readFile } from "node:fs/promises";

export const saveStorePaths = async () => {
await exec("sh", ["-c", "nix path-info --all --json > /tmp/store-paths"]);
};
export const getStorePaths = async () => {
const outStream = new StringStream();
await exec("nix", ["path-info", "--all"], { outStream });
const paths = outStream.string().split("\n").filter(Boolean);

return paths;
return JSON.parse(await readFile("/tmp/store-paths", "utf8")).map((path) => path.path);
};

0 comments on commit 56ba67d

Please sign in to comment.