track-dev-time
Version:
CLI tool to track your coding sessions with start, pause and stop commands. Outputs session data to a JSON file.
80 lines (65 loc) • 2.29 kB
JavaScript
//@ts-nocheck
import readline from "readline";
import fs from "fs";
import path from "path";
import { SESSIONS_PATH } from "./storage.js";
export const uninstallTrackDevTime = () => {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question(
"⚠️ This will remove all track-dev-time related files. Continue? (y/n): ",
(answer) => {
rl.close();
const confirm = answer.trim().toLowerCase();
if (confirm !== "y" && confirm !== "yes") {
console.log("❌ Uninstall aborted.");
return;
}
console.log("\n🧹 Uninstalling track-dev-time...");
removeTrackingFolder();
cleanGitignore();
cleanPackageJson();
console.log("\n✅ Uninstall complete! You can now run:");
console.log(" npm uninstall track-dev-time");
console.log(
"\nℹ️ If you no longer use 'concurrently' in your project, you can remove it:"
);
console.log(" npm uninstall concurrently\n");
}
);
};
const removeTrackingFolder = () => {
const trackingFolderPath = path.resolve(".track-dev-time");
if (fs.existsSync(trackingFolderPath)) {
fs.rmSync(trackingFolderPath, { recursive: true, force: true });
console.log("✔️ Removed .track-dev-time folder");
}
};
const cleanGitignore = () => {
const gitignorePath = path.resolve(".gitignore");
if (fs.existsSync(gitignorePath)) {
const content = fs.readFileSync(gitignorePath, "utf-8");
const updated = content
.split("\n")
.filter((line) => !line.includes(".track-dev-time/"))
.join("\n");
fs.writeFileSync(gitignorePath, updated);
console.log("✔️ Cleaned .gitignore");
}
};
const cleanPackageJson = () => {
const pkgJsonPath = path.resolve("package.json");
if (fs.existsSync(pkgJsonPath)) {
const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8"));
if (pkg.trackDevTimeBackupDevScript) {
pkg.scripts.dev = pkg.trackDevTimeBackupDevScript;
delete pkg.trackDevTimeBackupDevScript;
fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, 2), "utf-8");
console.log("✅ 'dev' script restored to original");
} else {
console.log("ℹ️ No backup found, nothing to restore");
}
}
};