team-toon-tack 3.7.0 → 3.7.2
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/bin/cli.js
CHANGED
|
@@ -110,8 +110,14 @@ async function main() {
|
|
|
110
110
|
process.env.TOON_DIR = dir;
|
|
111
111
|
// Load .ttt/.env (if present) and resolve configured Linear API key env
|
|
112
112
|
// var into LINEAR_API_KEY so downstream code is workspace-aware.
|
|
113
|
+
// Skip the resolver for `init` so the workspace picker sees the raw
|
|
114
|
+
// env — otherwise we'd mirror the previously-saved key over LINEAR_API_KEY
|
|
115
|
+
// and the user's shell-level key would appear to point to the saved
|
|
116
|
+
// workspace.
|
|
113
117
|
await loadDotEnv(join(dir, ".env"));
|
|
114
|
-
|
|
118
|
+
if (command !== "init") {
|
|
119
|
+
await resolveLinearApiKey(join(dir, "local.toon"));
|
|
120
|
+
}
|
|
115
121
|
if (!COMMANDS.includes(command)) {
|
|
116
122
|
console.error(`Unknown command: ${command}`);
|
|
117
123
|
console.error(`Run 'ttt help' for usage.`);
|
|
@@ -35,6 +35,7 @@ export async function initLinear(options, paths) {
|
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
if (saveToEnvFile) {
|
|
38
|
+
await fs.mkdir(paths.baseDir, { recursive: true });
|
|
38
39
|
await writeDotEnv(paths.envPath, { [envName]: apiKey });
|
|
39
40
|
console.log(` ✓ Wrote ${envName} to ${paths.envPath}`);
|
|
40
41
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic prompt functions shared between Linear and Trello init
|
|
3
3
|
*/
|
|
4
|
-
import { checkbox, select } from "@inquirer/prompts";
|
|
4
|
+
import { checkbox, confirm, select } from "@inquirer/prompts";
|
|
5
5
|
export async function selectTaskSource(options) {
|
|
6
6
|
if (options.source) {
|
|
7
7
|
return options.source;
|
|
@@ -60,6 +60,13 @@ export async function selectLabelFilter(labels, options) {
|
|
|
60
60
|
return options.labels;
|
|
61
61
|
}
|
|
62
62
|
if (options.interactive && labels.length > 0) {
|
|
63
|
+
const filterByLabels = await confirm({
|
|
64
|
+
message: "Filter issues by labels? (No = fetch all, ignoring labels)",
|
|
65
|
+
default: false,
|
|
66
|
+
});
|
|
67
|
+
if (!filterByLabels) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
63
70
|
const labelChoices = labels.map((l) => ({ name: l.name, value: l.name }));
|
|
64
71
|
const selectedLabels = await checkbox({
|
|
65
72
|
message: "Select label filters (space to select, enter to confirm):",
|