@fiftth/fiftth-cli 0.1.0 → 1.0.0

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.
Files changed (40) hide show
  1. package/.github/workflows/publish-npm.yml +62 -0
  2. package/README.md +123 -111
  3. package/dist/api/client.d.ts +1 -0
  4. package/dist/api/client.d.ts.map +1 -1
  5. package/dist/api/client.js +4 -0
  6. package/dist/api/client.js.map +1 -1
  7. package/dist/commands/checkout.d.ts +1 -1
  8. package/dist/commands/checkout.d.ts.map +1 -1
  9. package/dist/commands/checkout.js +63 -31
  10. package/dist/commands/checkout.js.map +1 -1
  11. package/dist/commands/tasks.d.ts.map +1 -1
  12. package/dist/commands/tasks.js +4 -1
  13. package/dist/commands/tasks.js.map +1 -1
  14. package/dist/config/configService.d.ts.map +1 -1
  15. package/dist/config/configService.js +17 -4
  16. package/dist/config/configService.js.map +1 -1
  17. package/dist/index.js +25 -25
  18. package/dist/index.js.map +1 -1
  19. package/dist/services/taskService.d.ts +1 -0
  20. package/dist/services/taskService.d.ts.map +1 -1
  21. package/dist/services/taskService.js +7 -0
  22. package/dist/services/taskService.js.map +1 -1
  23. package/package.json +56 -56
  24. package/src/api/client.ts +31 -26
  25. package/src/commands/checkout.ts +101 -68
  26. package/src/commands/login.ts +145 -145
  27. package/src/commands/repo.ts +113 -113
  28. package/src/commands/tasks.ts +86 -83
  29. package/src/commands/use.ts +149 -149
  30. package/src/config/configService.ts +56 -40
  31. package/src/context/runtimeContext.ts +42 -42
  32. package/src/git/gitService.ts +29 -29
  33. package/src/index.ts +133 -133
  34. package/src/services/taskContext.ts +32 -32
  35. package/src/services/taskService.ts +53 -45
  36. package/src/utils/api.ts +41 -41
  37. package/src/utils/config.ts +48 -48
  38. package/src/utils/ui.ts +46 -46
  39. package/tsconfig.json +18 -18
  40. package/vitest.config.ts +8 -8
@@ -0,0 +1,62 @@
1
+ name: Publish NPM Package
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ version:
7
+ description: New package version to publish (for example 0.1.1)
8
+ required: true
9
+ type: string
10
+
11
+ permissions:
12
+ contents: write
13
+ id-token: write
14
+
15
+ jobs:
16
+ publish:
17
+ runs-on: ubuntu-latest
18
+
19
+ steps:
20
+ - name: Checkout repository
21
+ uses: actions/checkout@v4
22
+ with:
23
+ fetch-depth: 0
24
+
25
+ - name: Setup Node.js
26
+ uses: actions/setup-node@v4
27
+ with:
28
+ node-version: 20
29
+ registry-url: https://registry.npmjs.org
30
+ cache: npm
31
+
32
+ - name: Install dependencies
33
+ run: npm ci
34
+
35
+ - name: Validate requested version
36
+ run: npm version "${{ inputs.version }}" --no-git-tag-version
37
+
38
+ - name: Lint
39
+ run: npm run lint
40
+
41
+ - name: Build
42
+ run: npm run build
43
+
44
+ - name: Publish package
45
+ run: npm publish --access public
46
+ env:
47
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
48
+
49
+ - name: Commit version bump
50
+ run: |
51
+ git config user.name "github-actions[bot]"
52
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
53
+ git add package.json package-lock.json
54
+ git commit -m "chore: release v${{ inputs.version }}"
55
+
56
+ - name: Create git tag
57
+ run: git tag "v${{ inputs.version }}"
58
+
59
+ - name: Push commit and tag
60
+ run: |
61
+ git push origin HEAD
62
+ git push origin "v${{ inputs.version }}"
package/README.md CHANGED
@@ -1,111 +1,123 @@
1
- # Fiftth CLI
2
-
3
- The "fiftth" symphony of Software Engineering. Start orchestrating your engineering workflows.
4
-
5
- Fiftth CLI helps your team authenticate, select a workspace, sync tasks, and checkout the right branch for each task-linked repository.
6
-
7
- ## Features
8
-
9
- - Command aliases: `fiftth` and `ftt`
10
-
11
- ## Install
12
-
13
- ### Global from npm (when published)
14
-
15
- ```bash
16
- npm install -g fiftth
17
- ```
18
-
19
- ### Local development link
20
-
21
- ```bash
22
- npm install
23
- npm run build
24
- npm link
25
- ```
26
-
27
- After linking, both commands should work:
28
-
29
- ```bash
30
- fiftth --help
31
- ftt --help
32
- ```
33
-
34
- ## Quick Start
35
-
36
- 1. Authenticate
37
-
38
- ```bash
39
- fiftth login
40
- ```
41
-
42
- 2. Choose workspace
43
-
44
- ```bash
45
- fiftth use
46
- ```
47
-
48
- 3. Add local repositories
49
-
50
- ```bash
51
- fiftth repo add api ~/dev/api
52
- fiftth repo add mobile C:\Users\you\Desktop\Owner\repo
53
- ```
54
-
55
- 4. Select task and list linked repositories
56
-
57
- ```bash
58
- fiftth tasks
59
- ```
60
-
61
- 5. Checkout task branch in a configured repository
62
-
63
- ```bash
64
- fiftth checkout owner/repo
65
- ```
66
-
67
- ## Commands
68
-
69
- ### Authentication
70
-
71
- - `fiftth login`
72
- - `fiftth login --token <token>`
73
- - `fiftth login --host <host>`
74
- - `fiftth login status`
75
- - `fiftth login logout`
76
-
77
- ### Workspace
78
-
79
- - `fiftth use`
80
- - `fiftth use <workspace>`
81
- - `fiftth use --list`
82
-
83
- ### Repository Registry
84
-
85
- - `fiftth repo add <repoName> <path...>`
86
- - `fiftth repo list`
87
- - `fiftth repo remove <repoName>`
88
-
89
- ### Tasks and Checkout
90
-
91
- - `fiftth tasks`
92
- - `fiftth checkout <repoName>`
93
-
94
- ## Configuration
95
-
96
- Config is saved to:
97
-
98
- - `~/.fiftth/config.json`
99
-
100
- Current defaults:
101
-
102
- ## Notes
103
-
104
- - `checkout` requires:
105
- - a selected task (`fiftth tasks`)
106
- - a local repo mapping (`fiftth repo add ...`)
107
- - a clean git working tree
108
-
109
- ## License
110
-
111
- MIT
1
+ # Fiftth CLI
2
+
3
+ ```text
4
+ ███████╗██╗███████╗████████╗████████╗██╗ ██╗
5
+ ██╔════╝██║██╔════╝╚══██╔══╝╚══██╔══╝██║ ██║
6
+ █████╗ ██║█████╗ ██║ ██║ ███████║
7
+ ██╔══╝ ██║██╔══╝ ██║ ██║ ██╔══██║
8
+ ██║ ██║██║ ██║ ██║ ██║ ██║
9
+ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
10
+ ```
11
+
12
+ The official CLI for [Fiftth](https://fiftth.com).
13
+
14
+ Built for humans, AI agents, and CI/CD pipelines.
15
+ The "fiftth" symphony of Software Engineering. Start orchestrating your engineering workflows.
16
+
17
+ Fiftth CLI helps your team authenticate, select a workspace, sync tasks, and checkout the right branch for each task-linked repository.
18
+
19
+ ## Features
20
+
21
+ - Command aliases: `fiftth` and `ftt`
22
+
23
+ ## Install
24
+
25
+ ```bash
26
+ npm install -g fiftth
27
+ ```
28
+
29
+ ### Local development link
30
+
31
+ ```bash
32
+ npm install
33
+ npm run build
34
+ npm link
35
+ ```
36
+
37
+ After linking, both commands should work:
38
+
39
+ ```bash
40
+ fiftth --help
41
+ ftt --help
42
+ ```
43
+
44
+ ## Quick Start
45
+
46
+ 1. Authenticate
47
+
48
+ ```bash
49
+ fiftth login
50
+ ```
51
+
52
+ 2. Choose workspace
53
+
54
+ ```bash
55
+ fiftth use
56
+ ```
57
+
58
+ 3. Add local repositories
59
+
60
+ ```bash
61
+ fiftth repo add api ~/dev/api
62
+ fiftth repo add mobile C:\Users\you\Desktop\Owner\repo
63
+ ```
64
+
65
+ 4. Select task and list linked repositories
66
+
67
+ ```bash
68
+ fiftth tasks
69
+ ```
70
+
71
+ 5. Checkout task branch in a configured repository
72
+
73
+ ```bash
74
+ fiftth checkout <taskId>
75
+ ```
76
+
77
+ ## Commands
78
+
79
+ ### Authentication
80
+
81
+ - `fiftth login`
82
+ - `fiftth login --token <token>`
83
+ - `fiftth login --host <host>`
84
+ - `fiftth login status`
85
+ - `fiftth login logout`
86
+
87
+ To use `fiftth login --token <token>`, you must first sign in on the [Fiftth](https://fiftth.com) and generate your token there.
88
+
89
+ ### Workspace
90
+
91
+ - `fiftth use`
92
+ - `fiftth use <workspace>`
93
+ - `fiftth use --list`
94
+
95
+ ### Repository Registry
96
+
97
+ - `fiftth repo add <repoName> <path...>`
98
+ - `fiftth repo list`
99
+ - `fiftth repo remove <repoName>`
100
+
101
+ ### Tasks and Checkout
102
+
103
+ - `fiftth tasks`
104
+ - `fiftth checkout <taskId>`
105
+
106
+ ## Configuration
107
+
108
+ Config is saved to:
109
+
110
+ - `~/.fiftth/config.json`
111
+
112
+ Current defaults:
113
+
114
+ ## Notes
115
+
116
+ - `checkout` requires:
117
+ - selecting the task first (`fiftth tasks`)
118
+ - local repo mappings for linked repositories (`fiftth repo add ...`)
119
+ - a clean git working tree
120
+
121
+ ## License
122
+
123
+ MIT
@@ -1,5 +1,6 @@
1
1
  export interface ApiClient {
2
2
  get<T>(endpoint: string): Promise<T>;
3
+ post<T>(endpoint: string, body: unknown): Promise<T>;
3
4
  }
4
5
  export declare function createApiClient(): ApiClient;
5
6
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACrC;AAED,wBAAgB,eAAe,IAAI,SAAS,CAkB3C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACpC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACrD;AAED,wBAAgB,eAAe,IAAI,SAAS,CAsB3C"}
@@ -15,6 +15,10 @@ export function createApiClient() {
15
15
  const response = await httpClient.get(endpoint);
16
16
  return response.data;
17
17
  },
18
+ async post(endpoint, body) {
19
+ const response = await httpClient.post(endpoint, body);
20
+ return response.data;
21
+ },
18
22
  };
19
23
  }
20
24
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAM/C,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAE3B,MAAM,UAAU,GAAkB,KAAK,CAAC,MAAM,CAAC;QAC7C,OAAO,EAAE,MAAM,CAAC,IAAI;QACpB,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;YACvC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,kBAAkB;SACjC;KACF,CAAC,CAAA;IAEF,OAAO;QACL,KAAK,CAAC,GAAG,CAAI,QAAgB;YAC3B,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAI,QAAQ,CAAC,CAAA;YAClD,OAAO,QAAQ,CAAC,IAAI,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAO/C,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAE3B,MAAM,UAAU,GAAkB,KAAK,CAAC,MAAM,CAAC;QAC7C,OAAO,EAAE,MAAM,CAAC,IAAI;QACpB,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;YACvC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,kBAAkB;SACjC;KACF,CAAC,CAAA;IAEF,OAAO;QACL,KAAK,CAAC,GAAG,CAAI,QAAgB;YAC3B,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,CAAI,QAAQ,CAAC,CAAA;YAClD,OAAO,QAAQ,CAAC,IAAI,CAAA;QACtB,CAAC;QACD,KAAK,CAAC,IAAI,CAAI,QAAgB,EAAE,IAAa;YAC3C,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAA;YACzD,OAAO,QAAQ,CAAC,IAAI,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare function checkoutCommand(repoName: string): Promise<void>;
1
+ export declare function checkoutCommand(taskId: string): Promise<void>;
2
2
  //# sourceMappingURL=checkout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/commands/checkout.ts"],"names":[],"mappings":"AAYA,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDrE"}
1
+ {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/commands/checkout.ts"],"names":[],"mappings":"AAaA,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFnE"}
@@ -2,49 +2,81 @@ import chalk from 'chalk';
2
2
  import { getRepoPath } from '../config/configService.js';
3
3
  import { getRuntimeSelectedTask } from '../context/runtimeContext.js';
4
4
  import { checkGitRepo, checkRepoExists, checkUncommittedChanges, checkoutBranch, fetch, } from '../git/gitService.js';
5
- import { cmd, fail, info, muted, ok, section } from '../utils/ui.js';
6
- export async function checkoutCommand(repoName) {
5
+ import { moveTaskToHumanReview } from '../services/taskService.js';
6
+ import { cmd, fail, info, kv, muted, ok, section } from '../utils/ui.js';
7
+ export async function checkoutCommand(taskId) {
7
8
  const selectedTask = getRuntimeSelectedTask();
8
9
  if (!selectedTask) {
9
10
  console.log(`\n${fail('No task selected.')}\n`);
10
11
  console.log(`${muted(`Run ${cmd('fiftth tasks')} to select one.`)}\n`);
11
12
  process.exit(1);
12
13
  }
13
- const taskRepository = selectedTask.repositories.find((repository) => repository.fullName === repoName);
14
- if (!taskRepository) {
15
- console.log(`\n${fail('Repository not linked to the selected task.')}\n`);
16
- console.log(`${section('Available repositories')}\n`);
17
- for (const repository of selectedTask.repositories) {
18
- console.log(` ${muted('•')} ${repository.fullName}`);
19
- }
14
+ if (selectedTask.taskId !== taskId) {
15
+ console.log(`\n${fail('Task ID does not match the selected task.')}\n`);
16
+ console.log(kv('Selected task ID', selectedTask.taskId));
17
+ console.log(`${muted(`Run ${cmd('fiftth tasks')} and select task ${cmd(taskId)} first.`)}\n`);
20
18
  console.log();
21
19
  process.exit(1);
22
20
  }
23
- const repoPath = getRepoPath(repoName);
24
- if (!repoPath) {
25
- console.log(`\n${fail('Repository not configured locally.')}\n`);
26
- console.log(`${muted(`Run ${cmd('fiftth repo add <repoName> <path>')}`)}\n`);
27
- process.exit(1);
21
+ if (selectedTask.repositories.length === 0) {
22
+ console.log(`\n${info('This task has no linked repositories.')}\n`);
23
+ return;
28
24
  }
29
- if (!checkRepoExists(repoPath)) {
30
- console.log(`\n${fail('Repository path not found.')}\n`);
31
- process.exit(1);
25
+ console.log(`\n${section(`Checking out task ${selectedTask.taskId} in linked repositories`)}\n`);
26
+ const successfulRepositories = [];
27
+ const failedRepositories = [];
28
+ for (const taskRepository of selectedTask.repositories) {
29
+ const repoName = taskRepository.fullName;
30
+ const repoPath = getRepoPath(repoName);
31
+ console.log(kv('Repository', repoName));
32
+ if (!repoPath) {
33
+ console.log(` ${fail('Skipped: repository not configured locally.')}`);
34
+ failedRepositories.push(repoName);
35
+ continue;
36
+ }
37
+ if (!checkRepoExists(repoPath)) {
38
+ console.log(` ${fail('Skipped: repository path not found.')}`);
39
+ failedRepositories.push(repoName);
40
+ continue;
41
+ }
42
+ if (!checkGitRepo(repoPath)) {
43
+ console.log(` ${fail('Skipped: configured path is not a git repository.')}`);
44
+ failedRepositories.push(repoName);
45
+ continue;
46
+ }
47
+ const hasUncommittedChanges = await checkUncommittedChanges(repoPath);
48
+ if (hasUncommittedChanges) {
49
+ console.log(` ${fail('Skipped: uncommitted changes detected.')}`);
50
+ failedRepositories.push(repoName);
51
+ continue;
52
+ }
53
+ try {
54
+ await fetch(repoPath);
55
+ await checkoutBranch(repoPath, taskRepository.branch);
56
+ console.log(` ${ok(`Checked out branch ${chalk.bold(taskRepository.branch)}`)}`);
57
+ successfulRepositories.push(repoName);
58
+ }
59
+ catch {
60
+ console.log(` ${fail('Failed: could not fetch/checkout branch.')}`);
61
+ failedRepositories.push(repoName);
62
+ }
32
63
  }
33
- if (!checkGitRepo(repoPath)) {
34
- console.log(`\n${fail('The configured path is not a git repository.')}\n`);
35
- process.exit(1);
64
+ console.log();
65
+ console.log(ok(`Repositories checked out: ${successfulRepositories.length}`));
66
+ if (failedRepositories.length > 0) {
67
+ console.log(fail(`Repositories failed/skipped: ${failedRepositories.length}`));
68
+ for (const repository of failedRepositories) {
69
+ console.log(` ${muted('•')} ${repository}`);
70
+ }
36
71
  }
37
- const hasUncommittedChanges = await checkUncommittedChanges(repoPath);
38
- if (hasUncommittedChanges) {
39
- console.log(`\n${fail('Uncommitted changes detected.')}\n`);
40
- console.log(`${info('Please commit or stash changes before switching branches.')}\n`);
41
- process.exit(1);
72
+ if (successfulRepositories.length > 0 && failedRepositories.length === 0) {
73
+ try {
74
+ await moveTaskToHumanReview(selectedTask.taskId);
75
+ }
76
+ catch {
77
+ console.log(`\n${info('Could not move task to Human Review. Please update it manually.')}\n`);
78
+ }
42
79
  }
43
- console.log(`\n${section('Syncing repository state')}\n`);
44
- await fetch(repoPath);
45
- await checkoutBranch(repoPath, taskRepository.branch);
46
- console.log(ok(`Repository: ${chalk.bold(repoName)}`));
47
- console.log(ok(`Branch: ${chalk.bold(taskRepository.branch)}`));
48
- console.log(`${ok('Checkout complete')}\n`);
80
+ console.log(`\n${ok('Checkout complete')}\n`);
49
81
  }
50
82
  //# sourceMappingURL=checkout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commands/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,KAAK,GACN,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAEpE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAA;IAE7C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,cAAc,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,CACnD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ,CACjD,CAAA;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,6CAA6C,CAAC,IAAI,CAAC,CAAA;QACzE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAA;QACrD,KAAK,MAAM,UAAU,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;QACvD,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;IAEtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,mCAAmC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAA;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,8CAA8C,CAAC,IAAI,CAAC,CAAA;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,qBAAqB,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,CAAA;IACrE,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAA;QAC3D,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,2DAA2D,CAAC,IAAI,CAAC,CAAA;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA;IACzD,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAA;IACrB,MAAM,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAErD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;IACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;AAC7C,CAAC"}
1
+ {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commands/checkout.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAiBA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAiElD"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AAmBA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAkElD"}
@@ -6,6 +6,8 @@ import { setRuntimeSelectedTask } from '../context/runtimeContext.js';
6
6
  import { cmd, fail, info, kv, muted, ok, section } from '../utils/ui.js';
7
7
  function printTaskRepositories(task) {
8
8
  console.log(`\n${section(`Linked repositories for: ${task.title}`)}\n`);
9
+ console.log(kv('Task ID', task.id));
10
+ console.log('');
9
11
  for (const repository of task.repositories) {
10
12
  console.log(kv('Repository', repository.fullName));
11
13
  console.log(` ${muted('branch')} ${chalk.bold(repository.branch)}`);
@@ -41,7 +43,7 @@ export async function tasksCommand() {
41
43
  name: 'selectedTaskId',
42
44
  message: 'Choose a task',
43
45
  choices: tasks.map((task) => ({
44
- name: task.title,
46
+ name: `${task.title} (${task.id})`,
45
47
  value: task.id,
46
48
  })),
47
49
  },
@@ -57,6 +59,7 @@ export async function tasksCommand() {
57
59
  repositories: selectedTask.repositories,
58
60
  });
59
61
  console.log(`\n${ok(`Task selected: ${chalk.bold(selectedTask.title)}`)}`);
62
+ console.log(kv('Task ID', selectedTask.id));
60
63
  if (selectedTask.repositories.length === 0) {
61
64
  console.log(`${info('This task has no linked repositories.')}\n`);
62
65
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"configService.d.ts","sourceRoot":"","sources":["../../src/config/configService.ts"],"names":[],"mappings":"AAaA,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,CAO1F;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAS1D"}
1
+ {"version":3,"file":"configService.d.ts","sourceRoot":"","sources":["../../src/config/configService.ts"],"names":[],"mappings":"AAaA,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExD;AAcD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOhE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,CAO1F;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQ1D"}
@@ -8,8 +8,21 @@ const config = new Conf({
8
8
  export function getRepositories() {
9
9
  return config.get('repositories');
10
10
  }
11
+ function findRepositoryKey(repoName) {
12
+ const repositories = getRepositories();
13
+ const exactMatch = Object.prototype.hasOwnProperty.call(repositories, repoName);
14
+ if (exactMatch) {
15
+ return repoName;
16
+ }
17
+ const normalizedRepoName = repoName.toLowerCase();
18
+ return Object.keys(repositories).find((name) => name.toLowerCase() === normalizedRepoName);
19
+ }
11
20
  export function getRepoPath(repoName) {
12
- return getRepositories()[repoName];
21
+ const repositoryKey = findRepositoryKey(repoName);
22
+ if (!repositoryKey) {
23
+ return undefined;
24
+ }
25
+ return getRepositories()[repositoryKey];
13
26
  }
14
27
  export function addRepository(repoName, repoPath) {
15
28
  const repositories = getRepositories();
@@ -18,11 +31,11 @@ export function addRepository(repoName, repoPath) {
18
31
  return { overwritten };
19
32
  }
20
33
  export function removeRepository(repoName) {
21
- const repositories = getRepositories();
22
- if (!repositories[repoName]) {
34
+ const repositoryKey = findRepositoryKey(repoName);
35
+ if (!repositoryKey) {
23
36
  return false;
24
37
  }
25
- config.delete(`repositories.${repoName}`);
38
+ config.delete(`repositories.${repositoryKey}`);
26
39
  return true;
27
40
  }
28
41
  //# sourceMappingURL=configService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configService.js","sourceRoot":"","sources":["../../src/config/configService.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAMvB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAiB;IACtC,WAAW,EAAE,YAAY;IACzB,QAAQ,EAAE;QACR,YAAY,EAAE,EAAE;KACjB;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,QAAgB;IAC9D,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IACtC,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEnD,MAAM,CAAC,GAAG,CAAC,gBAAgB,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAA;IAEhD,OAAO,EAAE,WAAW,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IAEtC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAA;IACzC,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"configService.js","sourceRoot":"","sources":["../../src/config/configService.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAMvB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAiB;IACtC,WAAW,EAAE,YAAY;IACzB,QAAQ,EAAE;QACR,YAAY,EAAE,EAAE;KACjB;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;AACnC,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAE/E,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,kBAAkB,CAAC,CAAA;AAC5F,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACjD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,eAAe,EAAE,CAAC,aAAa,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,QAAgB;IAC9D,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IACtC,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEnD,MAAM,CAAC,GAAG,CAAC,gBAAgB,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAA;IAEhD,OAAO,EAAE,WAAW,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACjD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,gBAAgB,aAAa,EAAE,CAAC,CAAA;IAC9C,OAAO,IAAI,CAAA;AACb,CAAC"}