You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.2 KiB
Go
70 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
// "net/http"
|
|
|
|
"os"
|
|
|
|
"github.com/jordanorelli/blammo"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var cmd = cobra.Command{
|
|
Use: "fetch-gists",
|
|
Short: "fetch-gists gets all of the gists for a user",
|
|
Args: cobra.ExactArgs(1),
|
|
RunE: root,
|
|
}
|
|
|
|
var options struct {
|
|
token string
|
|
}
|
|
|
|
const accept = "application/vnd.github.v3+json"
|
|
|
|
func openLog(name string) *blammo.Log {
|
|
stdout := blammo.NewLineWriter(os.Stdout)
|
|
stderr := blammo.NewLineWriter(os.Stderr)
|
|
return blammo.NewLog(name, blammo.InfoWriter(stdout), blammo.ErrorWriter(stderr))
|
|
}
|
|
|
|
func main() {
|
|
if err := cmd.Execute(); err != nil {
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func root(cmd *cobra.Command, args []string) error {
|
|
log := openLog("fetch-gists")
|
|
|
|
c := client{
|
|
Log: log,
|
|
token: options.token,
|
|
}
|
|
|
|
for page := 0; true; page++ {
|
|
gists, err := c.gists(page)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if len(gists) == 0 {
|
|
break
|
|
}
|
|
|
|
for _, g := range gists {
|
|
log.Info("%s %s", g.Created, g.ID)
|
|
if err := g.clone(); err != nil {
|
|
log.Error(err.Error())
|
|
}
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func init() {
|
|
cmd.PersistentFlags().StringVarP(&options.token, "token", "t", "", "github API oauth token (required)")
|
|
cmd.MarkPersistentFlagRequired("token")
|
|
}
|