Skip to content
This repository was archived by the owner on May 24, 2019. It is now read-only.

initial imlementation of list repos (#3) #13

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions cmd/repos.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
// Copyright 2018 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

package cmd

import (
"fmt"
"log"

//"code.gitea.io/sdk/gitea"

"github.com/urfave/cli"
)

// CmdRepos represents to login a gitea server.
var CmdRepos = cli.Command{
Name: "repos",
Usage: "Operate with repositories",
Description: `Operate with repositories`,
Action: runRepos,
Flags: []cli.Flag{
cli.StringFlag{
Name: "login, l",
Usage: "Indicate one login, optional when inside a gitea repository",
},
cli.BoolFlag{
Name: "noheader",
Usage: "Skip header on output.",
},
},
}

func runRepos(ctx *cli.Context) error {
login := initCommandLoginOnly(ctx)

rps, err := login.Client().ListMyRepos()

if err != nil {
log.Fatal(err)
}

if len(rps) == 0 {
fmt.Println("No repositories found")
return nil
}

if noheader := getGlobalFlag(ctx, "noheader"); noheader != "true" {
fmt.Printf("Name\tType/Mode\tSSH-URL\tOwner\n")
}
for _, rp := range rps {
var mode = "source"
if rp.Fork {
mode = "fork"
}
if rp.Mirror {
mode = "mirror"
}
fmt.Printf("%s\t%s\t%s\t%s\n", rp.FullName, mode, rp.SSHURL, rp.Owner.UserName)
}

return nil
}

func initCommandLoginOnly(ctx *cli.Context) (*Login) {
err := loadConfig(yamlConfigPath)
if err != nil {
log.Fatal("load config file failed", yamlConfigPath)
}

var login *Login
if loginFlag := getGlobalFlag(ctx, "login"); loginFlag == "" {
login, err = getActiveLogin()
if err != nil {
log.Fatal(err)
}
} else {
login = getLoginByName(loginFlag)
if login == nil {
log.Fatal("indicated login name", loginFlag, "does not exist")
}
}
return login
}
1 change: 1 addition & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ func main() {
cmd.CmdIssues,
cmd.CmdPulls,
cmd.CmdReleases,
cmd.CmdRepos,
}
err := app.Run(os.Args)
if err != nil {
Expand Down