UNPKG

linear-cmd

Version:

A GitHub CLI-like tool for Linear - manage issues, accounts, and more

241 lines (240 loc) 8.28 kB
import { CLI_NAME } from '../constants.js'; import { CommandNames, SubCommandNames } from '../definitions.js'; export const issueCommandDefinition = { name: CommandNames.ISSUE, description: 'Manage Linear issues', subcommands: [ { name: SubCommandNames.ISSUE_SHOW, description: 'Show issue details', arguments: [ { name: 'issue', description: 'Issue ID or URL', type: 'string', required: true } ], flags: [ { name: '--format', alias: '-f', description: 'Output format (pretty, json)', type: 'string', choices: ['pretty', 'json'] } ], examples: [ `${CLI_NAME} issue show ISSUE-123`, `${CLI_NAME} issue show https://linear.app/team/issue/ISSUE-123`, `${CLI_NAME} issue show ISSUE-123 --format json` ] }, { name: SubCommandNames.ISSUE_CREATE, description: 'Create a new issue', flags: [ { name: '--title', alias: '-t', description: 'Issue title', type: 'string', required: true }, { name: '--description', alias: '-d', description: 'Issue description', type: 'string' }, { name: '--priority', alias: '-p', description: 'Priority (0=None, 1=Urgent, 2=High, 3=Medium, 4=Low)', type: 'number' }, { name: '--state', alias: '-s', description: 'State name', type: 'string' }, { name: '--assignee', description: 'Assignee email', type: 'string' }, { name: '--label', alias: '-l', description: 'Label name', type: 'string' }, { name: '--project', description: 'Project name or ID', type: 'string' }, { name: '--account', alias: '-a', description: 'Account to use (optional, uses active account if not specified)', type: 'string' }, { name: '--team', description: 'Team key (e.g., TES, WORK)', type: 'string' } ], examples: [ `${CLI_NAME} issue create --title "Fix bug"`, `${CLI_NAME} issue create --title "New feature" --description "Description" --priority 2`, `${CLI_NAME} issue create --title "Task" --assignee user@example.com --label bug` ] }, { name: SubCommandNames.ISSUE_LIST, description: 'List issues', flags: [ { name: '--state', alias: '-s', description: 'Filter by state', type: 'string' }, { name: '--assignee', description: 'Filter by assignee email', type: 'string' }, { name: '--label', alias: '-l', description: 'Filter by label', type: 'string' }, { name: '--project', alias: '-p', description: 'Filter by project', type: 'string' }, { name: '--team', description: 'Filter by team key (e.g., TES, WORK)', type: 'string' }, { name: '--limit', description: 'Max number of issues to show', type: 'number' }, { name: '--format', alias: '-f', description: 'Output format (pretty, json)', type: 'string', choices: ['pretty', 'json'] }, { name: '--account', alias: '-a', description: 'Account to use (optional, uses active account if not specified)', type: 'string' } ], examples: [ `${CLI_NAME} issue list`, `${CLI_NAME} issue list --state "In Progress"`, `${CLI_NAME} issue list --assignee user@example.com --limit 20`, `${CLI_NAME} issue list --format json` ] }, { name: SubCommandNames.ISSUE_UPDATE, description: 'Update an issue', arguments: [ { name: 'issue', description: 'Issue ID or URL', type: 'string', required: true } ], flags: [ { name: '--title', alias: '-t', description: 'New title', type: 'string' }, { name: '--description', alias: '-d', description: 'New description', type: 'string' }, { name: '--priority', alias: '-p', description: 'Priority (0=None, 1=Urgent, 2=High, 3=Medium, 4=Low)', type: 'number' }, { name: '--state', alias: '-s', description: 'State name', type: 'string' }, { name: '--assignee', description: 'Assignee email', type: 'string' }, { name: '--label', alias: '-l', description: 'Label name', type: 'string' }, { name: '--account', alias: '-a', description: 'Account to use (optional, uses active account if not specified)', type: 'string' } ], examples: [ `${CLI_NAME} issue update ISSUE-123 --state Done`, `${CLI_NAME} issue update ISSUE-123 --title "Updated title" --priority 1`, `${CLI_NAME} issue update ISSUE-123 --assignee user@example.com` ] }, { name: SubCommandNames.ISSUE_COMMENT, description: 'Add a comment to an issue', arguments: [ { name: 'issue', description: 'Issue ID or URL', type: 'string', required: true } ], flags: [ { name: '--body', alias: '-b', description: 'Comment body', type: 'string', required: true } ], examples: [ `${CLI_NAME} issue comment ISSUE-123 --body "Great work!"`, `${CLI_NAME} issue comment ISSUE-123 -b "Need more info"` ] } ] };