mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-17 03:10:38 +09:00
Add idempotent local dev service management
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
parent
cadfcd1bc6
commit
6793dde597
8 changed files with 1448 additions and 35 deletions
44
scripts/dev-service-profile.ts
Normal file
44
scripts/dev-service-profile.ts
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import { createHash } from "node:crypto";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { createLocalServiceKey } from "../server/src/services/local-service-supervisor.ts";
|
||||
|
||||
export const repoRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
||||
|
||||
export function createDevServiceIdentity(input: {
|
||||
mode: "watch" | "dev";
|
||||
forwardedArgs: string[];
|
||||
tailscaleAuth: boolean;
|
||||
port: number;
|
||||
}) {
|
||||
const envFingerprint = createHash("sha256")
|
||||
.update(
|
||||
JSON.stringify({
|
||||
mode: input.mode,
|
||||
forwardedArgs: input.forwardedArgs,
|
||||
tailscaleAuth: input.tailscaleAuth,
|
||||
port: input.port,
|
||||
}),
|
||||
)
|
||||
.digest("hex");
|
||||
|
||||
const serviceName = input.mode === "watch" ? "paperclip-dev-watch" : "paperclip-dev-once";
|
||||
const serviceKey = createLocalServiceKey({
|
||||
profileKind: "paperclip-dev",
|
||||
serviceName,
|
||||
cwd: repoRoot,
|
||||
command: "dev-runner.ts",
|
||||
envFingerprint,
|
||||
port: input.port,
|
||||
scope: {
|
||||
repoRoot,
|
||||
mode: input.mode,
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
serviceKey,
|
||||
serviceName,
|
||||
envFingerprint,
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue