sin-github-issues / src /state.ts
delqhi's picture
Bootstrap SIN-GitHub-Issues runtime
a4dc18c verified
Raw
History Blame Contribute Delete
1.01 kB
import { mkdir, readFile, writeFile } from 'node:fs/promises';
import { dirname, join } from 'node:path';
import { homedir } from 'node:os';
export const DEFAULT_STATE_PATH = join(homedir(), '.config', 'sin', 'sin-github-issues', 'onboarding-state.json');
export type OnboardingState = {
ownerEmail?: string;
notes?: string;
defaultRepo?: string;
browserProfileEmail?: string;
browserProfileDirectory?: string;
updatedAt?: string;
};
export async function readState(): Promise<OnboardingState | null> {
try {
return JSON.parse(await readFile(DEFAULT_STATE_PATH, 'utf8')) as OnboardingState;
} catch {
return null;
}
}
export async function writeState(state: OnboardingState) {
await mkdir(dirname(DEFAULT_STATE_PATH), { recursive: true });
await writeFile(DEFAULT_STATE_PATH, `${JSON.stringify(state, null, 2)}\n`, 'utf8');
return state;
}
export function clean(value: string | undefined) {
const normalized = String(value || '').trim();
return normalized || undefined;
}