git/cmd/gitremoteaddupstream/main.go
package main
import (
"fmt"
"log"
"strings"
"github.com/grokify/mogo/os/executil"
"github.com/grokify/mogo/path/filepathutil"
flags "github.com/jessevdk/go-flags"
)
// $ go get github.com/grokify/mogo/git/apps/gitremoteaddupstream
type cliOptions struct {
Parent string `short:"p" long:"parent" description:"GitHub parent user" required:"true"`
Exec []bool `short:"e" long:"exec" description:"execute" required:"false"`
}
func main() {
opts := cliOptions{}
_, err := flags.Parse(&opts)
if err != nil {
log.Fatal(err)
}
leafDir, err := filepathutil.CurLeafDir()
if err != nil {
log.Fatal(err)
}
gitCmd := fmt.Sprintf("git remote add upstream https://github.com/%s/%s.git", strings.TrimSpace(opts.Parent), leafDir)
fmt.Printf("CMD: %s\n", gitCmd)
if len(opts.Exec) > 0 {
_, _, err := executil.ExecSimple(gitCmd)
if err != nil {
log.Fatal(err)
}
fmt.Println("Executed...")
fmt.Println("Common next steps:\n$ git fetch upstream\n$ git merge upstream/master\n$ git push origin master")
}
fmt.Println("DONE")
}