aura-ai
Version:
AI-powered marketing strategist CLI tool for developers
110 lines (97 loc) ⢠2.84 kB
JavaScript
import fs from 'fs/promises'
import { existsSync } from 'fs'
const SETTINGS_FILE = '.aura.json'
const DEFAULT_SETTINGS = {
avatars: {
aura: 'š',
user: '>'
}
}
export async function settingsCommand(options) {
const { list, setAura, setUser, reset, json, quiet } = options
try {
// Load current settings
let settings = await loadSettings()
// Handle different operations
if (reset) {
// Reset to defaults
settings = { ...DEFAULT_SETTINGS }
await saveSettings(settings)
if (json) {
console.log(JSON.stringify({
status: 'success',
message: 'Settings reset to defaults',
data: settings
}))
} else if (!quiet) {
console.log('ā
Settings reset to defaults')
}
return
}
// Apply changes
let changed = false
if (setAura) {
settings.avatars.aura = setAura
changed = true
}
if (setUser) {
settings.avatars.user = setUser
changed = true
}
if (changed) {
await saveSettings(settings)
if (json) {
console.log(JSON.stringify({
status: 'success',
message: 'Settings updated',
data: settings
}))
} else if (!quiet) {
console.log('ā
Settings updated successfully')
console.log(` Aura avatar: ${settings.avatars.aura}`)
console.log(` User avatar: ${settings.avatars.user}`)
}
} else if (list || (!setAura && !setUser && !reset)) {
// Show current settings
if (json) {
// For agents: print readable settings
console.log('\n' + '='.repeat(60))
console.log('āļø AURA SETTINGS')
console.log('='.repeat(60))
console.log('\nš Current Configuration:')
console.log(` Aura avatar: ${settings.avatars.aura}`)
console.log(` User avatar: ${settings.avatars.user}`)
console.log('\n' + '='.repeat(60))
} else {
console.log('š Current Settings:')
console.log(` Aura avatar: ${settings.avatars.aura}`)
console.log(` User avatar: ${settings.avatars.user}`)
}
}
} catch (error) {
if (json) {
console.log(JSON.stringify({
status: 'error',
error: error.message
}))
process.exit(1)
} else {
console.error(`ā Error: ${error.message}`)
process.exit(1)
}
}
}
async function loadSettings() {
try {
if (existsSync(SETTINGS_FILE)) {
const data = await fs.readFile(SETTINGS_FILE, 'utf-8')
return JSON.parse(data)
}
} catch (error) {
// If error reading, return defaults
}
return { ...DEFAULT_SETTINGS }
}
async function saveSettings(settings) {
await fs.writeFile(SETTINGS_FILE, JSON.stringify(settings, null, 2))
}