@aminya/dotenv-vault
Version:
A secrets manager for .env files – from the same people that pioneered dotenv.
76 lines (75 loc) • 2.27 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AppendToGitignoreService = void 0;
const fs_1 = require("fs");
class AppendToGitignoreService {
get gitignore() {
return '.gitignore';
}
get envFormat() {
return '.env*'; // asterisk
}
get flaskenvFormat() {
return '.flaskenv*'; // asterisk
}
get envProjectFormat() {
return '!.env.project';
}
get envVaultFormat() {
return '!.env.vault';
}
missing() {
return !(0, fs_1.existsSync)(this.gitignore);
}
append(str) {
(0, fs_1.appendFileSync)(this.gitignore, str);
}
touch() {
(0, fs_1.writeFileSync)(this.gitignore, '');
}
read() {
return (0, fs_1.readFileSync)(this.gitignore, 'utf8');
}
async run() {
let envExists = false;
let flaskenvExists = false;
let envProjectExists = false;
let envVaultExists = false;
// 1. create .gitignore if doesn't exist
if (this.missing()) {
this.touch();
}
// 2. iterate over gitignore lines
const lines = this.read().split(/\r?\n/);
// 3. for each line check if ignore already exists
for (const line of lines) {
const trimLine = line.trim();
if (trimLine === this.envFormat) {
envExists = true;
}
if (trimLine === this.flaskenvFormat) {
flaskenvExists = true;
}
if (trimLine === this.envProjectFormat) {
envProjectExists = true;
}
if (trimLine === this.envVaultFormat) {
envVaultExists = true;
}
}
// 4. add ignore if it does not already exist
if (envExists === false) {
this.append('\n' + this.envFormat);
}
if (flaskenvExists === false) {
this.append('\n' + this.flaskenvFormat);
}
if (envProjectExists === false) {
this.append('\n' + this.envProjectFormat);
}
if (envVaultExists === false) {
this.append('\n' + this.envVaultFormat);
}
}
}
exports.AppendToGitignoreService = AppendToGitignoreService;