Files
App/scripts/updateEnv.js
Ritesh Shukla ecbbabcf4d Maestro Setup for app (#407)
Implementing Maestro tests against onboarding process
2025-06-04 15:44:52 -05:00

67 lines
1.6 KiB
JavaScript

const fs = require('fs')
const path = require('path')
function parseArgs(args) {
const updates = {}
args.forEach((arg) => {
const [key, value] = arg.split('=')
if (key && value !== undefined) {
updates[key.trim()] = value.trim()
}
})
return updates
}
function updateEnvFile(filePath, updates) {
let envContent = ''
try {
envContent = fs.readFileSync(filePath, 'utf8')
} catch (err) {
console.error(`❌ Failed to read .env file at ${filePath}`, err.message)
return
}
const lines = envContent.split(/\r?\n/)
const seenKeys = new Set()
const updatedLines = lines.map((line) => {
if (!line.trim() || line.trim().startsWith('#')) return line
const [key, ...rest] = line.split('=')
const trimmedKey = key.trim()
if (updates.hasOwnProperty(trimmedKey)) {
seenKeys.add(trimmedKey)
return `${trimmedKey}=${updates[trimmedKey]}`
}
return line
})
// Add any new keys not already in the file
Object.entries(updates).forEach(([key, value]) => {
if (!seenKeys.has(key)) {
updatedLines.push(`${key}=${value}`)
}
})
try {
fs.writeFileSync(filePath, updatedLines.join('\n'), 'utf8')
console.log('✅ .env file updated successfully')
} catch (err) {
console.error(`❌ Failed to write .env file:`, err.message)
}
}
// Get CLI args (excluding node and script path)
const args = process.argv.slice(2)
if (args.length === 0) {
console.error('❗ Usage: node updateEnv.js KEY1=value1 KEY2=value2')
process.exit(1)
}
const updates = parseArgs(args)
const envPath = path.resolve(__dirname, '../.env')
updateEnvFile(envPath, updates)