UNPKG

weather-cli-16bit

Version:

Command-line weather tool with formatted display and Tokyo Night theme

100 lines (85 loc) 2.45 kB
import fs from 'fs/promises'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const CONFIG_FILE = join(__dirname, '..', '.weather-config.json'); // Load saved configuration async function loadConfig() { try { const data = await fs.readFile(CONFIG_FILE, 'utf8'); return JSON.parse(data); } catch { return {}; } } // Save configuration async function saveConfig(config) { await fs.writeFile(CONFIG_FILE, JSON.stringify(config, null, 2)); } // Get default location async function getDefaultLocation() { const config = await loadConfig(); return config.defaultLocation || null; } // Get default units async function getDefaultUnits() { const config = await loadConfig(); return config.defaultUnits || 'auto'; } // Check if beta banner should be shown async function shouldShowBetaBanner() { const config = await loadConfig(); return config.showBetaBanner === true; } // Toggle beta banner setting async function setShowBetaBanner(show) { const config = await loadConfig(); config.showBetaBanner = show; await saveConfig(config); } // Set default location async function setDefaultLocation(location) { const config = await loadConfig(); config.defaultLocation = location; await saveConfig(config); } // Set default units async function setDefaultUnits(units) { const config = await loadConfig(); config.defaultUnits = units; await saveConfig(config); } // Get show 5-day forecast setting async function getShow5DayForecast() { const config = await loadConfig(); return config.show5DayForecast || false; } // Set show 5-day forecast setting async function setShow5DayForecast(show) { const config = await loadConfig(); config.show5DayForecast = show; await saveConfig(config); } // Process temperature options from command line function processTemperatureOptions(options) { if (options.celsius) return 'celsius'; if (options.fahrenheit) return 'fahrenheit'; if (options.units && options.units !== 'auto') { return options.units === 'metric' ? 'celsius' : 'fahrenheit'; } return null; // Use auto-detection } export { loadConfig, saveConfig, getDefaultLocation, getDefaultUnits, setDefaultLocation, setDefaultUnits, getShow5DayForecast, setShow5DayForecast, processTemperatureOptions, shouldShowBetaBanner, setShowBetaBanner };