@vxrn/takeout-cli
Version:
CLI tools for Takeout starter kit - interactive onboarding and project setup
97 lines (95 loc) • 3.08 kB
JavaScript
import { randomBytes } from "node:crypto";
import { copyFileSync, existsSync, readFileSync, writeFileSync } from "node:fs";
import { join } from "node:path";
function generateSecret() {
var length = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 32;
return randomBytes(length).toString("hex");
}
function envFileExists(cwd) {
var filename = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ".env";
return existsSync(join(cwd, filename));
}
function copyEnvFile(cwd, source, target) {
var sourcePath = join(cwd, source),
targetPath = join(cwd, target);
if (!existsSync(sourcePath)) return {
success: !1,
error: `Source file ${source} not found`
};
if (existsSync(targetPath)) return {
success: !1,
error: `Target file ${target} already exists`
};
try {
return copyFileSync(sourcePath, targetPath), {
success: !0
};
} catch (error) {
return {
success: !1,
error: error instanceof Error ? error.message : "Unknown error"
};
}
}
function updateEnvVariable(cwd, key, value) {
var filename = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : ".env",
envPath = join(cwd, filename);
if (!existsSync(envPath)) return {
success: !1,
error: `${filename} not found`
};
try {
var content = readFileSync(envPath, "utf-8"),
keyRegex = new RegExp(`^${key}=.*$`, "m");
return keyRegex.test(content) ? content = content.replace(keyRegex, `${key}=${value}`) : content = content.trimEnd() + `
${key}=${value}
`, writeFileSync(envPath, content, "utf-8"), {
success: !0
};
} catch (error) {
return {
success: !1,
error: error instanceof Error ? error.message : "Unknown error"
};
}
}
function createEnvLocal(cwd) {
var envLocalPath = join(cwd, ".env.local");
if (existsSync(envLocalPath)) return {
success: !0
};
var template = `# Local environment overrides
# This file is gitignored and never committed
# Add your personal secrets and local configuration here
# These values override .env
# Example:
# BETTER_AUTH_SECRET=your-secret-here
# AWS_ACCESS_KEY_ID=your-key-here
`;
try {
return writeFileSync(envLocalPath, template, "utf-8"), {
success: !0
};
} catch (error) {
return {
success: !1,
error: error instanceof Error ? error.message : "Unknown error"
};
}
}
function readEnvVariable(cwd, key) {
var filename = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ".env",
envPath = join(cwd, filename);
if (!existsSync(envPath)) return null;
try {
var _match_,
content = readFileSync(envPath, "utf-8"),
keyRegex = new RegExp(`^${key}=(.*)$`, "m"),
match = content.match(keyRegex);
return (match == null || (_match_ = match[1]) === null || _match_ === void 0 ? void 0 : _match_.trim().replace(/^["']|["']$/g, "")) || null;
} catch {
return null;
}
}
export { copyEnvFile, createEnvLocal, envFileExists, generateSecret, readEnvVariable, updateEnvVariable };
//# sourceMappingURL=env.native.js.map