UNPKG

cli-stash

Version:

CLI application to manage and work with Atlassian Stash. Work with your Stash project and repositories from Command lines.

79 lines (78 loc) 3.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@oclif/core"); const stash_connector_1 = require("stash-connector"); const baseCommand_1 = require("../../../../../libs/core/baseCommand"); const stashResponse_1 = require("../../../../../libs/core/stashResponse"); const tables_1 = require("../../../../../libs/core/tables"); const ux_1 = require("../../../../../libs/core/ux"); class List extends baseCommand_1.BaseCommand { async run() { const response = new stashResponse_1.StashCLIResponse(); const connector = new stash_connector_1.StashConnector(this.localConfig.getConnectorOptions(this.flags.alias)); try { let result = new stash_connector_1.Page(); if (this.flags.all) { let tmp = await connector.projects.repos(this.flags.project).pullRequests(this.flags.slug).commits(this.flags.pull).list(this.flags['with-counts'], this.allPageOptions); result.values.push(...tmp.values); result.isLastPage = true; result.start = tmp.start; while (!tmp.isLastPage) { tmp = await connector.projects.repos(this.flags.project).pullRequests(this.flags.slug).commits(this.flags.pull).list(this.flags['with-counts'], { start: tmp.nextPageStart, limit: 100, }); result.values.push(...tmp.values); } result.size = result.values.length; } else { result = await connector.projects.repos(this.flags.project).pullRequests(this.flags.slug).commits(this.flags.pull).list(this.flags['with-counts'], this.pageOptions); } response.result = result; response.status = 0; response.message = this.getRecordsFoundText(result.values.length, 'Changes'); this.ux.log(response.message); this.ux.table(result.values, tables_1.CommitColumns, { csv: this.flags.csv, }); } catch (error) { this.processError(response, error); } return response; } } exports.default = List; List.description = 'Retrieve changesets for the specified pull request. ' + ux_1.UX.processDocumentation('<doc:Commit>'); List.examples = [ `$ stash projects:repos:pulls:commits:list -a MyStashAlias --project "ProjectKey" --slug "MyRepoSlug" --pull 1234 --all --csv`, `$ stash projects:repos:pulls:commits:list -a MyStashAlias --project "ProjectKey" --slug "MyRepoSlug" --pull 1234 --with-counts -l 100 -s 50 --json`, `$ stash projects:repos:pulls:commits:list -a MyStashAlias --project "ProjectKey" --slug "MyRepoSlug" --pull 1234 --from 5678 --limit 30`, ]; List.flags = { ...baseCommand_1.BaseCommand.flags, csv: baseCommand_1.BuildFlags.csv, alias: baseCommand_1.BuildFlags.alias, ...baseCommand_1.BuildFlags.pagination, project: core_1.Flags.string({ description: 'The Project Key (or user slug like ~userSlug) to retrieve repository pull requests commits', required: true, name: 'Project' }), slug: core_1.Flags.string({ description: 'The Repository slug to retrieve the pull requests commits', required: true, name: 'Slug' }), pull: core_1.Flags.integer({ description: 'The Pull Request Id to retrieve commits', required: true, name: 'Pull Request Id', }), 'with-counts': core_1.Flags.boolean({ description: 'If set to true, the service will add "authorCount" and "totalCount" at the end of the page. "authorCount" is the number of different authors and "totalCount" is the total number of changesets.', required: false, name: 'With Counts', }), };