log to file

This commit is contained in:
Kacper Marzecki 2025-03-16 22:38:44 +01:00
parent c1c2f3c6f0
commit 24286a563f
2 changed files with 48 additions and 36 deletions

View File

@ -3,7 +3,7 @@ import React, { useState, useEffect } from "react";
import { render, Box, Text, useApp, useInput } from "ink"; import { render, Box, Text, useApp, useInput } from "ink";
import fs from "fs"; import fs from "fs";
import { execSync, spawn } from "child_process"; import { execSync, spawn } from "child_process";
import { loadTasks, saveTasks, commitAndPushTasks, pullTasks } from "./tasks.js"; import { loadTasks, saveTasks, commitAndPushTasks, pullTasks, addLog, readLog } from "./tasks.js";
import { Tabs, Tab } from 'ink-tab'; import { Tabs, Tab } from 'ink-tab';
import Scrollbar from "./scrollbar.js"; import Scrollbar from "./scrollbar.js";
@ -66,7 +66,7 @@ export default function TaskApp() {
const [tasks, setTasks] = useState(loadTasks()); const [tasks, setTasks] = useState(loadTasks());
const [taskPath, setTaskPath] = useState([0]); const [taskPath, setTaskPath] = useState([0]);
const [activeTabName, setActiveTabName] = useState(null); const [activeTabName, setActiveTabName] = useState(null);
const [consoleLog, setConsole] = useState([]); const [consoleLog, setConsole] = useState("");
const [cutTask, setCutTask] = useState(null); const [cutTask, setCutTask] = useState(null);
const focusedIdx = last(taskPath) const focusedIdx = last(taskPath)
const [visibleSubtasks, setVisibleSubtasks] = useState(currentSubtasks(tasks, taskPath)); const [visibleSubtasks, setVisibleSubtasks] = useState(currentSubtasks(tasks, taskPath));
@ -84,7 +84,8 @@ export default function TaskApp() {
} }
return e; return e;
}).join(" "); }).join(" ");
setConsole(prev => [...prev, x]); addLog(x)
setConsole(readLog() || "");
} }
const focusTask = (index) => { const focusTask = (index) => {
log("Focus task:", index); log("Focus task:", index);
@ -390,7 +391,7 @@ export default function TaskApp() {
)} )}
{activeTabName === 'console' && consoleLog.map(it => <Text>{it}</Text>)} {activeTabName === 'console' && consoleLog.split("\n").map(it => <Text>{it}</Text>)}
</Box> </Box>
); );
}; };

View File

@ -5,7 +5,9 @@ if (!process.env.TD_TASK_DIR) {
throw new Error("Environment variable TD_TASK_DIR is not defined"); throw new Error("Environment variable TD_TASK_DIR is not defined");
} }
const TASK_FILE = path.join(process.env.TD_TASK_DIR, "tasks.json"); const TASK_FILE = path.join(process.env.TD_TASK_DIR, "tasks.json");
const LOG_FILE = path.join(process.env.TD_TASK_DIR, "log");
fs.rmSync(LOG_FILE)
const ensureIds = (tasks) => { const ensureIds = (tasks) => {
return tasks.map(task => { return tasks.map(task => {
@ -32,6 +34,15 @@ export function saveTasks(tasks) {
fs.writeFileSync(TASK_FILE, JSON.stringify(updatedTasks, null, 2)); fs.writeFileSync(TASK_FILE, JSON.stringify(updatedTasks, null, 2));
}; };
export function addLog(str) {
fs.appendFileSync(LOG_FILE, `\n${str}`);
}
export function readLog() {
return fs.readFileSync(LOG_FILE, "utf8");
}
import { execSync } from "child_process"; import { execSync } from "child_process";
export function commitAndPushTasks(log) { export function commitAndPushTasks(log) {