import { nanoid } from "nanoid"; import { generateSecretsFile, loadSecretsFile } from "./helpers/secrets.js"; import { Alpine } from "./alpine.js"; import { execFile } from "./helpers/better-api.js"; export interface PasswdSecrets { rootPassword: string; } const loadPasswdSecretsFile = loadSecretsFile("passwd"); export const generatePasswdSecretsFile = generateSecretsFile( "passwd", generatePasswdSecrets ); async function generatePasswdSecrets(): Promise { console.info( "La contraseƱa por defecto de root va a estar en secrets/passwd.json" ); return { rootPassword: nanoid(), }; } export async function writePasswd(alpine: Alpine) { const secrets = await loadPasswdSecretsFile(); const proc = execFile("chroot", [alpine.dir, "passwd", "root"]); if (!proc.child.stdin) throw false; proc.child.stdin.write(secrets.rootPassword + "\n"); proc.child.stdin.write(secrets.rootPassword + "\n"); proc.child.stdin.end(); await proc; }