parse url

Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
2020-11-30 17:40:56 +03:00
parent c0a0a8d4aa
commit c6a746c6f6

28
main.go
View File

@@ -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)
} }