yarlo-cli 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/agent/setup.d.ts.map +1 -1
- package/dist/commands/agent/setup.js +6 -5
- package/dist/commands/agent/setup.js.map +1 -1
- package/dist/commands/edit.d.ts +1 -1
- package/dist/commands/edit.d.ts.map +1 -1
- package/dist/commands/edit.js +47 -7
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/install.d.ts +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +62 -11
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/set.d.ts +17 -0
- package/dist/commands/set.d.ts.map +1 -0
- package/dist/commands/set.js +77 -0
- package/dist/commands/set.js.map +1 -0
- package/dist/commands/uninstall.d.ts +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +45 -7
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.d.ts +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +48 -9
- package/dist/commands/update.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../source/commands/agent/setup.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../source/commands/agent/setup.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,qCAAqC,CAAC;AAyF9D,MAAM,CAAC,OAAO,UAAU,UAAU,4CA8EjC"}
|
|
@@ -44,9 +44,10 @@ yarlo show <id> --json
|
|
|
44
44
|
# Create a task
|
|
45
45
|
yarlo add --title "Task title" --status todo --priority high --json
|
|
46
46
|
|
|
47
|
-
#
|
|
48
|
-
yarlo
|
|
49
|
-
yarlo
|
|
47
|
+
# Set a field value on a task
|
|
48
|
+
yarlo set <id> <field> <value>
|
|
49
|
+
yarlo set <id> status done
|
|
50
|
+
yarlo set <id> priority high
|
|
50
51
|
|
|
51
52
|
# View config
|
|
52
53
|
yarlo config --json
|
|
@@ -87,8 +88,8 @@ Task description and notes here.
|
|
|
87
88
|
|
|
88
89
|
1. Check existing tasks: \`yarlo list --json\`
|
|
89
90
|
2. Pick a task or create one: \`yarlo add --title "..." --json\`
|
|
90
|
-
3. Start working: \`yarlo
|
|
91
|
-
4. Complete: \`yarlo
|
|
91
|
+
3. Start working: \`yarlo set <id> status in_progress\`
|
|
92
|
+
4. Complete: \`yarlo set <id> status done\`
|
|
92
93
|
`;
|
|
93
94
|
}
|
|
94
95
|
export default function AgentSetup() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../source/commands/agent/setup.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,MAAM,CAAC,MAAM,WAAW,GAAG,kCAAkC,CAAC;AAE9D,SAAS,yBAAyB,CAAC,MAAmB;IACpD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACpF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,aAAa,EAAE,OAAO,IAAI,EAAE,CAAC;IAEhD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM;SAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC;QACxC,IAAI,CAAC,CAAC,OAAO;YAAE,GAAG,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,CAAC,QAAQ;YAAE,GAAG,IAAI,eAAe,CAAC;QACvC,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;YAAE,GAAG,IAAI,iBAAiB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3E,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;8HAEqH,MAAM,CAAC,SAAS
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../source/commands/agent/setup.tsx"],"names":[],"mappings":"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"}
|
package/dist/commands/edit.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import zod from "zod";
|
|
2
2
|
export declare const description = "Edit a task in your editor";
|
|
3
|
-
export declare const args: zod.ZodTuple<[zod.ZodString], null>;
|
|
3
|
+
export declare const args: zod.ZodTuple<[zod.ZodDefault<zod.ZodString>], null>;
|
|
4
4
|
export declare const options: zod.ZodObject<{
|
|
5
5
|
editor: zod.ZodOptional<zod.ZodString>;
|
|
6
6
|
}, "strip", zod.ZodTypeAny, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../source/commands/edit.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../source/commands/edit.tsx"],"names":[],"mappings":"AAGA,OAAO,GAAG,MAAM,KAAK,CAAC;AAMtB,eAAO,MAAM,WAAW,+BAA+B,CAAC;AAExD,eAAO,MAAM,IAAI,qDAEf,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;EAKlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,2CA0FhE"}
|
package/dist/commands/edit.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { Text } from "ink";
|
|
3
|
+
import { Text, Box } from "ink";
|
|
4
|
+
import { Select } from "@inkjs/ui";
|
|
4
5
|
import zod from "zod";
|
|
5
6
|
import { argument, option } from "pastel";
|
|
6
7
|
import { spawn } from "node:child_process";
|
|
7
|
-
import { loadConfig, getTask } from "yarlo-core";
|
|
8
|
+
import { loadConfig, getTask, listTasks } from "yarlo-core";
|
|
8
9
|
export const description = "Edit a task in your editor";
|
|
9
10
|
export const args = zod.tuple([
|
|
10
|
-
zod.string().describe(argument({ name: "id", description: "Task ID or prefix" })),
|
|
11
|
+
zod.string().default("").describe(argument({ name: "id", description: "Task ID or prefix" })),
|
|
11
12
|
]);
|
|
12
13
|
export const options = zod.object({
|
|
13
14
|
editor: zod
|
|
@@ -16,14 +17,44 @@ export const options = zod.object({
|
|
|
16
17
|
.describe(option({ description: "Editor to use (defaults to $EDITOR)", alias: "e" })),
|
|
17
18
|
});
|
|
18
19
|
export default function Edit({ args: [id], options: opts }) {
|
|
19
|
-
const [status, setStatus] = React.useState("loading");
|
|
20
|
+
const [status, setStatus] = React.useState(id ? "loading" : "loading");
|
|
21
|
+
const [tasks, setTasks] = React.useState([]);
|
|
22
|
+
const [selectedId, setSelectedId] = React.useState(id);
|
|
20
23
|
const [filePath, setFilePath] = React.useState("");
|
|
21
24
|
const [error, setError] = React.useState("");
|
|
25
|
+
// Load tasks for interactive selection when no id provided
|
|
22
26
|
React.useEffect(() => {
|
|
27
|
+
if (id)
|
|
28
|
+
return;
|
|
23
29
|
(async () => {
|
|
24
30
|
try {
|
|
25
31
|
const { config, configDir } = await loadConfig();
|
|
26
|
-
const
|
|
32
|
+
const allTasks = await listTasks(config, configDir);
|
|
33
|
+
if (allTasks.length === 0) {
|
|
34
|
+
setError("No tasks found. Run `yarlo add` to create one.");
|
|
35
|
+
setStatus("error");
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
setTasks(allTasks);
|
|
39
|
+
setStatus("selecting");
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
43
|
+
setStatus("error");
|
|
44
|
+
}
|
|
45
|
+
})();
|
|
46
|
+
}, []);
|
|
47
|
+
// Open editor when id is available
|
|
48
|
+
React.useEffect(() => {
|
|
49
|
+
const taskId = id || selectedId;
|
|
50
|
+
if (!taskId)
|
|
51
|
+
return;
|
|
52
|
+
if (status === "selecting")
|
|
53
|
+
return;
|
|
54
|
+
(async () => {
|
|
55
|
+
try {
|
|
56
|
+
const { config, configDir } = await loadConfig();
|
|
57
|
+
const task = await getTask(config, configDir, taskId);
|
|
27
58
|
setFilePath(task.file_path);
|
|
28
59
|
const editor = opts.editor ?? process.env.EDITOR ?? "vi";
|
|
29
60
|
setStatus("editing");
|
|
@@ -45,11 +76,20 @@ export default function Edit({ args: [id], options: opts }) {
|
|
|
45
76
|
setStatus("error");
|
|
46
77
|
}
|
|
47
78
|
})();
|
|
48
|
-
}, []);
|
|
79
|
+
}, [selectedId]);
|
|
49
80
|
if (status === "error")
|
|
50
81
|
return _jsx(Text, { color: "red", children: error });
|
|
51
82
|
if (status === "loading")
|
|
52
|
-
return _jsx(Text, { children: "Loading
|
|
83
|
+
return _jsx(Text, { children: "Loading..." });
|
|
84
|
+
if (status === "selecting") {
|
|
85
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Select a task to edit:" }), _jsx(Select, { options: tasks.map((t) => ({
|
|
86
|
+
label: `[${t.id}] ${t.title}`,
|
|
87
|
+
value: t.id,
|
|
88
|
+
})), onChange: (value) => {
|
|
89
|
+
setSelectedId(value);
|
|
90
|
+
setStatus("loading");
|
|
91
|
+
} })] }));
|
|
92
|
+
}
|
|
53
93
|
if (status === "editing")
|
|
54
94
|
return _jsxs(Text, { children: ["Editing ", filePath, "..."] });
|
|
55
95
|
return (_jsxs(Text, { color: "green", children: ["Saved: ", filePath] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../source/commands/edit.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../source/commands/edit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import zod from "zod";
|
|
2
2
|
export declare const description = "Install a yarlo plugin";
|
|
3
|
-
export declare const args: zod.ZodTuple<[zod.ZodString], null>;
|
|
3
|
+
export declare const args: zod.ZodTuple<[zod.ZodDefault<zod.ZodString>], null>;
|
|
4
4
|
type Props = {
|
|
5
5
|
args: zod.infer<typeof args>;
|
|
6
6
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../source/commands/install.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../source/commands/install.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAEpD,eAAO,MAAM,IAAI,qDAEf,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;CAC9B,CAAC;AAOF,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,2CA+G5D"}
|
package/dist/commands/install.js
CHANGED
|
@@ -1,36 +1,75 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { Text } from "ink";
|
|
3
|
+
import { Text, Box } from "ink";
|
|
4
|
+
import { Select } from "@inkjs/ui";
|
|
4
5
|
import { execSync } from "node:child_process";
|
|
5
6
|
import zod from "zod";
|
|
6
7
|
import { argument } from "pastel";
|
|
7
8
|
import { loadConfig, saveConfig } from "yarlo-core";
|
|
8
9
|
export const description = "Install a yarlo plugin";
|
|
9
10
|
export const args = zod.tuple([
|
|
10
|
-
zod.string().describe(argument({ name: "plugin", description: "Plugin name (e.g., board)" })),
|
|
11
|
+
zod.string().default("").describe(argument({ name: "plugin", description: "Plugin name (e.g., board)" })),
|
|
11
12
|
]);
|
|
12
13
|
export default function Install({ args: [pluginName] }) {
|
|
13
|
-
const [status, setStatus] = React.useState("installing");
|
|
14
|
+
const [status, setStatus] = React.useState(pluginName ? "installing" : "loading");
|
|
15
|
+
const [packages, setPackages] = React.useState([]);
|
|
16
|
+
const [selected, setSelected] = React.useState(pluginName);
|
|
14
17
|
const [error, setError] = React.useState("");
|
|
18
|
+
// Search npm for available plugins when no name provided
|
|
15
19
|
React.useEffect(() => {
|
|
20
|
+
if (pluginName)
|
|
21
|
+
return;
|
|
22
|
+
(async () => {
|
|
23
|
+
try {
|
|
24
|
+
const { config } = await loadConfig();
|
|
25
|
+
const res = await fetch("https://registry.npmjs.org/-/v1/search?text=yarlo-plugin-&size=50");
|
|
26
|
+
if (!res.ok) {
|
|
27
|
+
setError("Failed to search npm registry. Provide the plugin name directly: yarlo install <name>");
|
|
28
|
+
setStatus("error");
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const data = await res.json();
|
|
32
|
+
const available = data.objects
|
|
33
|
+
.map((o) => o.package)
|
|
34
|
+
.filter((pkg) => pkg.name.startsWith("yarlo-plugin-"))
|
|
35
|
+
.filter((pkg) => {
|
|
36
|
+
const shortName = pkg.name.replace("yarlo-plugin-", "");
|
|
37
|
+
return !config.plugins.includes(shortName);
|
|
38
|
+
});
|
|
39
|
+
if (available.length === 0) {
|
|
40
|
+
setError("No new plugins available to install.");
|
|
41
|
+
setStatus("error");
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
setPackages(available);
|
|
45
|
+
setStatus("selecting");
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
setError("Failed to search npm registry. Provide the plugin name directly: yarlo install <name>");
|
|
49
|
+
setStatus("error");
|
|
50
|
+
}
|
|
51
|
+
})();
|
|
52
|
+
}, []);
|
|
53
|
+
// Install the selected plugin
|
|
54
|
+
React.useEffect(() => {
|
|
55
|
+
if (!selected || status === "selecting" || status === "loading")
|
|
56
|
+
return;
|
|
16
57
|
(async () => {
|
|
17
58
|
try {
|
|
18
59
|
const { config, configDir, projectDir } = await loadConfig();
|
|
19
|
-
const packageName =
|
|
20
|
-
?
|
|
21
|
-
: `yarlo-plugin-${
|
|
60
|
+
const packageName = selected.startsWith("yarlo-plugin-")
|
|
61
|
+
? selected
|
|
62
|
+
: `yarlo-plugin-${selected}`;
|
|
22
63
|
const shortName = packageName.replace("yarlo-plugin-", "");
|
|
23
64
|
if (config.plugins.includes(shortName)) {
|
|
24
65
|
setError(`Plugin "${shortName}" is already installed`);
|
|
25
66
|
setStatus("error");
|
|
26
67
|
return;
|
|
27
68
|
}
|
|
28
|
-
// Install the npm package
|
|
29
69
|
execSync(`pnpm add ${packageName}`, {
|
|
30
70
|
cwd: projectDir,
|
|
31
71
|
stdio: "pipe",
|
|
32
72
|
});
|
|
33
|
-
// Add to config
|
|
34
73
|
config.plugins.push(shortName);
|
|
35
74
|
await saveConfig(config, configDir);
|
|
36
75
|
setStatus("done");
|
|
@@ -40,12 +79,24 @@ export default function Install({ args: [pluginName] }) {
|
|
|
40
79
|
setStatus("error");
|
|
41
80
|
}
|
|
42
81
|
})();
|
|
43
|
-
}, []);
|
|
82
|
+
}, [selected]);
|
|
44
83
|
if (status === "error")
|
|
45
84
|
return _jsx(Text, { color: "red", children: error });
|
|
85
|
+
if (status === "loading")
|
|
86
|
+
return _jsx(Text, { children: "Searching npm for plugins..." });
|
|
87
|
+
if (status === "selecting") {
|
|
88
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Select a plugin to install:" }), _jsx(Select, { options: packages.map((pkg) => ({
|
|
89
|
+
label: `${pkg.name.replace("yarlo-plugin-", "")} — ${pkg.description || "No description"}`,
|
|
90
|
+
value: pkg.name,
|
|
91
|
+
})), onChange: (value) => {
|
|
92
|
+
setSelected(value);
|
|
93
|
+
setStatus("installing");
|
|
94
|
+
} })] }));
|
|
95
|
+
}
|
|
46
96
|
if (status === "installing") {
|
|
47
|
-
|
|
97
|
+
const displayName = selected.startsWith("yarlo-plugin-") ? selected : `yarlo-plugin-${selected}`;
|
|
98
|
+
return _jsxs(Text, { children: ["Installing ", displayName, "..."] });
|
|
48
99
|
}
|
|
49
|
-
return (_jsxs(Text, { color: "green", bold: true, children: ["Installed plugin: ",
|
|
100
|
+
return (_jsxs(Text, { color: "green", bold: true, children: ["Installed plugin: ", selected.replace("yarlo-plugin-", "")] }));
|
|
50
101
|
}
|
|
51
102
|
//# sourceMappingURL=install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../source/commands/install.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../source/commands/install.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import zod from "zod";
|
|
2
|
+
export declare const description = "Set a field value on a task";
|
|
3
|
+
export declare const args: zod.ZodTuple<[zod.ZodString, zod.ZodString, zod.ZodString], null>;
|
|
4
|
+
export declare const options: zod.ZodObject<{
|
|
5
|
+
json: zod.ZodDefault<zod.ZodBoolean>;
|
|
6
|
+
}, "strip", zod.ZodTypeAny, {
|
|
7
|
+
json: boolean;
|
|
8
|
+
}, {
|
|
9
|
+
json?: boolean | undefined;
|
|
10
|
+
}>;
|
|
11
|
+
type Props = {
|
|
12
|
+
args: zod.infer<typeof args>;
|
|
13
|
+
options: zod.infer<typeof options>;
|
|
14
|
+
};
|
|
15
|
+
export default function Set({ args: [id, field, rawValue], options: opts }: Props): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../source/commands/set.tsx"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB,eAAO,MAAM,WAAW,gCAAgC,CAAC;AAEzD,eAAO,MAAM,IAAI,mEAIf,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;EAKlB,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CACpC,CAAC;AA4BF,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,2CAmChF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Text } from "ink";
|
|
4
|
+
import zod from "zod";
|
|
5
|
+
import { argument, option } from "pastel";
|
|
6
|
+
import { loadConfig, updateTask } from "yarlo-core";
|
|
7
|
+
import { isJsonMode, jsonOutput } from "../utils/output.js";
|
|
8
|
+
export const description = "Set a field value on a task";
|
|
9
|
+
export const args = zod.tuple([
|
|
10
|
+
zod.string().describe(argument({ name: "id", description: "Task ID or prefix" })),
|
|
11
|
+
zod.string().describe(argument({ name: "field", description: "Field name (e.g., status, priority)" })),
|
|
12
|
+
zod.string().describe(argument({ name: "value", description: "New value" })),
|
|
13
|
+
]);
|
|
14
|
+
export const options = zod.object({
|
|
15
|
+
json: zod
|
|
16
|
+
.boolean()
|
|
17
|
+
.describe(option({ description: "Output as JSON" }))
|
|
18
|
+
.default(false),
|
|
19
|
+
});
|
|
20
|
+
function parseValue(raw, fieldDef) {
|
|
21
|
+
if (!fieldDef)
|
|
22
|
+
return raw;
|
|
23
|
+
switch (fieldDef.type) {
|
|
24
|
+
case "number": {
|
|
25
|
+
const n = Number(raw);
|
|
26
|
+
if (Number.isNaN(n))
|
|
27
|
+
throw new Error(`Invalid number: "${raw}"`);
|
|
28
|
+
return n;
|
|
29
|
+
}
|
|
30
|
+
case "boolean": {
|
|
31
|
+
const lower = raw.toLowerCase();
|
|
32
|
+
if (["true", "yes", "1"].includes(lower))
|
|
33
|
+
return true;
|
|
34
|
+
if (["false", "no", "0"].includes(lower))
|
|
35
|
+
return false;
|
|
36
|
+
throw new Error(`Invalid boolean: "${raw}" (use true/false, yes/no, or 1/0)`);
|
|
37
|
+
}
|
|
38
|
+
case "multi_select":
|
|
39
|
+
return raw.split(",").map((s) => s.trim()).filter(Boolean);
|
|
40
|
+
case "date":
|
|
41
|
+
case "text":
|
|
42
|
+
case "single_select":
|
|
43
|
+
case "url":
|
|
44
|
+
default:
|
|
45
|
+
return raw;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export default function Set({ args: [id, field, rawValue], options: opts }) {
|
|
49
|
+
const [task, setTask] = React.useState(null);
|
|
50
|
+
const [error, setError] = React.useState(null);
|
|
51
|
+
React.useEffect(() => {
|
|
52
|
+
(async () => {
|
|
53
|
+
try {
|
|
54
|
+
const { config, configDir } = await loadConfig();
|
|
55
|
+
const fieldDef = config.fields.find((f) => f.name === field);
|
|
56
|
+
const value = parseValue(rawValue, fieldDef);
|
|
57
|
+
const result = await updateTask(config, configDir, id, {
|
|
58
|
+
fields: { [field]: value },
|
|
59
|
+
});
|
|
60
|
+
if (isJsonMode() || opts.json) {
|
|
61
|
+
jsonOutput(result);
|
|
62
|
+
process.exit(0);
|
|
63
|
+
}
|
|
64
|
+
setTask(result);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
68
|
+
}
|
|
69
|
+
})();
|
|
70
|
+
}, []);
|
|
71
|
+
if (error)
|
|
72
|
+
return _jsx(Text, { color: "red", children: error });
|
|
73
|
+
if (!task)
|
|
74
|
+
return _jsx(Text, { children: "Updating..." });
|
|
75
|
+
return (_jsxs(Text, { color: "green", bold: true, children: ["[", task.id, "] ", field, ": ", rawValue] }));
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../source/commands/set.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAI5D,MAAM,CAAC,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAEzD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;IAC5B,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACjF,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC,CAAC;IACtG,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;CAC7E,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,GAAG;SACN,OAAO,EAAE;SACT,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;SACnD,OAAO,CAAC,KAAK,CAAC;CAClB,CAAC,CAAC;AAOH,SAAS,UAAU,CAAC,GAAW,EAAE,QAA0B;IACzD,IAAI,CAAC,QAAQ;QAAE,OAAO,GAAG,CAAC;IAE1B,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACtD,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,oCAAoC,CAAC,CAAC;QAChF,CAAC;QACD,KAAK,cAAc;YACjB,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,eAAe,CAAC;QACrB,KAAK,KAAK,CAAC;QACX;YACE,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAS;IAC/E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAc,IAAI,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE9D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;gBAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAE7C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;oBACrD,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;iBAC3B,CAAC,CAAC;gBAEH,IAAI,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC9B,UAAU,CAAC,MAAM,CAAC,CAAC;oBACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,KAAK;QAAE,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,GAAQ,CAAC;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAC,IAAI,8BAAmB,CAAC;IAE3C,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,wBACpB,IAAI,CAAC,EAAE,QAAI,KAAK,QAAI,QAAQ,IACzB,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import zod from "zod";
|
|
2
2
|
export declare const description = "Uninstall a yarlo plugin";
|
|
3
|
-
export declare const args: zod.ZodTuple<[zod.ZodString], null>;
|
|
3
|
+
export declare const args: zod.ZodTuple<[zod.ZodDefault<zod.ZodString>], null>;
|
|
4
4
|
type Props = {
|
|
5
5
|
args: zod.infer<typeof args>;
|
|
6
6
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../source/commands/uninstall.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../source/commands/uninstall.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,WAAW,6BAA6B,CAAC;AAEtD,eAAO,MAAM,IAAI,qDAEf,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,2CAwF9D"}
|
|
@@ -1,22 +1,49 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { Text } from "ink";
|
|
3
|
+
import { Text, Box } from "ink";
|
|
4
|
+
import { Select } from "@inkjs/ui";
|
|
4
5
|
import { execSync } from "node:child_process";
|
|
5
6
|
import zod from "zod";
|
|
6
7
|
import { argument } from "pastel";
|
|
7
8
|
import { loadConfig, saveConfig } from "yarlo-core";
|
|
8
9
|
export const description = "Uninstall a yarlo plugin";
|
|
9
10
|
export const args = zod.tuple([
|
|
10
|
-
zod.string().describe(argument({ name: "plugin", description: "Plugin name" })),
|
|
11
|
+
zod.string().default("").describe(argument({ name: "plugin", description: "Plugin name" })),
|
|
11
12
|
]);
|
|
12
13
|
export default function Uninstall({ args: [pluginName] }) {
|
|
13
|
-
const [status, setStatus] = React.useState("removing");
|
|
14
|
+
const [status, setStatus] = React.useState(pluginName ? "removing" : "loading");
|
|
15
|
+
const [plugins, setPlugins] = React.useState([]);
|
|
16
|
+
const [selected, setSelected] = React.useState(pluginName);
|
|
14
17
|
const [error, setError] = React.useState("");
|
|
18
|
+
// Load installed plugins for selection
|
|
15
19
|
React.useEffect(() => {
|
|
20
|
+
if (pluginName)
|
|
21
|
+
return;
|
|
22
|
+
(async () => {
|
|
23
|
+
try {
|
|
24
|
+
const { config } = await loadConfig();
|
|
25
|
+
if (config.plugins.length === 0) {
|
|
26
|
+
setError("No plugins installed.");
|
|
27
|
+
setStatus("error");
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
setPlugins(config.plugins);
|
|
31
|
+
setStatus("selecting");
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
35
|
+
setStatus("error");
|
|
36
|
+
}
|
|
37
|
+
})();
|
|
38
|
+
}, []);
|
|
39
|
+
// Uninstall the selected plugin
|
|
40
|
+
React.useEffect(() => {
|
|
41
|
+
if (!selected || status === "selecting" || status === "loading")
|
|
42
|
+
return;
|
|
16
43
|
(async () => {
|
|
17
44
|
try {
|
|
18
45
|
const { config, configDir } = await loadConfig();
|
|
19
|
-
const shortName =
|
|
46
|
+
const shortName = selected.replace("yarlo-plugin-", "");
|
|
20
47
|
const packageName = `yarlo-plugin-${shortName}`;
|
|
21
48
|
if (!config.plugins.includes(shortName)) {
|
|
22
49
|
setError(`Plugin "${shortName}" is not installed`);
|
|
@@ -36,11 +63,22 @@ export default function Uninstall({ args: [pluginName] }) {
|
|
|
36
63
|
setStatus("error");
|
|
37
64
|
}
|
|
38
65
|
})();
|
|
39
|
-
}, []);
|
|
66
|
+
}, [selected]);
|
|
40
67
|
if (status === "error")
|
|
41
68
|
return _jsx(Text, { color: "red", children: error });
|
|
69
|
+
if (status === "loading")
|
|
70
|
+
return _jsx(Text, { children: "Loading plugins..." });
|
|
71
|
+
if (status === "selecting") {
|
|
72
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Select a plugin to uninstall:" }), _jsx(Select, { options: plugins.map((p) => ({
|
|
73
|
+
label: p,
|
|
74
|
+
value: p,
|
|
75
|
+
})), onChange: (value) => {
|
|
76
|
+
setSelected(value);
|
|
77
|
+
setStatus("removing");
|
|
78
|
+
} })] }));
|
|
79
|
+
}
|
|
42
80
|
if (status === "removing")
|
|
43
|
-
return _jsxs(Text, { children: ["Removing ",
|
|
44
|
-
return (_jsxs(Text, { color: "green", bold: true, children: ["Uninstalled plugin: ",
|
|
81
|
+
return _jsxs(Text, { children: ["Removing ", selected, "..."] });
|
|
82
|
+
return (_jsxs(Text, { color: "green", bold: true, children: ["Uninstalled plugin: ", selected] }));
|
|
45
83
|
}
|
|
46
84
|
//# sourceMappingURL=uninstall.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../source/commands/uninstall.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../source/commands/uninstall.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import zod from "zod";
|
|
2
2
|
export declare const description = "Update an installed yarlo plugin to the latest version allowed by package.json";
|
|
3
|
-
export declare const args: zod.ZodTuple<[zod.ZodString], null>;
|
|
3
|
+
export declare const args: zod.ZodTuple<[zod.ZodDefault<zod.ZodString>], null>;
|
|
4
4
|
type Props = {
|
|
5
5
|
args: zod.infer<typeof args>;
|
|
6
6
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,KAAK,CAAC;AAItB,eAAO,MAAM,WAAW,mFAAmF,CAAC;AAE5G,eAAO,MAAM,IAAI,qDAIf,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,2CA4F3D"}
|
package/dist/commands/update.js
CHANGED
|
@@ -1,24 +1,51 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { Text } from "ink";
|
|
3
|
+
import { Text, Box } from "ink";
|
|
4
|
+
import { Select } from "@inkjs/ui";
|
|
4
5
|
import { execSync } from "node:child_process";
|
|
5
6
|
import zod from "zod";
|
|
6
7
|
import { argument } from "pastel";
|
|
7
8
|
import { loadConfig } from "yarlo-core";
|
|
8
9
|
export const description = "Update an installed yarlo plugin to the latest version allowed by package.json";
|
|
9
10
|
export const args = zod.tuple([
|
|
10
|
-
zod.string().describe(argument({ name: "plugin", description: "Plugin name (e.g., board)" })),
|
|
11
|
+
zod.string().default("").describe(argument({ name: "plugin", description: "Plugin name (e.g., board)" })),
|
|
11
12
|
]);
|
|
12
13
|
export default function Update({ args: [pluginName] }) {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const [status, setStatus] = React.useState("updating");
|
|
14
|
+
const [status, setStatus] = React.useState(pluginName ? "updating" : "loading");
|
|
15
|
+
const [plugins, setPlugins] = React.useState([]);
|
|
16
|
+
const [selected, setSelected] = React.useState(pluginName);
|
|
17
17
|
const [error, setError] = React.useState("");
|
|
18
|
+
// Load installed plugins for selection
|
|
18
19
|
React.useEffect(() => {
|
|
20
|
+
if (pluginName)
|
|
21
|
+
return;
|
|
22
|
+
(async () => {
|
|
23
|
+
try {
|
|
24
|
+
const { config } = await loadConfig();
|
|
25
|
+
if (config.plugins.length === 0) {
|
|
26
|
+
setError("No plugins installed.");
|
|
27
|
+
setStatus("error");
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
setPlugins(config.plugins);
|
|
31
|
+
setStatus("selecting");
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
35
|
+
setStatus("error");
|
|
36
|
+
}
|
|
37
|
+
})();
|
|
38
|
+
}, []);
|
|
39
|
+
// Update the selected plugin
|
|
40
|
+
React.useEffect(() => {
|
|
41
|
+
if (!selected || status === "selecting" || status === "loading")
|
|
42
|
+
return;
|
|
19
43
|
(async () => {
|
|
20
44
|
try {
|
|
21
45
|
const { config, projectDir } = await loadConfig();
|
|
46
|
+
const packageName = selected.startsWith("yarlo-plugin-")
|
|
47
|
+
? selected
|
|
48
|
+
: `yarlo-plugin-${selected}`;
|
|
22
49
|
const shortName = packageName.replace("yarlo-plugin-", "");
|
|
23
50
|
if (!config.plugins.includes(shortName)) {
|
|
24
51
|
setError(`Plugin "${shortName}" is not installed. Run \`yarlo install ${shortName}\` first.`);
|
|
@@ -36,12 +63,24 @@ export default function Update({ args: [pluginName] }) {
|
|
|
36
63
|
setStatus("error");
|
|
37
64
|
}
|
|
38
65
|
})();
|
|
39
|
-
}, []);
|
|
66
|
+
}, [selected]);
|
|
40
67
|
if (status === "error")
|
|
41
68
|
return _jsx(Text, { color: "red", children: error });
|
|
69
|
+
if (status === "loading")
|
|
70
|
+
return _jsx(Text, { children: "Loading plugins..." });
|
|
71
|
+
if (status === "selecting") {
|
|
72
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Select a plugin to update:" }), _jsx(Select, { options: plugins.map((p) => ({
|
|
73
|
+
label: p,
|
|
74
|
+
value: p,
|
|
75
|
+
})), onChange: (value) => {
|
|
76
|
+
setSelected(value);
|
|
77
|
+
setStatus("updating");
|
|
78
|
+
} })] }));
|
|
79
|
+
}
|
|
42
80
|
if (status === "updating") {
|
|
43
|
-
|
|
81
|
+
const displayName = selected.startsWith("yarlo-plugin-") ? selected : `yarlo-plugin-${selected}`;
|
|
82
|
+
return _jsxs(Text, { children: ["Updating ", displayName, "..."] });
|
|
44
83
|
}
|
|
45
|
-
return (_jsxs(Text, { color: "green", bold: true, children: ["Updated plugin: ",
|
|
84
|
+
return (_jsxs(Text, { color: "green", bold: true, children: ["Updated plugin: ", (selected ?? "").replace("yarlo-plugin-", "")] }));
|
|
46
85
|
}
|
|
47
86
|
//# sourceMappingURL=update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../source/commands/update.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yarlo-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Yet Another Repo Local Organizer — Local task management using markdown with YAML frontmatter",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"pastel": "^3.0.0",
|
|
37
37
|
"react": "^18.3.1",
|
|
38
38
|
"zod": "^3.24.0",
|
|
39
|
-
"yarlo-core": "0.1.
|
|
40
|
-
"yarlo-types": "0.1.
|
|
39
|
+
"yarlo-core": "0.1.4",
|
|
40
|
+
"yarlo-types": "0.1.4"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^25.5.2",
|