From e06360b5a954abd5c3a083b5618093dd2fd4cd0d Mon Sep 17 00:00:00 2001 From: Rafi Arrafif Date: Tue, 5 Aug 2025 13:26:10 +0700 Subject: [PATCH] :wrench: create example env Create .env.example to help you figure out what variables should be in the .env file. Run the command `bun run env:publish` to sync the .env.example file with the .env file. --- .env.example | 8 ++++++ .gitignore | 2 +- package.json | 5 ++-- scripts/create-env-example.ts | 49 +++++++++++++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 .env.example create mode 100644 scripts/create-env-example.ts diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..ceb0144 --- /dev/null +++ b/.env.example @@ -0,0 +1,8 @@ +APP_NAME="Astofo TV" +APP_ENV="development" +APP_DOMAIN= +APP_PORT=3000 + +MAIN_BACKEND_API_URL= +API_KEY= +JWT_TOKEN= \ No newline at end of file diff --git a/.gitignore b/.gitignore index 52a7334..70433c0 100644 --- a/.gitignore +++ b/.gitignore @@ -31,7 +31,7 @@ yarn-error.log* .pnpm-debug.log* # env files (can opt-in for committing if needed) -.env* +.env # vercel .vercel diff --git a/package.json b/package.json index 9aaba51..2e6973c 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,9 @@ "build": "next build", "start": "next start", "lint": "next lint", - "commit": "bunx git-cz", - "push": "bun ./scripts/git-multipush.ts" + "git:commit": "bunx git-cz", + "git:push": "bun ./scripts/git-multipush.ts", + "env:publish": "bun ./scripts/create-env-example.ts" }, "dependencies": { "@heroui/react": "^2.8.2", diff --git a/scripts/create-env-example.ts b/scripts/create-env-example.ts new file mode 100644 index 0000000..7628755 --- /dev/null +++ b/scripts/create-env-example.ts @@ -0,0 +1,49 @@ +import fs from "fs"; +import path from "path"; + +// These keys will not be cleared in the .env.example file +const PRESERVED_KEYS = ["APP_NAME", "APP_ENV", "APP_PORT"]; + +/** + * Script to create or update the .env.example file based on the .env file. + * It preserves certain keys and clears their values in the .env.example file. + */ +try { + const envPath = path.join(process.cwd(), ".env"); + const envExamplePath = path.join(process.cwd(), ".env.example"); + + if (!fs.existsSync(envPath)) { + console.error(`.env file not found at ${envPath}`); + process.exit(1); + } + + const envContent = fs.readFileSync(envPath, "utf-8"); + + const lines = envContent.split("\n"); + const processedLines = lines.map((line) => { + const trimmedLine = line.trim(); + + if (trimmedLine.startsWith("#") || trimmedLine === "") { + return line; + } + + const delimeterIndex = line.indexOf("="); + if (delimeterIndex === -1) { + return line; + } + + const key = line.substring(0, delimeterIndex).trim(); + const value = line.substring(delimeterIndex + 1).trim(); + + if (PRESERVED_KEYS.includes(key)) { + return `${key}=${value}`; + } + return `${key}=`; + }); + + fs.writeFileSync(envExamplePath, processedLines.join("\n")); + console.log("File .env.example berhasil diperbarui!"); +} catch (error) { + console.error("Error while creating .env.example:", error); + process.exit(1); +}