func Pub(needlogin bool, args []string) (err error) { //fmt.Println(args) //return if len(args) < 2 { //fmt.Println(ErrMsgArgument) pubUsage() return errors.New("args len error!") } pub := ds.PubPara{} //var largs []string = args var repo, item, tag, argfi, argse string f := mflag.NewFlagSet("datahub pub", mflag.ContinueOnError) //f.StringVar(&pub.Datapool, []string{"-datapool", "p"}, "", "datapool name") f.StringVar(&pub.Accesstype, []string{"-accesstype", "t"}, "private", "dataitem accesstype: private or public") f.StringVar(&pub.Comment, []string{"-comment", "m"}, "", "comments") //f.StringVar(&pub.Detail, []string{"-detail", "d"}, "", "tag detail ,for example file name") f.StringVar(&pub.SupplyStyle, []string{"-supplystyle", "s"}, "batch", "dataitem supplystyle: batch , flow or api") f.StringVar(&pub.Ch_itemname, []string{"-chinese", "ch"}, "", "dataitem's Chinese name") f.Usage = pubUsage if len(args) > 2 { if err = f.Parse(args[2:]); err != nil { fmt.Println("Error : parse parameter error.", err) return err } } //if pub.Ch_itemname == "" { // fmt.Println("DataHub: Dataitem's Chinese name cannot be empty.") // pubUsage() // return //} if len(args[0]) == 0 || len(args[1]) == 0 { fmt.Println(ErrMsgArgument) pubUsage() return errors.New("need item or tag error!") } argfi = strings.Trim(args[0], "/") //deal arg[0] sp := strings.Split(argfi, "/") if len(sp) != 2 { fmt.Println(ErrMsgArgument) pubUsage() return errors.New("invalid repo/item") } repo = sp[0] sptag := strings.Split(sp[1], ":") l := len(sptag) if l == 1 { item = sptag[0] argse = strings.Trim(args[1], "/") se := strings.Split(argse, "://") if len(se) == 2 && len(se[1]) > 0 { pub.Datapool = se[0] pub.ItemDesc = strings.Trim(se[1], "/") err = PubItem(repo, item, pub, args) } else { fmt.Println("DataHub : Please input a valid datapool and path.") err = errors.New("Error : Please input a valid datapool and path.") } } else if l == 2 { item = sptag[0] tag = sptag[1] pub.Detail = args[1] if len(args) == 2 || (len(args) == 3 && strings.Contains(args[2], "-")) { PubTag(repo, item, tag, pub, args) } else { if len(strings.Split(args[2], ":")) != 2 || strings.Split(args[2], ":")[0] == "" { fmt.Printf("DataHub : Invalid argument.\nSee '%s --help'.\n", f.Name()) return } datapool := strings.Split(args[2], ":")[0] pub.Datapool = datapool if len(strings.Split(strings.Split(args[2], ":")[1], "//")) != 2 || strings.Split(strings.Split(args[2], ":")[1], "//")[1] == "" { fmt.Printf("DataHub : Invalid argument.\nSee '%s --help'.\n", f.Name()) return } itemDesc := strings.Split(strings.Split(args[2], ":")[1], "//")[1] pub.ItemDesc = itemDesc PubTag(repo, item, tag, pub, args) } } else { fmt.Printf("DataHub : Invalid argument.\nSee '%s --help'.\n", f.Name()) return errors.New("Invalid argument.") } return err }