crux-lookup
Version:
A simple CLI utility for grabbing URL-/origin-level Core Web Vitals using the Chrome User Experience Report (CrUX) API
45 lines (44 loc) • 1.7 kB
JavaScript
import fs from 'fs';
import ora from 'ora';
import { localEnv, ensureEnv, maskedKey, noKeySuffix } from '../utils/configUtil.js';
export const configCommand = (options) => {
const spinner = ora('Updating configuration').start();
ensureEnv();
try {
if (options.updateKey && options.removeKey) {
spinner.fail('Cannot update and remove API key at the same time');
return;
}
else if (options.removeKey) {
fs.writeFile(localEnv, 'CRUX_API_KEY=\n', (err) => {
if (err) {
spinner.fail(`Failed to remove API key: ${err}`);
return;
}
});
delete process.env.CRUX_API_KEY;
spinner.succeed('Removed API key from configuration');
return;
}
else if (options.updateKey) {
fs.writeFile(localEnv, `CRUX_API_KEY=${options.updateKey}\n`, (err) => {
if (err) {
spinner.fail(`Failed to update API key: ${err}`);
}
});
process.env.CRUX_API_KEY = options.updateKey;
spinner.succeed('Updated API key in configuration');
return;
}
else {
const resultString = !!process.env.CRUX_API_KEY
? `Currently stored CrUX API key is ${maskedKey(process.env.CRUX_API_KEY)}`
: `Add a CrUX API key to your configuration by running \`crux-lookup config --updateKey <key>\`\n${noKeySuffix}`;
spinner.succeed(resultString);
}
}
catch (err) {
spinner.fail(`Error updating configuration\n${err}`);
return;
}
};