mirror of https://gitlab.com/gitlab-org/cli.git
chore: re-add linting/formatting job to ci
This commit is contained in:
parent
5ddf81ee69
commit
39e9e21313
|
@ -20,17 +20,20 @@ include:
|
|||
- template: Security/SAST.gitlab-ci.yml
|
||||
- template: Security/Dependency-Scanning.gitlab-ci.yml
|
||||
- template: Security/Secret-Detection.gitlab-ci.yml
|
||||
- local: .gitlab/ci/*.gitlab-ci.yml
|
||||
|
||||
|
||||
# From: https://docs.gitlab.com/ee/ci/caching/#cache-go-dependencies
|
||||
.go-cache:
|
||||
variables:
|
||||
GOPATH: $CI_PROJECT_DIR/.go
|
||||
GOLANGCI_LINT_CACHE: $CI_PROJECT_DIR/.golangci-lint
|
||||
before_script:
|
||||
- mkdir -p .go
|
||||
- mkdir -p .go .golangci-lint
|
||||
cache:
|
||||
paths:
|
||||
- .go/pkg/mod/
|
||||
- .golangci-lint/
|
||||
|
||||
.documentation:
|
||||
stage: documentation
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
lint:
|
||||
extends: .go-cache
|
||||
image: registry.gitlab.com/gitlab-org/gitlab-build-images:golangci-lint-alpine
|
||||
stage: test
|
||||
script:
|
||||
- golangci-lint --version
|
||||
# Use default .golangci.yml file from the image if one is not present in the project root.
|
||||
- '[ -e .golangci.yml ] || cp /golangci/.golangci.yml .'
|
||||
# Write the code coverage report to gl-code-quality-report.json
|
||||
# and print linting issues to stdout in the format: path/to/file:line description
|
||||
# remove `--issues-exit-code 0` or set to non-zero to fail the job if linting issues are detected
|
||||
- golangci-lint run --issues-exit-code 0 --out-format code-climate | tee gl-code-quality-report.json | jq -r '.[] | "\(.location.path):\(.location.lines.begin) \(.description)"'
|
||||
- golangci-lint run --out-format colored-line-number:stdout,code-climate:gl-code-quality-report.json
|
||||
artifacts:
|
||||
reports:
|
||||
codequality: gl-code-quality-report.json
|
||||
|
|
|
@ -1,7 +1,17 @@
|
|||
linters:
|
||||
enable:
|
||||
- gofmt
|
||||
|
||||
run:
|
||||
timeout: 5m
|
||||
modules-download-mode: readonly
|
||||
|
||||
linters:
|
||||
disable-all: true
|
||||
enable:
|
||||
- errcheck
|
||||
- exportloopref
|
||||
- gofumpt
|
||||
- goimports
|
||||
- gosimple
|
||||
- govet
|
||||
- ineffassign
|
||||
- staticcheck
|
||||
- typecheck
|
||||
- unused
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
# Contributing Guide
|
||||
|
||||
## Developer Certificate of Origin + License
|
||||
|
||||
Contributions to this repository are subject to the [Developer Certificate of Origin](https://docs.gitlab.com/ee/legal/developer_certificate_of_origin.html#developer-certificate-of-origin-version-11).
|
||||
|
@ -16,26 +18,29 @@ Use your best judgement, and feel free to propose changes to this document in a
|
|||
|
||||
Please do:
|
||||
|
||||
* Check existing issues to verify that the bug or feature request has not already been submitted.
|
||||
* Open an issue if things aren't working as expected.
|
||||
* Open an issue to propose a significant change.
|
||||
* Open an issue to propose a feature.
|
||||
* Open a merge request to fix a bug.
|
||||
* Open a merge request to fix documentation about a command.
|
||||
* Open a merge request for an issue and leave a comment claiming it.
|
||||
- Check existing issues to verify that the bug or feature request has not already been submitted.
|
||||
- Open an issue if things aren't working as expected.
|
||||
- Open an issue to propose a significant change.
|
||||
- Open an issue to propose a feature.
|
||||
- Open a merge request to fix a bug.
|
||||
- Open a merge request to fix documentation about a command.
|
||||
- Open a merge request for an issue and leave a comment claiming it.
|
||||
|
||||
Please avoid:
|
||||
|
||||
* Opening merge requests for issues marked `blocked`.
|
||||
* Opening merge requests for documentation for a new command specifically. Manual pages are auto-generated from source after every release
|
||||
- Opening merge requests for issues marked `blocked`.
|
||||
- Opening merge requests for documentation for a new command specifically. Manual pages are auto-generated from source after every release
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
We want to create a welcoming environment for everyone who is interested in contributing. Visit our [Code of Conduct page](https://about.gitlab.com/community/contribute/code-of-conduct/) to learn more about our commitment to an open and welcoming environment.
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Building the project
|
||||
|
||||
Prerequisites:
|
||||
|
||||
- Go 1.16+
|
||||
|
||||
Build with: `make` or `go build -o bin/glab ./cmd/glab/main.go`
|
||||
|
@ -59,6 +64,15 @@ on [GitLab.com](https://gitlab.com).
|
|||
1. Make your change, add tests, and ensure tests pass
|
||||
1. Submit a merge request
|
||||
|
||||
### Formatting your code
|
||||
|
||||
We use [`golangci-lint`](https://golangci-lint.run/) to lint and format
|
||||
the code in this project. The linter configuration can be seen
|
||||
[here](https://gitlab.com/gitlab-org/cli/-/blob/main/.golangci.yml).
|
||||
|
||||
Additional details about code style and format are in the
|
||||
[go guide](https://docs.gitlab.com/ee/development/go_guide/#code-style-and-format).
|
||||
|
||||
## Commit Messages
|
||||
|
||||
### TL;DR: Your commit message should be semantic
|
||||
|
@ -76,6 +90,7 @@ Any line of the commit message cannot be longer than 100 characters! This allows
|
|||
```
|
||||
|
||||
### Message Header
|
||||
|
||||
Ideally, the commit message heading which contains the description, should not be more than 50 characters
|
||||
|
||||
The message header is a single line that contains a succinct description of the change containing a type, an optional scope, and a subject.
|
||||
|
@ -100,9 +115,9 @@ Scope can be anything specifying the place of the commit change. For example eve
|
|||
|
||||
This is a very short description of the change
|
||||
|
||||
* `use imperative, present tense: “change” not “changed” nor “changes”`
|
||||
* `don't capitalize the first letter`
|
||||
* `no dot (.) at the end`
|
||||
- `use imperative, present tense: “change” not “changed” nor “changes”`
|
||||
- `don't capitalize the first letter`
|
||||
- `no dot (.) at the end`
|
||||
|
||||
### Message Body
|
||||
|
||||
|
@ -137,4 +152,3 @@ fix(login): allow provided user preferences to override default preferences
|
|||
|
||||
Fixes #025
|
||||
```
|
||||
|
||||
|
|
|
@ -78,6 +78,7 @@ func GetClient() *Client {
|
|||
|
||||
// HTTPClient returns the httpClient instance used to initialise the gitlab api client
|
||||
func HTTPClient() *http.Client { return apiClient.HTTPClient() }
|
||||
|
||||
func (c *Client) HTTPClient() *http.Client {
|
||||
if c.httpClientOverride != nil {
|
||||
return c.httpClientOverride
|
||||
|
@ -90,12 +91,14 @@ func (c *Client) HTTPClient() *http.Client {
|
|||
|
||||
// OverrideHTTPClient overrides the default http client
|
||||
func OverrideHTTPClient(client *http.Client) { apiClient.OverrideHTTPClient(client) }
|
||||
|
||||
func (c *Client) OverrideHTTPClient(client *http.Client) {
|
||||
c.httpClientOverride = client
|
||||
}
|
||||
|
||||
// Token returns the authentication token
|
||||
func Token() string { return apiClient.Token() }
|
||||
|
||||
func (c *Client) Token() string {
|
||||
return c.token
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ func Test_tlsConfig(t *testing.T) {
|
|||
type args struct {
|
||||
host string
|
||||
}
|
||||
var tests = []struct {
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want []uint16
|
||||
|
@ -38,7 +38,6 @@ func Test_tlsConfig(t *testing.T) {
|
|||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
||||
client := tlsConfig(tt.args.host)
|
||||
|
||||
assert.Equal(t, tt.want, client.CipherSuites)
|
||||
|
|
|
@ -166,7 +166,6 @@ var GetPipeline = func(client *gitlab.Client, pid int, l *gitlab.RequestOptionFu
|
|||
}
|
||||
|
||||
pipe, _, err := client.Pipelines.GetPipeline(repo, pid)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -179,13 +178,12 @@ var GetPipelineVariables = func(client *gitlab.Client, pid int, l *gitlab.Reques
|
|||
}
|
||||
|
||||
pipe, _, err := client.Pipelines.GetPipeline(repo, pid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
projectID := pipe.ProjectID
|
||||
|
||||
pipelineVars, _, err := client.Pipelines.GetPipelineVariables(projectID, pid)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@ var GetFile = func(client *gitlab.Client, projectID interface{}, path string, re
|
|||
Ref: &ref,
|
||||
}
|
||||
file, _, err := client.RepositoryFiles.GetFile(projectID, path, fileOpts)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -55,7 +55,6 @@ var DeleteProjectVariable = func(client *gitlab.Client, projectID interface{}, k
|
|||
},
|
||||
}
|
||||
_, err := client.ProjectVariables.RemoveVariable(projectID, key, reqOpts)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -68,7 +67,7 @@ var UpdateProjectVariable = func(client *gitlab.Client, projectID interface{}, k
|
|||
client = apiClient.Lab()
|
||||
}
|
||||
|
||||
var filter = func(request *retryablehttp.Request) error {
|
||||
filter := func(request *retryablehttp.Request) error {
|
||||
q := request.URL.Query()
|
||||
q.Add("filter[environment_scope]", *opts.EnvironmentScope)
|
||||
|
||||
|
@ -127,7 +126,6 @@ var DeleteGroupVariable = func(client *gitlab.Client, groupID interface{}, key s
|
|||
}
|
||||
|
||||
_, err := client.GroupVariables.RemoveVariable(groupID, key)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ func main() {
|
|||
}
|
||||
os.Exit(1)
|
||||
}
|
||||
err := os.MkdirAll(*path, 0755)
|
||||
err := os.MkdirAll(*path, 0o755)
|
||||
if err != nil {
|
||||
fatal(err)
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ func genWebDocs(glabCli *cobra.Command, path string) error {
|
|||
for _, cmd := range cmds {
|
||||
fmt.Println("Generating docs for " + cmd.Name())
|
||||
// create directories for parent commands
|
||||
_ = os.MkdirAll(path+cmd.Name(), 0750)
|
||||
_ = os.MkdirAll(path+cmd.Name(), 0o750)
|
||||
|
||||
// Generate parent command
|
||||
out := new(bytes.Buffer)
|
||||
|
@ -88,7 +88,7 @@ func genWebDocs(glabCli *cobra.Command, path string) error {
|
|||
for _, cmdC := range cmd.Commands() {
|
||||
if cmdC.HasAvailableSubCommands() {
|
||||
fmt.Println("Generating subcommand docs for " + cmdC.Name())
|
||||
_ = os.MkdirAll(path+cmd.Name()+"/"+cmdC.Name(), 0750)
|
||||
_ = os.MkdirAll(path+cmd.Name()+"/"+cmdC.Name(), 0o750)
|
||||
|
||||
// Generate parent command
|
||||
out := new(bytes.Buffer)
|
||||
|
@ -97,7 +97,7 @@ func genWebDocs(glabCli *cobra.Command, path string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
err = config.WriteFile(path+cmd.Name()+"/"+cmdC.Name()+"/index.md", out.Bytes(), 0755)
|
||||
err = config.WriteFile(path+cmd.Name()+"/"+cmdC.Name()+"/index.md", out.Bytes(), 0o755)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ func genWebDocs(glabCli *cobra.Command, path string) error {
|
|||
}
|
||||
}
|
||||
|
||||
err = config.WriteFile(path+cmd.Name()+"/index.md", out.Bytes(), 0755)
|
||||
err = config.WriteFile(path+cmd.Name()+"/index.md", out.Bytes(), 0o755)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -190,14 +190,14 @@ func GenMarkdownCustom(cmd *cobra.Command, w io.Writer) error {
|
|||
buf := new(bytes.Buffer)
|
||||
name := cmd.CommandPath()
|
||||
|
||||
//GitLab Specific Docs Metadata
|
||||
// GitLab Specific Docs Metadata
|
||||
buf.WriteString("---" + "\n")
|
||||
buf.WriteString("stage: Create" + "\n")
|
||||
buf.WriteString("group: Code Review" + "\n")
|
||||
buf.WriteString("info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments" + "\n")
|
||||
buf.WriteString("---" + "\n\n")
|
||||
|
||||
//Generated by a script
|
||||
// Generated by a script
|
||||
buf.WriteString("<!--" + "\n")
|
||||
buf.WriteString("This documentation is auto generated by a script." + "\n")
|
||||
buf.WriteString("Please do not edit this file directly, check cmd/gen-docs/docs.go." + "\n")
|
||||
|
|
|
@ -10,7 +10,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdAlias(f *cmdutils.Factory) *cobra.Command {
|
||||
var aliasCmd = &cobra.Command{
|
||||
aliasCmd := &cobra.Command{
|
||||
Use: "alias [command] [flags]",
|
||||
Short: `Create, list and delete aliases`,
|
||||
Long: ``,
|
||||
|
|
|
@ -23,7 +23,7 @@ func NewCmdDelete(f *cmdutils.Factory, runF func(*DeleteOptions) error) *cobra.C
|
|||
IO: f.IO,
|
||||
}
|
||||
|
||||
var aliasDeleteCmd = &cobra.Command{
|
||||
aliasDeleteCmd := &cobra.Command{
|
||||
Use: "delete <alias name> [flags]",
|
||||
Short: `Delete an alias.`,
|
||||
Long: ``,
|
||||
|
@ -54,7 +54,6 @@ func deleteRun(cmd *cobra.Command, opts *DeleteOptions) error {
|
|||
expansion, ok := aliasCfg.Get(opts.Name)
|
||||
if !ok {
|
||||
return fmt.Errorf("no such alias %s", opts.Name)
|
||||
|
||||
}
|
||||
err = aliasCfg.Delete(opts.Name)
|
||||
if err != nil {
|
||||
|
|
|
@ -25,7 +25,7 @@ func NewCmdList(f *cmdutils.Factory, runF func(*ListOptions) error) *cobra.Comma
|
|||
IO: f.IO,
|
||||
}
|
||||
|
||||
var aliasListCmd = &cobra.Command{
|
||||
aliasListCmd := &cobra.Command{
|
||||
Use: "list [flags]",
|
||||
Short: `List the available aliases.`,
|
||||
Long: ``,
|
||||
|
|
|
@ -28,7 +28,7 @@ func NewCmdSet(f *cmdutils.Factory, runF func(*SetOptions) error) *cobra.Command
|
|||
Config: f.Config,
|
||||
}
|
||||
|
||||
var aliasSetCmd = &cobra.Command{
|
||||
aliasSetCmd := &cobra.Command{
|
||||
Use: "set <alias name> '<command>' [flags]",
|
||||
Short: `Set an alias.`,
|
||||
Long: heredoc.Doc(`
|
||||
|
|
|
@ -83,7 +83,6 @@ func TestAliasSet_empty_aliases(t *testing.T) {
|
|||
`))
|
||||
|
||||
output, err := runCommand(cfg, true, "co 'mr checkout'")
|
||||
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %s", err)
|
||||
}
|
||||
|
@ -135,13 +134,17 @@ func TestAliasSet_arg_processing(t *testing.T) {
|
|||
|
||||
{`iz 'issue list'`, "- Adding alias for.*iz.*issue list", "iz: issue list"},
|
||||
|
||||
{`ii 'issue list --author="$1" --label="$2"'`,
|
||||
{
|
||||
`ii 'issue list --author="$1" --label="$2"'`,
|
||||
`- Adding alias for.*ii.*issue list --author="\$1" --label="\$2"`,
|
||||
`ii: issue list --author="\$1" --label="\$2"`},
|
||||
`ii: issue list --author="\$1" --label="\$2"`,
|
||||
},
|
||||
|
||||
{`ix "issue list --author='\$1' --label='\$2'"`,
|
||||
{
|
||||
`ix "issue list --author='\$1' --label='\$2'"`,
|
||||
`- Adding alias for.*ix.*issue list --author='\$1' --label='\$2'`,
|
||||
`ix: issue list --author='\$1' --label='\$2'`},
|
||||
`ix: issue list --author='\$1' --label='\$2'`,
|
||||
},
|
||||
}
|
||||
|
||||
for _, c := range cases {
|
||||
|
@ -198,7 +201,6 @@ view: mr view
|
|||
|
||||
test.ExpectLines(t, output.Stderr(), "Adding alias for.*view.*mr view", "Added alias.")
|
||||
assert.Equal(t, expected, mainBuf.String())
|
||||
|
||||
}
|
||||
|
||||
func TestAliasSet_invalid_command(t *testing.T) {
|
||||
|
|
|
@ -104,7 +104,7 @@ func NewCmdApi(f *cmdutils.Factory, runF func(*ApiOptions) error) *cobra.Command
|
|||
there are no more pages of results. For GraphQL requests, this requires that the
|
||||
original query accepts an '$endCursor: String' variable and that it fetches the
|
||||
'pageInfo{ hasNextPage, endCursor }' set of fields from a collection.
|
||||
`,"`"),
|
||||
`, "`"),
|
||||
Example: heredoc.Doc(`
|
||||
$ glab api projects/:fullpath/releases
|
||||
|
||||
|
|
|
@ -68,7 +68,6 @@ func httpRequest(client *api.Client, config config.Config, hostname string, meth
|
|||
|
||||
baseURL, _ = url.Parse(baseURLStr)
|
||||
req, err := api.NewHTTPRequest(client, method, baseURL, body, headers, bodyIsJSON)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -100,7 +100,7 @@ hosts:
|
|||
if envIsSet && originalEnvVarToken != "" {
|
||||
_ = os.Setenv("GITLAB_TOKEN", "")
|
||||
}
|
||||
var client = &http.Client{}
|
||||
client := &http.Client{}
|
||||
client.Transport = roundTripFunc(func(req *http.Request) (*http.Response, error) {
|
||||
t.Log("Tsti")
|
||||
return &http.Response{
|
||||
|
|
|
@ -137,7 +137,6 @@ func loginRun() error {
|
|||
"GitLab Self-hosted Instance",
|
||||
},
|
||||
}, &hostType)
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not prompt: %w", err)
|
||||
}
|
||||
|
|
|
@ -282,7 +282,6 @@ git_protocol: ssh
|
|||
IO: io,
|
||||
}
|
||||
t.Run("no instance authenticated", func(t *testing.T) {
|
||||
|
||||
err := statusRun(opts)
|
||||
assert.Equal(t, err, cmdutils.SilentError)
|
||||
assert.Equal(t, stdout.String(), "")
|
||||
|
|
|
@ -15,7 +15,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdRun(f *cmdutils.Factory) *cobra.Command {
|
||||
var jobArtifactCmd = &cobra.Command{
|
||||
jobArtifactCmd := &cobra.Command{
|
||||
Use: "artifact <refName> <jobName> [flags]",
|
||||
Short: `Download all Artifacts from the last pipeline`,
|
||||
Aliases: []string{"push"},
|
||||
|
@ -26,7 +26,6 @@ func NewCmdRun(f *cmdutils.Factory) *cobra.Command {
|
|||
Long: ``,
|
||||
Args: cobra.ExactArgs(2),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
||||
repo, err := f.BaseRepo()
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -51,7 +50,7 @@ func NewCmdRun(f *cmdutils.Factory) *cobra.Command {
|
|||
}
|
||||
|
||||
if !config.CheckPathExists(path) {
|
||||
if err := os.Mkdir(path, 0755); err != nil {
|
||||
if err := os.Mkdir(path, 0o755); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdCI(f *cmdutils.Factory) *cobra.Command {
|
||||
var ciCmd = &cobra.Command{
|
||||
ciCmd := &cobra.Command{
|
||||
Use: "ci <command> [flags]",
|
||||
Short: `Work with GitLab CI pipelines and jobs`,
|
||||
Long: ``,
|
||||
|
|
|
@ -31,5 +31,4 @@ func TestPipelineCmd(t *testing.T) {
|
|||
out := <-outC
|
||||
|
||||
assert.Contains(t, out, "Use \"ci [command] --help\" for more information about a command.\n")
|
||||
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdDelete(f *cmdutils.Factory) *cobra.Command {
|
||||
var pipelineDeleteCmd = &cobra.Command{
|
||||
pipelineDeleteCmd := &cobra.Command{
|
||||
Use: "delete <id> [flags]",
|
||||
Short: `Delete a CI pipeline`,
|
||||
Example: heredoc.Doc(`
|
||||
|
@ -25,7 +25,6 @@ func NewCmdDelete(f *cmdutils.Factory) *cobra.Command {
|
|||
Long: ``,
|
||||
Args: cobra.ExactArgs(1),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
||||
var err error
|
||||
c := f.IO.Color()
|
||||
apiClient, err := f.HttpClient()
|
||||
|
@ -71,7 +70,6 @@ func NewCmdDelete(f *cmdutils.Factory) *cobra.Command {
|
|||
}
|
||||
|
||||
return nil
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ type PipelineMergedResponse struct {
|
|||
}
|
||||
|
||||
func NewCmdGet(f *cmdutils.Factory) *cobra.Command {
|
||||
var pipelineGetCmd = &cobra.Command{
|
||||
pipelineGetCmd := &cobra.Command{
|
||||
Use: "get [flags]",
|
||||
Short: `Get JSON of a running CI pipeline on current or other branch specified`,
|
||||
Aliases: []string{"stats"},
|
||||
|
@ -64,7 +64,14 @@ func NewCmdGet(f *cmdutils.Factory) *cobra.Command {
|
|||
}
|
||||
|
||||
jobs, err := api.GetPipelineJobs(apiClient, pipelineId, repo.FullName())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
variables, err := api.GetPipelineVariables(apiClient, pipelineId, nil, repo.FullName())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mergedPipelineObject := &PipelineMergedResponse{
|
||||
Pipeline: pipeline,
|
||||
|
|
|
@ -14,7 +14,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdCI(f *cmdutils.Factory) *cobra.Command {
|
||||
var pipelineCICmd = &cobra.Command{
|
||||
pipelineCICmd := &cobra.Command{
|
||||
Use: "ci <command> [flags]",
|
||||
Short: `Work with GitLab CI pipelines and jobs`,
|
||||
Example: heredoc.Doc(`
|
||||
|
|
|
@ -30,5 +30,4 @@ func TestNewCmdCI(t *testing.T) {
|
|||
assert.Contains(t, stdout.String(), "Work with GitLab CI pipelines and jobs\n")
|
||||
assert.Contains(t, stderr.String(), "")
|
||||
assert.Contains(t, stdout.String(), "This command is deprecated. All the commands under it has been moved to `ci` or `pipeline` command. See https://gitlab.com/gitlab-org/cli/issues/372 for more info.\n")
|
||||
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdLint(f *cmdutils.Factory) *cobra.Command {
|
||||
var pipelineCILintCmd = &cobra.Command{
|
||||
pipelineCILintCmd := &cobra.Command{
|
||||
Use: "lint",
|
||||
Short: "Checks if your `.gitlab-ci.yml` file is valid.",
|
||||
Args: cobra.MaximumNArgs(1),
|
||||
|
|
|
@ -14,7 +14,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdList(f *cmdutils.Factory) *cobra.Command {
|
||||
var pipelineListCmd = &cobra.Command{
|
||||
pipelineListCmd := &cobra.Command{
|
||||
Use: "list [flags]",
|
||||
Short: `Get the list of CI pipelines`,
|
||||
Example: heredoc.Doc(`
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdRetry(f *cmdutils.Factory) *cobra.Command {
|
||||
var pipelineRetryCmd = &cobra.Command{
|
||||
pipelineRetryCmd := &cobra.Command{
|
||||
Use: "retry <job-id>",
|
||||
Short: `Retry a CI job`,
|
||||
Aliases: []string{},
|
||||
|
@ -48,7 +48,6 @@ func NewCmdRetry(f *cmdutils.Factory) *cobra.Command {
|
|||
fmt.Fprintln(f.IO.StdOut, "Retried job (id:", job.ID, "), status:", job.Status, ", ref:", job.Ref, ", weburl: ", job.WebURL, ")")
|
||||
|
||||
return nil
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -85,7 +85,7 @@ func extractFileVar(s string) (*gitlab.PipelineVariableOptions, error) {
|
|||
}
|
||||
|
||||
func NewCmdRun(f *cmdutils.Factory) *cobra.Command {
|
||||
var pipelineRunCmd = &cobra.Command{
|
||||
pipelineRunCmd := &cobra.Command{
|
||||
Use: "run [flags]",
|
||||
Short: `Create or run a new CI pipeline`,
|
||||
Aliases: []string{"create"},
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdStatus(f *cmdutils.Factory) *cobra.Command {
|
||||
var pipelineStatusCmd = &cobra.Command{
|
||||
pipelineStatusCmd := &cobra.Command{
|
||||
Use: "status [flags]",
|
||||
Short: `View a running CI pipeline on current or other branch specified`,
|
||||
Aliases: []string{"stats"},
|
||||
|
@ -96,7 +96,7 @@ func NewCmdStatus(f *cmdutils.Factory) *cobra.Command {
|
|||
default:
|
||||
status = c.Gray(s)
|
||||
}
|
||||
//fmt.Println(job.Tag)
|
||||
// fmt.Println(job.Tag)
|
||||
if compact {
|
||||
fmt.Fprintf(writer, "(%s) • %s [%s]\n", status, job.Name, job.Stage)
|
||||
} else {
|
||||
|
|
|
@ -37,7 +37,7 @@ func NewCmdTrace(f *cmdutils.Factory, runE func(traceOpts *TraceOpts) error) *co
|
|||
opts := &TraceOpts{
|
||||
IO: f.IO,
|
||||
}
|
||||
var pipelineCITraceCmd = &cobra.Command{
|
||||
pipelineCITraceCmd := &cobra.Command{
|
||||
Use: "trace [<job-id>] [flags]",
|
||||
Short: `Trace a CI job log in real time`,
|
||||
Example: heredoc.Doc(`
|
||||
|
|
|
@ -116,7 +116,6 @@ hosts:
|
|||
assert.Equal(t, tt.wantOpts.IO, actualOpts.IO)
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestTraceRun(t *testing.T) {
|
||||
|
@ -182,5 +181,4 @@ func TestTraceRun(t *testing.T) {
|
|||
tt.assertContains(t, stdout.String())
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -24,6 +24,9 @@ import (
|
|||
"github.com/rivo/tview"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/xanzy/go-gitlab"
|
||||
|
||||
"golang.org/x/text/cases"
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
type ViewOpts struct {
|
||||
|
@ -38,7 +41,7 @@ type ViewOpts struct {
|
|||
|
||||
func NewCmdView(f *cmdutils.Factory) *cobra.Command {
|
||||
opts := ViewOpts{}
|
||||
var pipelineCIView = &cobra.Command{
|
||||
pipelineCIView := &cobra.Command{
|
||||
Use: "view [branch/tag]",
|
||||
Short: "View, run, trace/logs, and cancel CI jobs current pipeline",
|
||||
Long: heredoc.Doc(`Supports viewing, running, tracing, and canceling jobs.
|
||||
|
@ -448,7 +451,8 @@ func jobsView(app *tview.Application, jobsCh chan []*gitlab.Job, inputCh chan st
|
|||
x, y, w, h := boxX, maxY/6-4, maxTitle+2, 3
|
||||
b := box(root, key, x, y, w, h)
|
||||
|
||||
b.SetText(strings.Title(j.Stage))
|
||||
caser := cases.Title(language.English)
|
||||
b.SetText(caser.String(j.Stage))
|
||||
b.SetTextAlign(tview.AlignCenter)
|
||||
|
||||
}
|
||||
|
@ -525,8 +529,8 @@ func jobsView(app *tview.Application, jobsCh chan []*gitlab.Job, inputCh chan st
|
|||
|
||||
}
|
||||
root.SendToFront("jobs-" + curJob.Name)
|
||||
|
||||
}
|
||||
|
||||
func box(root *tview.Pages, key string, x, y, w, h int) *tview.TextView {
|
||||
b, ok := boxes[key]
|
||||
if !ok {
|
||||
|
|
|
@ -23,7 +23,7 @@ func assertScreen(t *testing.T, screen tcell.Screen, expected []string) {
|
|||
r, _, _, _ := screen.GetContent(x, y)
|
||||
runes[x] = r
|
||||
_ = expectedRune
|
||||
//assert.Equal(t, expectedRune, r, "%s != %s at (%d,%d)",
|
||||
// assert.Equal(t, expectedRune, r, "%s != %s at (%d,%d)",
|
||||
// strconv.QuoteRune(expectedRune), strconv.QuoteRune(r), x, y)
|
||||
}
|
||||
|
||||
|
@ -411,7 +411,6 @@ func Test_LinkJobsNegative(t *testing.T) {
|
|||
t.Run(test.desc, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
assert.Error(t, linkJobs(screen, test.jobs, test.boxes))
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ func InitTest(m *testing.M, suffix string) {
|
|||
}
|
||||
|
||||
func RunCommand(cmd *cobra.Command, cli string, stds ...*bytes.Buffer) (*test.CmdOut, error) {
|
||||
//var stdin *bytes.Buffer
|
||||
// var stdin *bytes.Buffer
|
||||
var stderr *bytes.Buffer
|
||||
var stdout *bytes.Buffer
|
||||
|
||||
|
|
|
@ -465,7 +465,6 @@ func (ua *UserAssignments) UsersFromAddRemove(
|
|||
apiClient *gitlab.Client,
|
||||
actions []string,
|
||||
) (*[]int, []string, error) {
|
||||
|
||||
var assignedIDs []int
|
||||
var usernames []string
|
||||
|
||||
|
|
|
@ -83,7 +83,6 @@ func Test_ParseAssignees(t *testing.T) {
|
|||
assert.ElementsMatch(t, uaGot.ToReplace, tC.wantReplace)
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func Test_VerifyAssignees(t *testing.T) {
|
||||
|
@ -743,7 +742,6 @@ func Test_AssigneesPrompt(t *testing.T) {
|
|||
assert.Equal(t, tC.expectedStdErr, outErr)
|
||||
}
|
||||
assert.ElementsMatch(t, got, tC.output)
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -1114,8 +1112,8 @@ func Test_LabelsPromptPromptsFail(t *testing.T) {
|
|||
assert.Nil(t, got)
|
||||
assert.EqualError(t, err, "AskQuestionWithInput prompt failed")
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func Test_LabelsPromptMultiSelect(t *testing.T) {
|
||||
// mock glrepo.Remote object
|
||||
repo := glrepo.New("foo", "bar")
|
||||
|
@ -1380,5 +1378,4 @@ func TestListGitLabTemplates(t *testing.T) {
|
|||
assert.EqualValues(t, test.wantTemplates, gotTemplates, "Templates got didn't match")
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -107,7 +107,6 @@ func HTTPClientFactory(f *Factory) {
|
|||
}
|
||||
|
||||
func NewFactory() *Factory {
|
||||
|
||||
return &Factory{
|
||||
Config: configFunc,
|
||||
Remotes: remotesFunc,
|
||||
|
|
|
@ -17,7 +17,7 @@ func NewCmdCompletion(io *iostreams.IOStreams) *cobra.Command {
|
|||
excludeDesc = false
|
||||
)
|
||||
|
||||
var completionCmd = &cobra.Command{
|
||||
completionCmd := &cobra.Command{
|
||||
Use: "completion",
|
||||
Short: "Generate shell completion scripts",
|
||||
Long: heredoc.Docf(`
|
||||
|
|
|
@ -147,7 +147,7 @@ func NewCmdConfigInit(f *cmdutils.Factory) *cobra.Command {
|
|||
$ glab config init
|
||||
? Enter default GitLab Host (Current Value: https://gitlab.com):
|
||||
%[1]s
|
||||
`,"```"),
|
||||
`, "```"),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
return configInit(f)
|
||||
},
|
||||
|
|
|
@ -8,7 +8,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdBoard(f *cmdutils.Factory) *cobra.Command {
|
||||
var issueCmd = &cobra.Command{
|
||||
issueCmd := &cobra.Command{
|
||||
Use: "board [command] [flags]",
|
||||
Short: `Work with GitLab Issue Boards in the given project.`,
|
||||
Long: ``,
|
||||
|
|
|
@ -14,7 +14,7 @@ import (
|
|||
var boardName string
|
||||
|
||||
func NewCmdCreate(f *cmdutils.Factory) *cobra.Command {
|
||||
var issueCmd = &cobra.Command{
|
||||
issueCmd := &cobra.Command{
|
||||
Use: "create [flags]",
|
||||
Short: `Create a project issue board.`,
|
||||
Long: ``,
|
||||
|
|
|
@ -76,7 +76,6 @@ func TestNewCmdCreate(t *testing.T) {
|
|||
|
||||
assert.Contains(t, out, tc.want)
|
||||
assert.Contains(t, stderr.String(), "")
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,6 +14,9 @@ import (
|
|||
"gitlab.com/gitlab-org/cli/api"
|
||||
"gitlab.com/gitlab-org/cli/commands/cmdutils"
|
||||
"gitlab.com/gitlab-org/cli/internal/glrepo"
|
||||
|
||||
"golang.org/x/text/cases"
|
||||
"golang.org/x/text/language"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -22,8 +25,10 @@ var (
|
|||
repo glrepo.Interface
|
||||
)
|
||||
|
||||
const closed string = "closed"
|
||||
const opened string = "opened"
|
||||
const (
|
||||
closed string = "closed"
|
||||
opened string = "opened"
|
||||
)
|
||||
|
||||
type issueBoardViewOptions struct {
|
||||
assignee string
|
||||
|
@ -40,8 +45,8 @@ type boardMeta struct {
|
|||
}
|
||||
|
||||
func NewCmdView(f *cmdutils.Factory) *cobra.Command {
|
||||
var opts = &issueBoardViewOptions{}
|
||||
var viewCmd = &cobra.Command{
|
||||
opts := &issueBoardViewOptions{}
|
||||
viewCmd := &cobra.Command{
|
||||
Use: "view [flags]",
|
||||
Short: `View project issue board.`,
|
||||
Long: ``,
|
||||
|
@ -149,16 +154,17 @@ func NewCmdView(f *cmdutils.Factory) *cobra.Command {
|
|||
}
|
||||
|
||||
// format table title
|
||||
caser := cases.Title(language.English)
|
||||
var boardType, boardContext string
|
||||
if selectedBoard.group != nil {
|
||||
boardType = strings.Title("group")
|
||||
boardType = caser.String("group")
|
||||
boardContext = project.Namespace.Name
|
||||
} else {
|
||||
boardType = strings.Title("project")
|
||||
boardType = caser.String("project")
|
||||
boardContext = project.NameWithNamespace
|
||||
}
|
||||
root.SetBorderPadding(1, 1, 2, 2).SetBorder(true).SetTitle(
|
||||
fmt.Sprintf(" %s • %s ", strings.Title(boardType+" issue board"), boardContext),
|
||||
fmt.Sprintf(" %s • %s ", caser.String(boardType+" issue board"), boardContext),
|
||||
)
|
||||
|
||||
screen, err := tcell.NewScreen()
|
||||
|
@ -245,7 +251,7 @@ func buildLabelString(labelDetails []*gitlab.LabelDetails) string {
|
|||
labels += fmt.Sprintf("[white:%s:-]%s[white:-:-] ", ld.Color, ld.Name)
|
||||
}
|
||||
if labels != "" {
|
||||
labels = strings.TrimSpace(labels) + fmt.Sprintf("\n")
|
||||
labels = strings.TrimSpace(labels) + "\n"
|
||||
}
|
||||
return labels
|
||||
}
|
||||
|
@ -269,7 +275,6 @@ func mapBoardData(
|
|||
projectIssueBoards []*gitlab.IssueBoard,
|
||||
projectGroupIssueBoards []*gitlab.GroupIssueBoard,
|
||||
) ([]string, map[string]boardMeta) {
|
||||
|
||||
// find longest board name to base padding on
|
||||
maxNameLength := 0
|
||||
for _, board := range projectIssueBoards {
|
||||
|
|
|
@ -13,7 +13,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdClose(f *cmdutils.Factory) *cobra.Command {
|
||||
var issueCloseCmd = &cobra.Command{
|
||||
issueCloseCmd := &cobra.Command{
|
||||
Use: "close <id>",
|
||||
Short: `Close an issue`,
|
||||
Long: ``,
|
||||
|
|
|
@ -60,7 +60,6 @@ func Test_issueClose(t *testing.T) {
|
|||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.Name, func(t *testing.T) {
|
||||
|
||||
io, _, stdout, stderr := iostreams.Test()
|
||||
f := cmdtest.StubFactory("https://gitlab.com/glab-cli/test")
|
||||
f.IO = io
|
||||
|
@ -81,7 +80,7 @@ func Test_issueClose(t *testing.T) {
|
|||
}
|
||||
|
||||
out := stripansi.Strip(stdout.String())
|
||||
//outErr := stripansi.Strip(stderr.String())
|
||||
// outErr := stripansi.Strip(stderr.String())
|
||||
|
||||
for _, msg := range tc.ExpectedMsg {
|
||||
assert.Contains(t, out, msg)
|
||||
|
|
|
@ -61,7 +61,7 @@ func NewCmdCreate(f *cmdutils.Factory) *cobra.Command {
|
|||
Remotes: f.Remotes,
|
||||
Config: f.Config,
|
||||
}
|
||||
var issueCreateCmd = &cobra.Command{
|
||||
issueCreateCmd := &cobra.Command{
|
||||
Use: "create [flags]",
|
||||
Short: `Create an issue`,
|
||||
Long: ``,
|
||||
|
|
|
@ -64,7 +64,8 @@ func Test_IssueCreate(t *testing.T) {
|
|||
cmd := NewCmdCreate(f)
|
||||
cmd.Flags().StringP("repo", "R", "", "")
|
||||
|
||||
cliStr := []string{"-t", "myissuetitle",
|
||||
cliStr := []string{
|
||||
"-t", "myissuetitle",
|
||||
"-d", "myissuebody",
|
||||
"-l", "test,bug",
|
||||
"--weight", "1",
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdDelete(f *cmdutils.Factory) *cobra.Command {
|
||||
var issueDeleteCmd = &cobra.Command{
|
||||
issueDeleteCmd := &cobra.Command{
|
||||
Use: "delete <id>",
|
||||
Short: `Delete an issue`,
|
||||
Long: ``,
|
||||
|
|
|
@ -68,7 +68,6 @@ func TestNewCmdDelete(t *testing.T) {
|
|||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
||||
io, _, stdout, stderr := iostreams.Test()
|
||||
f := cmdtest.StubFactory("")
|
||||
f.IO = io
|
||||
|
|
|
@ -19,7 +19,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdIssue(f *cmdutils.Factory) *cobra.Command {
|
||||
var issueCmd = &cobra.Command{
|
||||
issueCmd := &cobra.Command{
|
||||
Use: "issue [command] [flags]",
|
||||
Short: `Work with GitLab issues`,
|
||||
Long: ``,
|
||||
|
|
|
@ -100,7 +100,6 @@ func IssuesFromArgs(apiClient *gitlab.Client, baseRepoFn func() (glrepo.Interfac
|
|||
return nil, nil, err
|
||||
}
|
||||
return issues, baseRepo, nil
|
||||
|
||||
}
|
||||
|
||||
func IssueFromArg(apiClient *gitlab.Client, baseRepoFn func() (glrepo.Interface, error), arg string) (*gitlab.Issue, glrepo.Interface, error) {
|
||||
|
@ -139,8 +138,10 @@ func IssueFromArg(apiClient *gitlab.Client, baseRepoFn func() (glrepo.Interface,
|
|||
//
|
||||
// OWNER/REPO/issues/id
|
||||
// GROUP/NAMESPACE/REPO/issues/id
|
||||
var issueURLPersonalRE = regexp.MustCompile(`^/([^/]+)/([^/]+)/issues/(\d+)`)
|
||||
var issueURLGroupRE = regexp.MustCompile(`^/([^/]+)/([^/]+)/([^/]+)/issues/(\d+)`)
|
||||
var (
|
||||
issueURLPersonalRE = regexp.MustCompile(`^/([^/]+)/([^/]+)/issues/(\d+)`)
|
||||
issueURLGroupRE = regexp.MustCompile(`^/([^/]+)/([^/]+)/([^/]+)/issues/(\d+)`)
|
||||
)
|
||||
|
||||
func issueMetadataFromURL(s string) (int, glrepo.Interface) {
|
||||
u, err := url.Parse(s)
|
||||
|
|
|
@ -56,11 +56,11 @@ type ListOptions struct {
|
|||
}
|
||||
|
||||
func NewCmdList(f *cmdutils.Factory, runE func(opts *ListOptions) error) *cobra.Command {
|
||||
var opts = &ListOptions{
|
||||
opts := &ListOptions{
|
||||
IO: f.IO,
|
||||
}
|
||||
|
||||
var issueListCmd = &cobra.Command{
|
||||
issueListCmd := &cobra.Command{
|
||||
Use: "list [flags]",
|
||||
Short: `List project issues`,
|
||||
Long: ``,
|
||||
|
|
|
@ -208,7 +208,6 @@ func TestIssueList_tty_withIssueType(t *testing.T) {
|
|||
|
||||
func TestIssueList_tty_mine(t *testing.T) {
|
||||
t.Run("mine with all flag and user exists", func(t *testing.T) {
|
||||
|
||||
fakeHTTP := httpmock.New()
|
||||
defer fakeHTTP.Verify(t)
|
||||
|
||||
|
@ -230,7 +229,6 @@ func TestIssueList_tty_mine(t *testing.T) {
|
|||
`)
|
||||
})
|
||||
t.Run("user does not exists", func(t *testing.T) {
|
||||
|
||||
fakeHTTP := httpmock.New()
|
||||
defer fakeHTTP.Verify(t)
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdNote(f *cmdutils.Factory) *cobra.Command {
|
||||
var issueNoteCreateCmd = &cobra.Command{
|
||||
issueNoteCreateCmd := &cobra.Command{
|
||||
Use: "note <issue-id>",
|
||||
Aliases: []string{"comment"},
|
||||
Short: "Add a comment or note to an issue on GitLab",
|
||||
|
|
|
@ -72,7 +72,6 @@ func Test_NewCmdNote(t *testing.T) {
|
|||
defer fakeHTTP.Verify(t)
|
||||
|
||||
t.Run("--message flag specified", func(t *testing.T) {
|
||||
|
||||
fakeHTTP.RegisterResponder("POST", "/projects/OWNER/REPO/issues/1/notes",
|
||||
httpmock.NewStringResponse(201, `
|
||||
{
|
||||
|
@ -153,7 +152,6 @@ func Test_mrNoteCreate_prompt(t *testing.T) {
|
|||
defer fakeHTTP.Verify(t)
|
||||
|
||||
t.Run("message provided", func(t *testing.T) {
|
||||
|
||||
fakeHTTP.RegisterResponder("POST", "/projects/OWNER/REPO/issues/1/notes",
|
||||
httpmock.NewStringResponse(201, `
|
||||
{
|
||||
|
@ -190,7 +188,6 @@ func Test_mrNoteCreate_prompt(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("message is empty", func(t *testing.T) {
|
||||
|
||||
fakeHTTP.RegisterResponder("GET", "/projects/OWNER/REPO/issues/1",
|
||||
httpmock.NewStringResponse(200, `
|
||||
{
|
||||
|
|
|
@ -13,7 +13,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdReopen(f *cmdutils.Factory) *cobra.Command {
|
||||
var issueReopenCmd = &cobra.Command{
|
||||
issueReopenCmd := &cobra.Command{
|
||||
Use: "reopen <id>",
|
||||
Short: `Reopen a closed issue`,
|
||||
Long: ``,
|
||||
|
@ -30,7 +30,6 @@ func NewCmdReopen(f *cmdutils.Factory) *cobra.Command {
|
|||
c := f.IO.Color()
|
||||
|
||||
apiClient, err := f.HttpClient()
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdSubscribe(f *cmdutils.Factory) *cobra.Command {
|
||||
var issueSubscribeCmd = &cobra.Command{
|
||||
issueSubscribeCmd := &cobra.Command{
|
||||
Use: "subscribe <id>",
|
||||
Short: `Subscribe to an issue`,
|
||||
Long: ``,
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdUnsubscribe(f *cmdutils.Factory) *cobra.Command {
|
||||
var issueUnsubscribeCmd = &cobra.Command{
|
||||
issueUnsubscribeCmd := &cobra.Command{
|
||||
Use: "unsubscribe <id>",
|
||||
Short: `Unsubscribe to an issue`,
|
||||
Long: ``,
|
||||
|
|
|
@ -15,7 +15,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdUpdate(f *cmdutils.Factory) *cobra.Command {
|
||||
var issueUpdateCmd = &cobra.Command{
|
||||
issueUpdateCmd := &cobra.Command{
|
||||
Use: "update <id>",
|
||||
Short: `Update issue`,
|
||||
Long: ``,
|
||||
|
|
|
@ -102,7 +102,6 @@ func TestNewCmdUpdate(t *testing.T) {
|
|||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.Name, func(t *testing.T) {
|
||||
|
||||
args, _ := shlex.Split(tc.Issue)
|
||||
cmd.SetArgs(args)
|
||||
cmd.SetOut(ioutil.Discard)
|
||||
|
|
|
@ -36,7 +36,7 @@ func NewCmdView(f *cmdutils.Factory) *cobra.Command {
|
|||
opts := &ViewOpts{
|
||||
IO: f.IO,
|
||||
}
|
||||
var issueViewCmd = &cobra.Command{
|
||||
issueViewCmd := &cobra.Command{
|
||||
Use: "view <id>",
|
||||
Short: `Display the title, body, and other information about an issue.`,
|
||||
Long: ``,
|
||||
|
@ -50,7 +50,6 @@ func NewCmdView(f *cmdutils.Factory) *cobra.Command {
|
|||
`),
|
||||
Args: cobra.ExactArgs(1),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
||||
apiClient, err := f.HttpClient()
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -64,7 +63,7 @@ func NewCmdView(f *cmdutils.Factory) *cobra.Command {
|
|||
|
||||
opts.Issue = issue
|
||||
|
||||
//open in browser if --web flag is specified
|
||||
// open in browser if --web flag is specified
|
||||
if opts.Web {
|
||||
if f.IO.IsaTTY && f.IO.IsErrTTY {
|
||||
fmt.Fprintf(opts.IO.StdErr, "Opening %s in your browser.\n", utils.DisplayURL(opts.Issue.WebURL))
|
||||
|
|
|
@ -151,7 +151,6 @@ func TestNewCmdView(t *testing.T) {
|
|||
}
|
||||
|
||||
t.Run("show", func(t *testing.T) {
|
||||
|
||||
cmd := NewCmdView(stubFactory)
|
||||
cmdutils.EnableRepoOverride(cmd, stubFactory)
|
||||
_, err := cmdtest.RunCommand(cmd, "13 -c -s -R glab-cli/test")
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdCreate(f *cmdutils.Factory) *cobra.Command {
|
||||
var labelCreateCmd = &cobra.Command{
|
||||
labelCreateCmd := &cobra.Command{
|
||||
Use: "create [flags]",
|
||||
Short: `Create labels for repository/project`,
|
||||
Long: ``,
|
||||
|
@ -24,7 +24,6 @@ func NewCmdCreate(f *cmdutils.Factory) *cobra.Command {
|
|||
`),
|
||||
Args: cobra.ExactArgs(0),
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
||||
var err error
|
||||
|
||||
apiClient, err := f.HttpClient()
|
||||
|
|
|
@ -8,7 +8,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdLabel(f *cmdutils.Factory) *cobra.Command {
|
||||
var labelCmd = &cobra.Command{
|
||||
labelCmd := &cobra.Command{
|
||||
Use: "label <command> [flags]",
|
||||
Short: `Manage labels on remote`,
|
||||
Long: ``,
|
||||
|
|
|
@ -14,7 +14,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdList(f *cmdutils.Factory) *cobra.Command {
|
||||
var labelListCmd = &cobra.Command{
|
||||
labelListCmd := &cobra.Command{
|
||||
Use: "list [flags]",
|
||||
Short: `List labels in repository`,
|
||||
Long: ``,
|
||||
|
@ -76,7 +76,6 @@ func NewCmdList(f *cmdutils.Factory) *cobra.Command {
|
|||
//}
|
||||
|
||||
return nil
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdApprove(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrApproveCmd = &cobra.Command{
|
||||
mrApproveCmd := &cobra.Command{
|
||||
Use: "approve {<id> | <branch>}",
|
||||
Short: `Approve merge requests`,
|
||||
Long: ``,
|
||||
|
@ -63,7 +63,7 @@ func NewCmdApprove(f *cmdutils.Factory) *cobra.Command {
|
|||
},
|
||||
}
|
||||
|
||||
//mrApproveCmd.Flags().StringP("password", "p", "", "Current user’s password. Required if 'Require user password to approve' is enabled in the project settings.")
|
||||
// mrApproveCmd.Flags().StringP("password", "p", "", "Current user’s password. Required if 'Require user password to approve' is enabled in the project settings.")
|
||||
mrApproveCmd.Flags().StringP("sha", "s", "", "SHA which must match the SHA of the HEAD commit of the merge request")
|
||||
return mrApproveCmd
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdApprovers(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrApproversCmd = &cobra.Command{
|
||||
mrApproversCmd := &cobra.Command{
|
||||
Use: "approvers [<id> | <branch>] [flags]",
|
||||
Short: `List eligible approvers for merge requests in any state`,
|
||||
Long: ``,
|
||||
|
|
|
@ -19,12 +19,10 @@ type mrCheckoutConfig struct {
|
|||
upstream string
|
||||
}
|
||||
|
||||
var (
|
||||
mrCheckoutCfg mrCheckoutConfig
|
||||
)
|
||||
var mrCheckoutCfg mrCheckoutConfig
|
||||
|
||||
func NewCmdCheckout(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrCheckoutCmd = &cobra.Command{
|
||||
mrCheckoutCmd := &cobra.Command{
|
||||
Use: "checkout [<id> | <branch>]",
|
||||
Short: "Checkout to an open merge request",
|
||||
Long: ``,
|
||||
|
@ -93,7 +91,6 @@ func NewCmdCheckout(f *cmdutils.Factory) *cobra.Command {
|
|||
fmt.Println(err)
|
||||
}
|
||||
repoRemote, err := remotes.FindByRepo(repo.RepoOwner(), repo.RepoName())
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdClose(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrCloseCmd = &cobra.Command{
|
||||
mrCloseCmd := &cobra.Command{
|
||||
Use: "close [<id> | <branch>]",
|
||||
Short: `Close merge requests`,
|
||||
Long: ``,
|
||||
|
|
|
@ -83,7 +83,7 @@ func NewCmdCreate(f *cmdutils.Factory, runE func(opts *CreateOpts) error) *cobra
|
|||
HeadRepo: resolvedHeadRepo(f),
|
||||
}
|
||||
|
||||
var mrCreateCmd = &cobra.Command{
|
||||
mrCreateCmd := &cobra.Command{
|
||||
Use: "create",
|
||||
Short: `Create new merge request`,
|
||||
Long: ``,
|
||||
|
@ -607,7 +607,7 @@ func mrBodyAndTitle(opts *CreateOpts) error {
|
|||
|
||||
func handlePush(opts *CreateOpts, remote *glrepo.Remote) error {
|
||||
if opts.ShouldPush {
|
||||
var sourceRemote = remote
|
||||
sourceRemote := remote
|
||||
|
||||
sourceBranch := opts.SourceBranch
|
||||
|
||||
|
|
|
@ -150,7 +150,8 @@ func TestNewCmdCreate_tty(t *testing.T) {
|
|||
deadbeef refs/remotes/origin/feat-new-mr
|
||||
`))
|
||||
|
||||
cliStr := []string{"-t", "myMRtitle",
|
||||
cliStr := []string{
|
||||
"-t", "myMRtitle",
|
||||
"-d", "myMRbody",
|
||||
"-l", "test,bug",
|
||||
"--milestone", "1",
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdDelete(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrDeleteCmd = &cobra.Command{
|
||||
mrDeleteCmd := &cobra.Command{
|
||||
Use: "delete [<id> | <branch>]",
|
||||
Short: `Delete merge requests`,
|
||||
Long: ``,
|
||||
|
|
|
@ -121,7 +121,6 @@ hosts:
|
|||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
||||
cli := strings.Join(tt.args, " ")
|
||||
t.Log(cli)
|
||||
argv, err := shlex.Split(cli)
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdFor(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrForCmd = &cobra.Command{
|
||||
mrForCmd := &cobra.Command{
|
||||
Use: "for",
|
||||
Short: `Create new merge request for an issue`,
|
||||
Long: ``,
|
||||
|
@ -84,7 +84,6 @@ func NewCmdFor(f *cmdutils.Factory) *cobra.Command {
|
|||
_, branchErr = api.CreateBranch(apiClient, repo.FullName(), lb)
|
||||
fmt.Println(branchErr)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var mergeTitle string
|
||||
|
|
|
@ -15,7 +15,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdIssues(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrIssuesCmd = &cobra.Command{
|
||||
mrIssuesCmd := &cobra.Command{
|
||||
Use: "issues [<id> | <branch>]",
|
||||
Short: `Get issues related to a particular merge request.`,
|
||||
Long: ``,
|
||||
|
|
|
@ -53,11 +53,11 @@ type ListOptions struct {
|
|||
}
|
||||
|
||||
func NewCmdList(f *cmdutils.Factory, runE func(opts *ListOptions) error) *cobra.Command {
|
||||
var opts = &ListOptions{
|
||||
opts := &ListOptions{
|
||||
IO: f.IO,
|
||||
}
|
||||
|
||||
var mrListCmd = &cobra.Command{
|
||||
mrListCmd := &cobra.Command{
|
||||
Use: "list [flags]",
|
||||
Short: `List merge requests`,
|
||||
Long: ``,
|
||||
|
@ -230,7 +230,6 @@ func listRun(opts *ListOptions) error {
|
|||
|
||||
if len(assigneeIds) > 0 || len(reviewerIds) > 0 {
|
||||
mergeRequests, err = api.ListMRsWithAssigneesOrReviewers(apiClient, repo.FullName(), l, assigneeIds, reviewerIds)
|
||||
|
||||
} else if opts.Group != "" {
|
||||
mergeRequests, err = api.ListGroupMRs(apiClient, opts.Group, api.ProjectListMROptionsToGroup(l))
|
||||
title.RepoName = opts.Group
|
||||
|
|
|
@ -42,11 +42,11 @@ type MergeOpts struct {
|
|||
}
|
||||
|
||||
func NewCmdMerge(f *cmdutils.Factory) *cobra.Command {
|
||||
var opts = &MergeOpts{
|
||||
opts := &MergeOpts{
|
||||
MergeMethod: MRMergeMethodMerge,
|
||||
}
|
||||
|
||||
var mrMergeCmd = &cobra.Command{
|
||||
mrMergeCmd := &cobra.Command{
|
||||
Use: "merge {<id> | <branch>}",
|
||||
Short: `Merge/Accept merge requests`,
|
||||
Long: ``,
|
||||
|
@ -264,7 +264,7 @@ func mergeMethodSurvey() (MRMergeMethod, error) {
|
|||
method MRMergeMethod
|
||||
}
|
||||
|
||||
var mergeOpts = []mergeOption{
|
||||
mergeOpts := []mergeOption{
|
||||
{title: "Create a merge commit", method: MRMergeMethodMerge},
|
||||
{title: "Rebase and merge", method: MRMergeMethodRebase},
|
||||
{title: "Squash and merge", method: MRMergeMethodSquash},
|
||||
|
|
|
@ -28,7 +28,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdMR(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrCmd = &cobra.Command{
|
||||
mrCmd := &cobra.Command{
|
||||
Use: "mr <command> [flags]",
|
||||
Short: `Create, view and manage merge requests`,
|
||||
Long: ``,
|
||||
|
|
|
@ -37,5 +37,4 @@ func TestMrCmd_noARgs(t *testing.T) {
|
|||
out := <-outC
|
||||
|
||||
assert.Contains(t, out, "Use \"mr [command] --help\" for more information about a command.\n")
|
||||
|
||||
}
|
||||
|
|
|
@ -492,7 +492,6 @@ func Test_MRFromArgsWithOpts(t *testing.T) {
|
|||
assert.Nil(t, gotMR)
|
||||
assert.Nil(t, gotRepo)
|
||||
assert.EqualError(t, err, `no merge requests from branch "foo"`)
|
||||
|
||||
})
|
||||
t.Run("api.GetMR", func(t *testing.T) {
|
||||
f := *f
|
||||
|
|
|
@ -14,7 +14,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdNote(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrCreateNoteCmd = &cobra.Command{
|
||||
mrCreateNoteCmd := &cobra.Command{
|
||||
Use: "note [<id> | <branch>]",
|
||||
Aliases: []string{"comment"},
|
||||
Short: "Add a comment or note to merge request",
|
||||
|
|
|
@ -77,7 +77,6 @@ func Test_NewCmdNote(t *testing.T) {
|
|||
defer fakeHTTP.Verify(t)
|
||||
|
||||
t.Run("--message flag specified", func(t *testing.T) {
|
||||
|
||||
fakeHTTP.RegisterResponder("POST", "/projects/OWNER/REPO/merge_requests/1/notes",
|
||||
httpmock.NewStringResponse(201, `
|
||||
{
|
||||
|
@ -158,7 +157,6 @@ func Test_mrNoteCreate_prompt(t *testing.T) {
|
|||
defer fakeHTTP.Verify(t)
|
||||
|
||||
t.Run("message provided", func(t *testing.T) {
|
||||
|
||||
fakeHTTP.RegisterResponder("POST", "/projects/OWNER/REPO/merge_requests/1/notes",
|
||||
httpmock.NewStringResponse(201, `
|
||||
{
|
||||
|
@ -195,7 +193,6 @@ func Test_mrNoteCreate_prompt(t *testing.T) {
|
|||
})
|
||||
|
||||
t.Run("message is empty", func(t *testing.T) {
|
||||
|
||||
fakeHTTP.RegisterResponder("GET", "/projects/OWNER/REPO/merge_requests/1",
|
||||
httpmock.NewStringResponse(200, `
|
||||
{
|
||||
|
@ -224,7 +221,6 @@ func Test_mrNoteCreate_no_duplicate(t *testing.T) {
|
|||
defer fakeHTTP.Verify(t)
|
||||
|
||||
t.Run("message provided", func(t *testing.T) {
|
||||
|
||||
fakeHTTP.RegisterResponder("GET", "/projects/OWNER/REPO/merge_requests/1",
|
||||
httpmock.NewStringResponse(200, `
|
||||
{
|
||||
|
|
|
@ -9,10 +9,10 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdRebase(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrRebaseCmd = &cobra.Command{
|
||||
mrRebaseCmd := &cobra.Command{
|
||||
Use: "rebase [<id> | <branch>] [flags]",
|
||||
Short: `Automatically rebase the source_branch of the merge request against its target_branch.`,
|
||||
Long: heredoc.Doc(`If you don't have permissions to push to the merge request's source branch - you'll get a 403 Forbidden response.
|
||||
Long: heredoc.Doc(`If you don't have permissions to push to the merge request's source branch - you'll get a 403 Forbidden response.
|
||||
`),
|
||||
Example: heredoc.Doc(`
|
||||
glab mr rebase 123
|
||||
|
|
|
@ -13,7 +13,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdReopen(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrReopenCmd = &cobra.Command{
|
||||
mrReopenCmd := &cobra.Command{
|
||||
Use: "reopen [<id>... | <branch>...]",
|
||||
Short: `Reopen merge requests`,
|
||||
Example: heredoc.Doc(`
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdRevoke(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrRevokeCmd = &cobra.Command{
|
||||
mrRevokeCmd := &cobra.Command{
|
||||
Use: "revoke [<id> | <branch>]",
|
||||
Short: `Revoke approval on a merge request`,
|
||||
Long: ``,
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdSubscribe(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrSubscribeCmd = &cobra.Command{
|
||||
mrSubscribeCmd := &cobra.Command{
|
||||
Use: "subscribe [<id> | <branch>]",
|
||||
Short: `Subscribe to merge requests`,
|
||||
Long: ``,
|
||||
|
|
|
@ -104,7 +104,8 @@ hosts:
|
|||
{
|
||||
Name: "Issue on another repo",
|
||||
Issue: "1 -R profclems/glab",
|
||||
ExpectedMsg: []string{"- Subscribing to merge request !1",
|
||||
ExpectedMsg: []string{
|
||||
"- Subscribing to merge request !1",
|
||||
"✓ You have successfully subscribed to merge request !1",
|
||||
"https://gitlab.com/profclems/glab/-/merge_requests/1\n",
|
||||
},
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdTodo(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrToDoCmd = &cobra.Command{
|
||||
mrToDoCmd := &cobra.Command{
|
||||
Use: "todo [<id> | <branch>]",
|
||||
Aliases: []string{"add-todo"},
|
||||
Short: "Add a ToDo to merge request",
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdUnsubscribe(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrUnsubscribeCmd = &cobra.Command{
|
||||
mrUnsubscribeCmd := &cobra.Command{
|
||||
Use: "unsubscribe [<id> | <branch>]",
|
||||
Short: `Unsubscribe from merge requests`,
|
||||
Long: ``,
|
||||
|
|
|
@ -15,7 +15,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdUpdate(f *cmdutils.Factory) *cobra.Command {
|
||||
var mrUpdateCmd = &cobra.Command{
|
||||
mrUpdateCmd := &cobra.Command{
|
||||
Use: "update [<id> | <branch>]",
|
||||
Short: `Update merge requests`,
|
||||
Long: ``,
|
||||
|
|
|
@ -117,14 +117,16 @@ hosts:
|
|||
{
|
||||
Name: "Remove source branch",
|
||||
Args: "1 --remove-source-branch",
|
||||
ExpectedMsg: []string{"- Updating merge request !1",
|
||||
ExpectedMsg: []string{
|
||||
"- Updating merge request !1",
|
||||
"✓ enabled removal of source branch on merge",
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "Restore remove source branch",
|
||||
Args: "1 --remove-source-branch",
|
||||
ExpectedMsg: []string{"- Updating merge request !1",
|
||||
ExpectedMsg: []string{
|
||||
"- Updating merge request !1",
|
||||
"✓ disabled removal of source branch on merge",
|
||||
},
|
||||
},
|
||||
|
|
|
@ -31,7 +31,7 @@ func NewCmdView(f *cmdutils.Factory) *cobra.Command {
|
|||
opts := &ViewOpts{
|
||||
IO: f.IO,
|
||||
}
|
||||
var mrViewCmd = &cobra.Command{
|
||||
mrViewCmd := &cobra.Command{
|
||||
Use: "view {<id> | <branch>}",
|
||||
Short: `Display the title, body, and other information about a merge request.`,
|
||||
Long: ``,
|
||||
|
|
|
@ -164,7 +164,6 @@ func TestMRView(t *testing.T) {
|
|||
cmdutils.EnableRepoOverride(cmd, stubFactory)
|
||||
|
||||
_, err := cmdtest.RunCommand(cmd, "13 -c -s -R glab-cli/test")
|
||||
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
|
|
|
@ -16,7 +16,7 @@ import (
|
|||
)
|
||||
|
||||
func NewCmdArchive(f *cmdutils.Factory) *cobra.Command {
|
||||
var repoArchiveCmd = &cobra.Command{
|
||||
repoArchiveCmd := &cobra.Command{
|
||||
Use: "archive <command> [flags]",
|
||||
Short: `Get an archive of the repository.`,
|
||||
Example: heredoc.Doc(`
|
||||
|
|
|
@ -60,7 +60,7 @@ func NewCmdClone(f *cmdutils.Factory, runE func(*CloneOptions, *ContextOpts) err
|
|||
|
||||
ctxOpts := &ContextOpts{}
|
||||
|
||||
var repoCloneCmd = &cobra.Command{
|
||||
repoCloneCmd := &cobra.Command{
|
||||
Use: "clone <repo> [<dir>] [-- [<gitflags>...]]",
|
||||
Short: `Clone a GitLab repository/project`,
|
||||
Example: heredoc.Doc(`
|
||||
|
@ -158,7 +158,7 @@ func NewCmdClone(f *cmdutils.Factory, runE func(*CloneOptions, *ContextOpts) err
|
|||
|
||||
func listProjects(opts *CloneOptions, ListGroupProjectOpts *gitlab.ListGroupProjectsOptions) ([]*gitlab.Project, error) {
|
||||
var projects []*gitlab.Project
|
||||
var hasRemaining = true
|
||||
hasRemaining := true
|
||||
|
||||
for hasRemaining {
|
||||
currentPage, resp, err := api.ListGroupProjects(opts.APIClient.Lab(), opts.GroupName, ListGroupProjectOpts)
|
||||
|
@ -216,7 +216,7 @@ func groupClone(opts *CloneOptions, ctxOpts *ContextOpts) error {
|
|||
ListGroupProjectOpts.Page = opts.Page
|
||||
}
|
||||
|
||||
var projects, err = listProjects(opts, ListGroupProjectOpts)
|
||||
projects, err := listProjects(opts, ListGroupProjectOpts)
|
||||
var finalOutput []string
|
||||
for _, project := range projects {
|
||||
ctxOpt := *ctxOpts
|
||||
|
|
|
@ -189,20 +189,20 @@ hosts:
|
|||
}
|
||||
|
||||
func Test_repoClone_group(t *testing.T) {
|
||||
var names = []string{"glab-cli/test", "glab-cli/test-pv"}
|
||||
var urls = []string{"git@gitlab.com:glab-cli/test.git", "git@gitlab.com:glab-cli/test-pv.git"}
|
||||
names := []string{"glab-cli/test", "glab-cli/test-pv"}
|
||||
urls := []string{"git@gitlab.com:glab-cli/test.git", "git@gitlab.com:glab-cli/test-pv.git"}
|
||||
repoCloneTest(t, names, urls, 0, false)
|
||||
}
|
||||
|
||||
func Test_repoClone_group_single(t *testing.T) {
|
||||
var names = []string{"glab-cli/test"}
|
||||
var urls = []string{"git@gitlab.com:glab-cli/test.git"}
|
||||
names := []string{"glab-cli/test"}
|
||||
urls := []string{"git@gitlab.com:glab-cli/test.git"}
|
||||
repoCloneTest(t, names, urls, 1, false)
|
||||
}
|
||||
|
||||
func Test_repoClone_group_paginate(t *testing.T) {
|
||||
var names = []string{"glab-cli/test", "glab-cli/test-pv"}
|
||||
var urls = []string{"git@gitlab.com:glab-cli/test.git", "git@gitlab.com:glab-cli/test-pv.git"}
|
||||
names := []string{"glab-cli/test", "glab-cli/test-pv"}
|
||||
urls := []string{"git@gitlab.com:glab-cli/test.git", "git@gitlab.com:glab-cli/test-pv.git"}
|
||||
repoCloneTest(t, names, urls, 1, true)
|
||||
}
|
||||
|
||||
|
@ -234,7 +234,7 @@ hosts:
|
|||
defer restore()
|
||||
|
||||
cmd := NewCmdClone(fac, nil)
|
||||
var cli = "-g glab-cli"
|
||||
cli := "-g glab-cli"
|
||||
if perPage != 0 {
|
||||
cli += fmt.Sprintf(" --per-page %d", perPage)
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ func NewCmdContributors(f *cmdutils.Factory) *cobra.Command {
|
|||
opts := &Options{
|
||||
IO: f.IO,
|
||||
}
|
||||
var repoContributorsCmd = &cobra.Command{
|
||||
repoContributorsCmd := &cobra.Command{
|
||||
Use: "contributors",
|
||||
Short: `Get repository contributors list.`,
|
||||
Example: heredoc.Doc(`
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue