28
main.go
28
main.go
@@ -5,8 +5,10 @@ import (
|
|||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/types"
|
"go/types"
|
||||||
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/go-git/go-git/v5"
|
"github.com/go-git/go-git/v5"
|
||||||
"github.com/go-git/go-git/v5/plumbing/filemode"
|
"github.com/go-git/go-git/v5/plumbing/filemode"
|
||||||
@@ -36,17 +38,29 @@ func main() {
|
|||||||
logger.Infof("dstdir not specified, use current dir: %s", flagDir)
|
logger.Infof("dstdir not specified, use current dir: %s", flagDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
url := "https://github.com/unistack-org/micro"
|
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
cloneOpts := &git.CloneOptions{
|
u, err := url.Parse(flagUrl)
|
||||||
URL: url,
|
if err != nil {
|
||||||
SingleBranch: true,
|
logger.Fatal(err)
|
||||||
Progress: os.Stdout,
|
|
||||||
Depth: 1,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var rev string
|
||||||
|
if idx := strings.Index(u.Path, "@"); idx > 0 {
|
||||||
|
rev = u.Path[idx+1:]
|
||||||
|
}
|
||||||
|
|
||||||
|
cloneOpts := &git.CloneOptions{
|
||||||
|
URL: flagUrl,
|
||||||
|
Progress: os.Stdout,
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(rev) == 0 {
|
||||||
|
cloneOpts.SingleBranch = true
|
||||||
|
cloneOpts.Depth = 1
|
||||||
|
}
|
||||||
|
|
||||||
if err := cloneOpts.Validate(); err != nil {
|
if err := cloneOpts.Validate(); err != nil {
|
||||||
logger.Fatal(err)
|
logger.Fatal(err)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user