Skip to content
Snippets Groups Projects
Commit 6585bd8a authored by Kevin Lyda's avatar Kevin Lyda :speech_balloon:
Browse files

A project lister.

parent c2a73881
No related merge requests found
/pjls /pjls
/config.json /config.conf
...@@ -2,6 +2,8 @@ package main ...@@ -2,6 +2,8 @@ package main
import ( import (
"fmt" "fmt"
"os"
"github.com/spf13/viper" "github.com/spf13/viper"
gl "github.com/xanzy/go-gitlab" gl "github.com/xanzy/go-gitlab"
) )
...@@ -11,20 +13,70 @@ type Config struct { ...@@ -11,20 +13,70 @@ type Config struct {
baseurl string baseurl string
} }
func main() { func ReadConfig(conf string) *Config {
var c Config f, err := os.Open(conf)
if err != nil {
viper.SetConfigName("config") panic(fmt.Errorf("failed to parse config file %s", err))
viper.AddConfigPath(".") }
viper.SetConfigType("json") defer f.Close()
err := viper.ReadInConfig() viper.SetConfigType("hcl")
c.token = viper.Get("token") err = viper.ReadConfig(f)
c.baseurl = viper.Get("baseurl") c := &Config{
token: viper.GetString("token"),
baseurl: viper.GetString("baseurl"),
}
if err != nil { if err != nil {
panic(fmt.Errorf("Fatal error config file: %s \n", err)) panic(fmt.Errorf("Fatal error config file: %s \n", err))
} }
return c
}
func newProjectList(client *gl.Client) func() (*gl.Project, error) {
i := 0
opt := &gl.ListProjectsOptions{
ListOptions: gl.ListOptions{
Page: 1,
PerPage: 20,
},
Archived: nil,
OrderBy: nil,
Sort: nil,
Search: nil,
Simple: nil,
Visibility: nil,
}
projects, resp, err := client.Projects.ListProjects(opt)
return func() (*gl.Project, error) {
if projects != nil && i >= len(projects) {
if resp.NextPage == 0 {
return nil, nil
}
opt.ListOptions.Page++
i = 0
projects, resp, err = client.Projects.ListProjects(opt)
}
if err == nil {
i++
return projects[i-1], nil
} else {
return nil, err
}
}
}
func main() {
c := ReadConfig("config.conf")
client := gl.NewClient(nil, c.token) client := gl.NewClient(nil, c.token)
client.SetBaseURL(c.baseurl) client.SetBaseURL(c.baseurl)
fmt.Println("vim-go")
i := 0
gen := newProjectList(client)
for p, _ := gen(); p != nil; p, _ = gen() {
fmt.Printf("% 3d: %s / %s\n", i, p.Path, p.Name)
i++
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment