ticketree 0.1.0 → 0.1.1
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/adapters/jira.d.ts.map +1 -1
- package/dist/adapters/jira.js.map +1 -1
- package/dist/cli/commands/end.d.ts.map +1 -1
- package/dist/cli/commands/end.js +6 -5
- package/dist/cli/commands/end.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +3 -15
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +3 -2
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/error-handler.d.ts +3 -0
- package/dist/cli/error-handler.d.ts.map +1 -0
- package/dist/cli/error-handler.js +51 -0
- package/dist/cli/error-handler.js.map +1 -0
- package/dist/cli/index.js +21 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/config/loader.d.ts +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/core/terminal.d.ts.map +1 -1
- package/dist/core/ticket-parser.d.ts.map +1 -1
- package/dist/core/ticket-parser.js +3 -2
- package/dist/core/ticket-parser.js.map +1 -1
- package/dist/utils/errors.d.ts +13 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +17 -0
- package/dist/utils/errors.js.map +1 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jira.d.ts","sourceRoot":"","sources":["../../src/adapters/jira.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"jira.d.ts","sourceRoot":"","sources":["../../src/adapters/jira.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AA+BzD,eAAO,MAAM,kBAAkB,GAAU,cAAc,eAAe,KAAG,OAAO,CAAC,IAAI,CAGpF,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,WAAW,GAAU,KAAK,MAAM,EAAE,cAAc,eAAe,KAAG,OAAO,CAAC,SAAS,EAAE,CAcjG,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,UAAU,MAAM,EAAE,cAAc,eAAe,KAAG,OAAO,CAAC,SAAS,CAanG,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAChB,gBAAgB,MAAM,EACtB,cAAc,eAAe,KAC5B,OAAO,CAAC,IAAI,CAiBd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jira.js","sourceRoot":"","sources":["../../src/adapters/jira.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC,MAAM,qBAAqB,GAAG,GAAoB,EAAE;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAE5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,WAA4B,EAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"jira.js","sourceRoot":"","sources":["../../src/adapters/jira.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"end.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/end.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"end.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/end.ts"],"names":[],"mappings":"AAuBA,UAAU,UAAU;IAClB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA4CD,eAAO,MAAM,UAAU,GAAU,aAAa,MAAM,GAAG,SAAS,EAAE,SAAS,UAAU,KAAG,OAAO,CAAC,IAAI,CAuEnG,CAAC"}
|
package/dist/cli/commands/end.js
CHANGED
|
@@ -4,6 +4,7 @@ import { fetchIssue, transitionIssue } from '../../adapters/jira.js';
|
|
|
4
4
|
import { loadConfig } from '../../config/loader.js';
|
|
5
5
|
import { selectTicketInteractively } from '../../core/ticket-parser.js';
|
|
6
6
|
import { deleteBranch, deleteWorktree, getCurrentTicketKey, getWorktreeBranch, getWorktreePath, listWorktrees, pushBranch, worktreeExists, } from '../../core/worktree.js';
|
|
7
|
+
import { branchNameNotFoundError, jiraBaseUrlMissingError, jiraConfigMissingError, noWorktreesFoundError, worktreeNotFoundError, } from '../../utils/errors.js';
|
|
7
8
|
const DEFAULT_PR_BODY_TEMPLATE = '## Related Issue\n{issueLink}';
|
|
8
9
|
const buildPRBody = (template, issue, jiraBaseUrl) => {
|
|
9
10
|
const issueUrl = `${jiraBaseUrl}/browse/${issue.key}`;
|
|
@@ -24,7 +25,7 @@ const resolveTicketKey = async (ticketInput) => {
|
|
|
24
25
|
}
|
|
25
26
|
const worktrees = await listWorktrees();
|
|
26
27
|
if (worktrees.length === 0) {
|
|
27
|
-
throw
|
|
28
|
+
throw noWorktreesFoundError();
|
|
28
29
|
}
|
|
29
30
|
const issues = await Promise.all(worktrees.map(async (wt) => {
|
|
30
31
|
try {
|
|
@@ -41,17 +42,17 @@ export const endCommand = async (ticketInput, options) => {
|
|
|
41
42
|
const config = await loadConfig();
|
|
42
43
|
const jiraConfig = config.issueTracker.jira;
|
|
43
44
|
if (!jiraConfig) {
|
|
44
|
-
throw
|
|
45
|
+
throw jiraConfigMissingError();
|
|
45
46
|
}
|
|
46
47
|
const ticketKey = await resolveTicketKey(ticketInput);
|
|
47
48
|
console.log(chalk.blue(`Ending work on ${ticketKey}...`));
|
|
48
49
|
if (!worktreeExists(ticketKey)) {
|
|
49
|
-
throw
|
|
50
|
+
throw worktreeNotFoundError(ticketKey);
|
|
50
51
|
}
|
|
51
52
|
const issue = await fetchIssue(ticketKey);
|
|
52
53
|
const branchName = await getWorktreeBranch(ticketKey);
|
|
53
54
|
if (!branchName) {
|
|
54
|
-
throw
|
|
55
|
+
throw branchNameNotFoundError(ticketKey);
|
|
55
56
|
}
|
|
56
57
|
console.log(chalk.blue(`Pushing branch ${branchName}...`));
|
|
57
58
|
await pushBranch(ticketKey);
|
|
@@ -60,7 +61,7 @@ export const endCommand = async (ticketInput, options) => {
|
|
|
60
61
|
console.log(chalk.blue('Creating pull request...'));
|
|
61
62
|
const jiraBaseUrl = process.env.JIRA_BASE_URL;
|
|
62
63
|
if (!jiraBaseUrl) {
|
|
63
|
-
throw
|
|
64
|
+
throw jiraBaseUrlMissingError();
|
|
64
65
|
}
|
|
65
66
|
const prBodyTemplate = config.git.github?.prBodyTemplate ?? DEFAULT_PR_BODY_TEMPLATE;
|
|
66
67
|
const prBody = buildPRBody(prBodyTemplate, issue, jiraBaseUrl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/cli/commands/end.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/cli/commands/end.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAoDhD,CAAC"}
|
|
@@ -4,6 +4,7 @@ import chalk from 'chalk';
|
|
|
4
4
|
import { stringify } from 'yaml';
|
|
5
5
|
import { DEFAULT_CONFIG } from '../../config/types.js';
|
|
6
6
|
import { testJiraConnection } from '../../adapters/jira.js';
|
|
7
|
+
import { jiraConnectionFailedError } from '../../utils/errors.js';
|
|
7
8
|
const TICKETREE_DIR = '.ticketree';
|
|
8
9
|
const CONFIG_FILE = '.ticketreerc';
|
|
9
10
|
const GIT_EXCLUDE_FILE = '.git/info/exclude';
|
|
@@ -51,21 +52,8 @@ export const initCommand = async () => {
|
|
|
51
52
|
console.log(chalk.green('Jira connection successful!'));
|
|
52
53
|
}
|
|
53
54
|
catch (error) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
console.log(chalk.yellow('\nPlease set up your Jira credentials using direnv:'));
|
|
58
|
-
console.log(chalk.gray(`
|
|
59
|
-
# .envrc
|
|
60
|
-
export JIRA_BASE_URL="https://your-company.atlassian.net"
|
|
61
|
-
export JIRA_EMAIL="your-email@example.com"
|
|
62
|
-
export JIRA_API_TOKEN="your-api-token"
|
|
63
|
-
|
|
64
|
-
# For PR creation (optional)
|
|
65
|
-
export GITHUB_TOKEN="ghp_xxx"
|
|
66
|
-
`));
|
|
67
|
-
console.log(chalk.gray('Then run: direnv allow'));
|
|
68
|
-
process.exit(1);
|
|
55
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
56
|
+
throw jiraConnectionFailedError(message);
|
|
69
57
|
}
|
|
70
58
|
console.log(chalk.green('\nTicketree initialized successfully!'));
|
|
71
59
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7F,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAkB,MAAM,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;IACnD,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;IAExC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,WAAW,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAEhD,IAAI,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAExC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACrF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,YAAY,GAAU,cAAc,MAAM,KAAG,OAAO,CAAC,IAAI,CAsDrE,CAAC"}
|
|
@@ -5,11 +5,12 @@ import { openEditor } from '../../core/editor.js';
|
|
|
5
5
|
import { openTerminal } from '../../core/terminal.js';
|
|
6
6
|
import { parseTicketInput, selectTicketInteractively } from '../../core/ticket-parser.js';
|
|
7
7
|
import { createWorktree, getWorktreePath, worktreeExists } from '../../core/worktree.js';
|
|
8
|
+
import { jiraConfigMissingError } from '../../utils/errors.js';
|
|
8
9
|
export const startCommand = async (ticketInput) => {
|
|
9
10
|
const config = await loadConfig();
|
|
10
11
|
const jiraConfig = config.issueTracker.jira;
|
|
11
12
|
if (!jiraConfig) {
|
|
12
|
-
throw
|
|
13
|
+
throw jiraConfigMissingError();
|
|
13
14
|
}
|
|
14
15
|
let ticket;
|
|
15
16
|
if (ticketInput) {
|
|
@@ -50,6 +51,6 @@ export const startCommand = async (ticketInput) => {
|
|
|
50
51
|
console.log(chalk.blue(`Opening terminal (${config.terminal.preset})...`));
|
|
51
52
|
openTerminal({ worktreePath, title: ticket.key, preset: config.terminal.preset });
|
|
52
53
|
}
|
|
53
|
-
console.log(chalk.green('\nDone! Happy coding
|
|
54
|
+
console.log(chalk.green('\nDone! Happy coding'));
|
|
54
55
|
};
|
|
55
56
|
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAkB,MAAM,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/cli/error-handler.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAkC5C,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAO,IAatC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { UserError } from '../utils/errors.js';
|
|
3
|
+
const isDebugMode = () => process.env.DEBUG === '1';
|
|
4
|
+
const isExitPromptError = (error) => error instanceof Error && error.name === 'ExitPromptError';
|
|
5
|
+
export const handleError = (error) => {
|
|
6
|
+
if (isExitPromptError(error)) {
|
|
7
|
+
console.log('\nCancelled.');
|
|
8
|
+
process.exit(130);
|
|
9
|
+
}
|
|
10
|
+
if (error instanceof UserError) {
|
|
11
|
+
console.error(`\n${chalk.red(`\u2716 ${error.message}`)}`);
|
|
12
|
+
if (error.hint) {
|
|
13
|
+
console.error(`\n ${chalk.cyan('Hint:')} ${error.hint}`);
|
|
14
|
+
}
|
|
15
|
+
if (isDebugMode() && error.stack) {
|
|
16
|
+
console.error(`\n${chalk.gray(error.stack)}`);
|
|
17
|
+
}
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
if (error instanceof Error) {
|
|
21
|
+
console.error(`\n${chalk.red(`\u2716 ${error.message}`)}`);
|
|
22
|
+
if (isDebugMode() && error.stack) {
|
|
23
|
+
console.error(`\n${chalk.gray(error.stack)}`);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
console.error(`\n ${chalk.gray('Run with DEBUG=1 for more details.')}`);
|
|
27
|
+
}
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
console.error(`\n${chalk.red('\u2716 An unexpected error occurred')}`);
|
|
31
|
+
if (isDebugMode()) {
|
|
32
|
+
console.error(error);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.error(`\n ${chalk.gray('Run with DEBUG=1 for more details.')}`);
|
|
36
|
+
}
|
|
37
|
+
process.exit(1);
|
|
38
|
+
};
|
|
39
|
+
export const setupGlobalHandlers = () => {
|
|
40
|
+
process.on('SIGINT', () => {
|
|
41
|
+
console.log('\nCancelled.');
|
|
42
|
+
process.exit(130);
|
|
43
|
+
});
|
|
44
|
+
process.on('uncaughtException', (error) => {
|
|
45
|
+
handleError(error);
|
|
46
|
+
});
|
|
47
|
+
process.on('unhandledRejection', (reason) => {
|
|
48
|
+
handleError(reason);
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=error-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/cli/error-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
-
import { initCommand } from '
|
|
4
|
-
import { startCommand } from '
|
|
5
|
-
import { listCommand } from '
|
|
6
|
-
import { endCommand } from '
|
|
3
|
+
import { initCommand } from '../cli/commands/init.js';
|
|
4
|
+
import { startCommand } from '../cli/commands/start.js';
|
|
5
|
+
import { listCommand } from '../cli/commands/list.js';
|
|
6
|
+
import { endCommand } from '../cli/commands/end.js';
|
|
7
|
+
import { handleError, setupGlobalHandlers } from '../cli/error-handler.js';
|
|
8
|
+
setupGlobalHandlers();
|
|
9
|
+
const withErrorHandler = (fn) => async (...args) => {
|
|
10
|
+
try {
|
|
11
|
+
await fn(...args);
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
handleError(error);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
7
17
|
const program = new Command();
|
|
8
18
|
program
|
|
9
19
|
.name('ticketree')
|
|
10
20
|
.description('CLI tool that connects issue tracker tickets with Git Worktree')
|
|
11
21
|
.version('0.1.0');
|
|
12
|
-
program.command('init').description('Initialize Ticketree in current project').action(initCommand);
|
|
22
|
+
program.command('init').description('Initialize Ticketree in current project').action(withErrorHandler(initCommand));
|
|
13
23
|
program
|
|
14
24
|
.command('start [ticket]')
|
|
15
25
|
.description('Start working on a ticket (create worktree, open editor/terminal)')
|
|
16
|
-
.action(startCommand);
|
|
17
|
-
program
|
|
26
|
+
.action(withErrorHandler(startCommand));
|
|
27
|
+
program
|
|
28
|
+
.command('list')
|
|
29
|
+
.description('List current worktrees with ticket information')
|
|
30
|
+
.action(withErrorHandler(listCommand));
|
|
18
31
|
program
|
|
19
32
|
.command('end [ticket]')
|
|
20
33
|
.description('End working on a ticket (push, delete worktree)')
|
|
@@ -22,6 +35,6 @@ program
|
|
|
22
35
|
.option('--no-draft', 'Create PR as ready for review (not draft)')
|
|
23
36
|
.option('--base <branch>', 'Base branch for PR')
|
|
24
37
|
.option('--keep', 'Keep worktree and branch after ending')
|
|
25
|
-
.action(endCommand);
|
|
38
|
+
.action(withErrorHandler(endCommand));
|
|
26
39
|
program.parse();
|
|
27
40
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE1E,mBAAmB,EAAE,CAAC;AAEtB,MAAM,gBAAgB,GACpB,CAAsB,EAAiC,EAAE,EAAE,CAC3D,KAAK,EAAE,GAAG,IAAO,EAAE,EAAE;IACnB,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AAEJ,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,yCAAyC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;AAErH,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,mEAAmE,CAAC;KAChF,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;AAE1C,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;AAEzC,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC;KACvC,MAAM,CAAC,YAAY,EAAE,2CAA2C,CAAC;KACjE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;KAC/C,MAAM,CAAC,QAAQ,EAAE,uCAAuC,CAAC;KACzD,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;AAExC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/config/loader.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMzD,eAAO,MAAM,UAAU,QAAa,OAAO,CAAC,eAAe,CAQ1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/core/terminal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/core/terminal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,KAAK,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;CACxB;AASD,eAAO,MAAM,YAAY,GAAI,SAAS,mBAAmB,KAAG,IAe3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket-parser.d.ts","sourceRoot":"","sources":["../../src/core/ticket-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ticket-parser.d.ts","sourceRoot":"","sources":["../../src/core/ticket-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,gBAAgB,MAAM,KAAG,YAgCxE,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAU,QAAQ,SAAS,EAAE,KAAG,OAAO,CAAC,SAAS,CAuBtF,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { search } from '@inquirer/prompts';
|
|
2
|
+
import { invalidTicketFormatError, noIssuesFoundError } from '../utils/errors.js';
|
|
2
3
|
const JIRA_URL_REGEX = /\/browse\/([A-Z]+-\d+)/i;
|
|
3
4
|
const FULL_KEY_REGEX = /^([A-Z]+)-(\d+)$/i;
|
|
4
5
|
const NUMBER_ONLY_REGEX = /^\d+$/;
|
|
@@ -30,11 +31,11 @@ export const parseTicketInput = (input, defaultProject) => {
|
|
|
30
31
|
issueNumber: input,
|
|
31
32
|
};
|
|
32
33
|
}
|
|
33
|
-
throw
|
|
34
|
+
throw invalidTicketFormatError(input);
|
|
34
35
|
};
|
|
35
36
|
export const selectTicketInteractively = async (issues) => {
|
|
36
37
|
if (issues.length === 0) {
|
|
37
|
-
throw
|
|
38
|
+
throw noIssuesFoundError();
|
|
38
39
|
}
|
|
39
40
|
const selected = await search({
|
|
40
41
|
message: 'Select a ticket:',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket-parser.js","sourceRoot":"","sources":["../../src/core/ticket-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ticket-parser.js","sourceRoot":"","sources":["../../src/core/ticket-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQjF,MAAM,cAAc,GAAG,yBAAyB,CAAC;AACjD,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAC3C,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAElC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,cAAsB,EAAgB,EAAE;IACtF,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,GAAG;gBACH,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACvB,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;aACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE;YACxB,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YACzC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;SAC7B,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,GAAG,EAAE,GAAG,cAAc,IAAI,KAAK,EAAE;YACjC,UAAU,EAAE,cAAc;YAC1B,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,MAAmB,EAAsB,EAAE;IACzF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAY;QACvC,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,MAAM,UAAU,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC7C,OAAO,MAAM;iBACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChB,IAAI,CAAC,UAAU;oBAAE,OAAO,IAAI,CAAC;gBAC7B,MAAM,YAAY,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC;gBACnF,OAAO,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC3C,CAAC,CAAC;iBACD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACf,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,GAAG;gBACzD,KAAK,EAAE,KAAK;aACb,CAAC,CAAC,CAAC;QACR,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare class UserError extends Error {
|
|
2
|
+
hint?: string | undefined;
|
|
3
|
+
constructor(message: string, hint?: string | undefined);
|
|
4
|
+
}
|
|
5
|
+
export declare const jiraConfigMissingError: () => UserError;
|
|
6
|
+
export declare const jiraBaseUrlMissingError: () => UserError;
|
|
7
|
+
export declare const jiraConnectionFailedError: (message: string) => UserError;
|
|
8
|
+
export declare const worktreeNotFoundError: (key: string) => UserError;
|
|
9
|
+
export declare const noWorktreesFoundError: () => UserError;
|
|
10
|
+
export declare const branchNameNotFoundError: (key: string) => UserError;
|
|
11
|
+
export declare const invalidTicketFormatError: (input: string) => UserError;
|
|
12
|
+
export declare const noIssuesFoundError: () => UserError;
|
|
13
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;IAGzB,IAAI,CAAC,EAAE,MAAM;gBADpB,OAAO,EAAE,MAAM,EACR,IAAI,CAAC,EAAE,MAAM,YAAA;CAKvB;AAED,eAAO,MAAM,sBAAsB,iBAIhC,CAAC;AAEJ,eAAO,MAAM,uBAAuB,iBACuE,CAAC;AAE5G,eAAO,MAAM,yBAAyB,GAAI,SAAS,MAAM,cAC2C,CAAC;AAErG,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,cACuD,CAAC;AAEzG,eAAO,MAAM,qBAAqB,iBAC2E,CAAC;AAE9G,eAAO,MAAM,uBAAuB,GAAI,KAAK,MAAM,cAAgE,CAAC;AAEpH,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,cACsC,CAAC;AAE7F,eAAO,MAAM,kBAAkB,iBACqF,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class UserError extends Error {
|
|
2
|
+
hint;
|
|
3
|
+
constructor(message, hint) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.hint = hint;
|
|
6
|
+
this.name = 'UserError';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export const jiraConfigMissingError = () => new UserError('Jira configuration is missing in .ticketreerc', "Run 'ticketree init' to create the configuration file.");
|
|
10
|
+
export const jiraBaseUrlMissingError = () => new UserError('JIRA_BASE_URL environment variable is not set', 'Set up your credentials in .envrc file.');
|
|
11
|
+
export const jiraConnectionFailedError = (message) => new UserError(`Jira connection failed: ${message}`, 'Check your Jira credentials in .envrc file.');
|
|
12
|
+
export const worktreeNotFoundError = (key) => new UserError(`Worktree for ${key} does not exist`, "Run 'ticketree list' to see existing worktrees.");
|
|
13
|
+
export const noWorktreesFoundError = () => new UserError('No worktrees found. Nothing to end.', "Run 'ticketree start' to begin working on a ticket.");
|
|
14
|
+
export const branchNameNotFoundError = (key) => new UserError(`Could not determine branch name for ${key}`);
|
|
15
|
+
export const invalidTicketFormatError = (input) => new UserError(`Invalid ticket format: "${input}"`, 'Expected: PROJ-123, 123, or Jira URL');
|
|
16
|
+
export const noIssuesFoundError = () => new UserError('No issues found matching the configured JQL query', 'Check your JQL configuration in .ticketreerc');
|
|
17
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGzB;IAFT,YACE,OAAe,EACR,IAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,SAAI,GAAJ,IAAI,CAAS;QAGpB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,IAAI,SAAS,CACX,+CAA+C,EAC/C,wDAAwD,CACzD,CAAC;AAEJ,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAC1C,IAAI,SAAS,CAAC,+CAA+C,EAAE,yCAAyC,CAAC,CAAC;AAE5G,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,OAAe,EAAE,EAAE,CAC3D,IAAI,SAAS,CAAC,2BAA2B,OAAO,EAAE,EAAE,6CAA6C,CAAC,CAAC;AAErG,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAE,EAAE,CACnD,IAAI,SAAS,CAAC,gBAAgB,GAAG,iBAAiB,EAAE,iDAAiD,CAAC,CAAC;AAEzG,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CACxC,IAAI,SAAS,CAAC,qCAAqC,EAAE,qDAAqD,CAAC,CAAC;AAE9G,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;AAEpH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAa,EAAE,EAAE,CACxD,IAAI,SAAS,CAAC,2BAA2B,KAAK,GAAG,EAAE,sCAAsC,CAAC,CAAC;AAE7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CACrC,IAAI,SAAS,CAAC,mDAAmD,EAAE,8CAA8C,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ticketree",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "CLI tool that connects issue tracker tickets with Git Worktree for automated ticket-based development workflow",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dist"
|
|
13
13
|
],
|
|
14
14
|
"scripts": {
|
|
15
|
-
"build": "tsc",
|
|
15
|
+
"build": "tsc && tsc-alias",
|
|
16
16
|
"dev": "tsc --watch",
|
|
17
17
|
"start": "node ./dist/cli/index.js",
|
|
18
18
|
"lint": "eslint src --ext .ts",
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
"eslint-config-prettier": "^10.1.8",
|
|
59
59
|
"eslint-plugin-prefer-arrow-functions": "^3.9.1",
|
|
60
60
|
"prettier": "^3.7.4",
|
|
61
|
+
"tsc-alias": "^1.8.16",
|
|
61
62
|
"typescript": "^5.9.3",
|
|
62
63
|
"typescript-eslint": "^8.52.0"
|
|
63
64
|
}
|