track-dev-time
Version:
CLI tool to track your coding sessions with start, pause and stop commands. Outputs session data to a JSON file.
49 lines (40 loc) • 1.4 kB
JavaScript
import {
CONFIG_PATH,
DEFAULT_INACTIVITY_DELAY,
DEFAULT_RESUME_WINDOW_MS,
SESSIONS_PATH,
} from "./constants.js";
import fs from "fs";
import path from "path";
export const readDataFromFile = (filePath = SESSIONS_PATH) => {
return JSON.parse(fs.readFileSync(filePath, "utf-8"));
};
export const writeDataToFile = (data, filePath = SESSIONS_PATH) => {
fs.writeFileSync(filePath, JSON.stringify(data, null, 2), "utf-8");
};
export const ensureSessionStorage = (filePath = SESSIONS_PATH) => {
if (!fs.existsSync(path.dirname(filePath))) {
fs.mkdirSync(path.dirname(filePath), { recursive: true });
}
if (!fs.existsSync(filePath)) {
const projectName = path.basename(process.cwd());
const initialData = { projectName, sessions: [] };
writeDataToFile(initialData, filePath);
}
};
const defaultConfig = {
inactivityTimeoutMs: DEFAULT_INACTIVITY_DELAY,
autoResumeSessionWindowMs: DEFAULT_RESUME_WINDOW_MS,
};
export const ensureConfigFile = (filePath = CONFIG_PATH) => {
const configDir = path.dirname(filePath);
if (!fs.existsSync(configDir)) {
fs.mkdirSync(configDir, { recursive: true });
}
if (!fs.existsSync(filePath)) {
fs.writeFileSync(filePath, JSON.stringify(defaultConfig, null, 2), "utf-8");
console.log("✅ config.json created with default settings");
} else {
console.log("ℹ️ config.json already exists");
}
};