diff --git a/source/app.js b/source/app.js
index 931b169..3fa3641 100644
--- a/source/app.js
+++ b/source/app.js
@@ -3,7 +3,7 @@ import React, { useState, useEffect } from "react";
import { render, Box, Text, useApp, useInput } from "ink";
import fs from "fs";
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 Scrollbar from "./scrollbar.js";
@@ -66,7 +66,7 @@ export default function TaskApp() {
const [tasks, setTasks] = useState(loadTasks());
const [taskPath, setTaskPath] = useState([0]);
const [activeTabName, setActiveTabName] = useState(null);
- const [consoleLog, setConsole] = useState([]);
+ const [consoleLog, setConsole] = useState("");
const [cutTask, setCutTask] = useState(null);
const focusedIdx = last(taskPath)
const [visibleSubtasks, setVisibleSubtasks] = useState(currentSubtasks(tasks, taskPath));
@@ -84,7 +84,8 @@ export default function TaskApp() {
}
return e;
}).join(" ");
- setConsole(prev => [...prev, x]);
+ addLog(x)
+ setConsole(readLog() || "");
}
const focusTask = (index) => {
log("Focus task:", index);
@@ -390,7 +391,7 @@ export default function TaskApp() {
)}
- {activeTabName === 'console' && consoleLog.map(it => {it})}
+ {activeTabName === 'console' && consoleLog.split("\n").map(it => {it})}
);
};
diff --git a/source/tasks.js b/source/tasks.js
index 7ddbc70..a90f7d3 100644
--- a/source/tasks.js
+++ b/source/tasks.js
@@ -2,58 +2,69 @@
import fs from "fs";
import path from "path";
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 LOG_FILE = path.join(process.env.TD_TASK_DIR, "log");
+fs.rmSync(LOG_FILE)
const ensureIds = (tasks) => {
- return tasks.map(task => {
- if (!task.id) {
- task.id = randomId();
- }
- if (task.subtasks && task.subtasks.length > 0) {
- task.subtasks = ensureIds(task.subtasks);
- }
- return task;
- });
+ return tasks.map(task => {
+ if (!task.id) {
+ task.id = randomId();
+ }
+ if (task.subtasks && task.subtasks.length > 0) {
+ task.subtasks = ensureIds(task.subtasks);
+ }
+ return task;
+ });
};
export function loadTasks() {
- try {
- return ensureIds(JSON.parse(fs.readFileSync(TASK_FILE, "utf8")));
- } catch {
- return [];
- }
+ try {
+ return ensureIds(JSON.parse(fs.readFileSync(TASK_FILE, "utf8")));
+ } catch {
+ return [];
+ }
};
export function saveTasks(tasks) {
- const updatedTasks = ensureIds(tasks);
- fs.writeFileSync(TASK_FILE, JSON.stringify(updatedTasks, null, 2));
+ const updatedTasks = ensureIds(tasks);
+ 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";
export function commitAndPushTasks(log) {
- const currentDateTime = new Date().toISOString();
- const commitMessage = `Update tasks.json - ${currentDateTime}`;
+ const currentDateTime = new Date().toISOString();
+ const commitMessage = `Update tasks.json - ${currentDateTime}`;
- try {
- execSync(`git -C ${process.env.TD_TASK_DIR} add tasks.json`, { stdio: "pipe" });
- execSync(`git -C ${process.env.TD_TASK_DIR} commit -m "${commitMessage}"`, { stdio: "pipe" });
- execSync(`git -C ${process.env.TD_TASK_DIR} push origin`, { stdio: "pipe" });
- } catch (error) {
- log("Failed to commit and push tasks.json:", error);
- }
+ try {
+ execSync(`git -C ${process.env.TD_TASK_DIR} add tasks.json`, { stdio: "pipe" });
+ execSync(`git -C ${process.env.TD_TASK_DIR} commit -m "${commitMessage}"`, { stdio: "pipe" });
+ execSync(`git -C ${process.env.TD_TASK_DIR} push origin`, { stdio: "pipe" });
+ } catch (error) {
+ log("Failed to commit and push tasks.json:", error);
+ }
}
export function pullTasks() {
- try {
- execSync(`git -C ${process.env.TD_TASK_DIR} restore tasks.json`, { stdio: "pipe" });
- execSync(`git -C ${process.env.TD_TASK_DIR} pull`, { stdio: "pipe" });
- } catch (error) {
- log("Failed to pull tasks.json:", error);
- }
+ try {
+ execSync(`git -C ${process.env.TD_TASK_DIR} restore tasks.json`, { stdio: "pipe" });
+ execSync(`git -C ${process.env.TD_TASK_DIR} pull`, { stdio: "pipe" });
+ } catch (error) {
+ log("Failed to pull tasks.json:", error);
+ }
}