UNPKG

cli-stash

Version:

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

102 lines (101 loc) 5.15 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 Changes 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).compare(this.flags.slug).changes().list({ from: this.flags.from, to: this.flags.to, fromRepo: this.flags['from-repo'], pageOptions: 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).compare(this.flags.slug).changes().list({ from: this.flags.from, to: this.flags.to, fromRepo: this.flags['from-repo'], pageOptions: { start: tmp.nextPageStart, limit: 100, } }); result.values.push(...tmp.values); } result.size = result.values.length; } else { result = await connector.projects.repos(this.flags.project).compare(this.flags.slug).changes().list({ from: this.flags.from, to: this.flags.to, fromRepo: this.flags['from-repo'], pageOptions: this.pageOptions }); } response.result = result; response.status = 0; response.message = this.getRecordsFoundText(result.values.length, 'Change'); this.ux.log(response.message); this.ux.table(result.values, tables_1.RepoChangesColumns, { csv: this.flags.csv, extended: this.flags.extended || this.flags.csv }); } catch (error) { this.processError(response, error); } return response; } } exports.default = Changes; Changes.description = 'Gets the file changes available in the from changeset but not in the to changeset. If either the from or to changeset are not specified, they will be replaced by the default branch of their containing repository. ' + ux_1.UX.processDocumentation('<doc:RepoChangesOutput>'); Changes.examples = [ `$ stash projects:repos:compare:changes -a MyStashAlias --project "ProjectKey" --slug "MyRepoSlug" --all --csv`, `$ stash projects:repos:compare:changes -a MyStashAlias --project "ProjectKey" --slug "MyRepoSlug" --from "45ajd3k4" -l 100 -s 50 --json`, `$ stash projects:repos:compare:changes -a MyStashAlias --project "ProjectKey" --slug "MyRepoSlug" --from "45ajd3k4" --to "asj767skf6" --limit 30`, `$ stash projects:repos:compare:changes -a MyStashAlias --project "ProjectKey" --slug "MyRepoSlug" --from-repo "project/repo" --limit 30`, ]; Changes.flags = { ...baseCommand_1.BaseCommand.flags, csv: baseCommand_1.BuildFlags.csv, extended: baseCommand_1.BuildFlags.extended, alias: baseCommand_1.BuildFlags.alias, ...baseCommand_1.BuildFlags.pagination, project: core_1.Flags.string({ description: 'The Project Key (or user slug like ~userSlug) to compare changes', required: true, name: 'Project' }), slug: core_1.Flags.string({ description: 'The Repository slug to compare changes', required: true, name: 'Slug' }), from: core_1.Flags.string({ description: 'The source changeset (can be a partial/full changeset id or qualified/unqualified ref name)', required: false, name: 'From' }), to: core_1.Flags.string({ description: 'The target changeset (can be a partial/full changeset id or qualified/unqualified ref name)', required: false, name: 'To' }), 'from-repo': core_1.Flags.string({ description: 'An optional parameter specifying the source repository containing the source changeset if that changeset is not present in the current repository; the repository can be specified by either its ID 42 or by its Project Key (or user slug like ~userSlug) plus its repo slug separated by a slash: projectKey/repoSlug', required: false, name: 'From Repo' }), };