@lenne.tech/cli
Version:
lenne.Tech CLI: lt
93 lines (92 loc) • 4.18 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const path_1 = require("path");
const caddy_1 = require("../../lib/caddy");
const dev_service_1 = require("../../lib/dev-service");
/**
* Symmetric counterpart to `lt dev install`.
*
* Removes the LaunchAgent / systemd-user unit, stops the running Caddy
* daemon, and optionally purges all lt-dev state (Caddyfile, logs).
*
* What it does NOT touch:
* - the caddy binary itself (`brew uninstall caddy` remains the
* user's choice — we don't presume they want to drop the tool)
* - per-project state under `<project>/.lt-dev/` (use `lt dev down`)
* - the trusted CA in the system keychain (use
* `sudo -E HOME="$HOME" caddy untrust` if desired)
*
* Flags:
* --purge — also remove ~/.lenneTech/Caddyfile and caddy logs
* --noConfirm — skip the purge confirmation prompt
*/
const UninstallCommand = {
alias: ['un'],
description: 'Remove lt dev Caddy service',
hidden: false,
name: 'uninstall',
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
const { parameters, print: { colors, error, info, success, warning }, prompt: { confirm }, } = toolbox;
info('');
info(colors.bold('lt dev uninstall — remove the lt-dev Caddy service'));
info(colors.dim('─'.repeat(60)));
const plat = (0, dev_service_1.platformSupported)();
if (plat === 'unsupported') {
info('No managed service to remove on this platform.');
if (!parameters.options.fromGluegunMenu)
process.exit(0);
return 'dev uninstall: nothing to do';
}
const paths = (0, dev_service_1.getServicePaths)();
const result = yield (0, dev_service_1.uninstallService)();
if (!result.ok) {
error(result.message);
if (!parameters.options.fromGluegunMenu)
process.exit(1);
return 'dev uninstall: failed';
}
if (result.removed.length === 0) {
info(colors.dim('Service was not installed.'));
}
else {
success(`Removed: ${result.removed.join(', ')}`);
}
// Optional purge of related state files.
const purge = Boolean(parameters.options.purge) ||
(!parameters.options.noConfirm && (yield confirm('Also remove the Caddyfile and lt-dev caddy logs?', false)));
if (purge) {
const toRemove = [caddy_1.paths.caddyfile, paths.logFile, paths.errFile, (0, path_1.join)(paths.logFile, '..', 'ports.json')];
for (const file of toRemove) {
if ((0, fs_1.existsSync)(file)) {
try {
(0, fs_1.unlinkSync)(file);
success(`Removed ${file}`);
}
catch (e) {
warning(`Failed to remove ${file}: ${e.message}`);
}
}
}
}
else {
info(colors.dim(`Kept: ${caddy_1.paths.caddyfile}`));
info(colors.dim(`Kept: ${paths.logFile}`));
}
info('');
info(`To reinstall: ${colors.cyan('lt dev install')}. To also remove caddy itself: ${colors.cyan('brew uninstall caddy')}.`);
if (!parameters.options.fromGluegunMenu)
process.exit(0);
return 'dev uninstall: ok';
}),
};
module.exports = UninstallCommand;