本文整理汇总了Golang中github.com/adriaandejonge/xld/util/intf.Command类的典型用法代码示例。如果您正苦于以下问题:Golang Command类的具体用法?Golang Command怎么用?Golang Command使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Command类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Do
func Do(args intf.Command) (result string, err error) {
subs := args.Subs()
cred := subs[1] + ":" + subs[2]
sEnc := b64.StdEncoding.EncodeToString([]byte(cred))
result, err = Login(&LoginObject{subs[0], sEnc})
return
}
示例2: describe
func describe(args intf.Command) (result string, err error) {
subs := args.Subs()
for _, sub := range subs {
_, err := describeOne(sub)
if err != nil {
return "error", err
}
}
return "", nil
}
示例3: modify
func modify(args intf.Command) (result string, err error) {
resultMap, err := ReadAsMap(args)
if err != nil {
return "error", err
}
content := resultMap["content"]
mapContent, ok := content.(map[string]interface{})
if !ok {
return "error", errors.New("Unable to modify existing content")
}
props := args.Arguments()
for _, prop := range props {
key := prop.Name()
split := strings.SplitN(key, "-", 2)
prefix := split[0]
switch prefix {
case "add", "remove", "change":
if len(split) > 1 {
key = split[1]
}
err = handleAddRemoveChange(mapContent, prefix, key, prop)
if err != nil {
return "error", err
}
default:
typeName, ok := resultMap["type"].(string)
if !ok {
return "error", errors.New("Cannot resolve type for existing item")
}
ciType, err := metadata.Type(typeName)
if err != nil {
return "error", err
}
err = handleDefault(mapContent, key, prop, ciType)
if err != nil {
return "error", err
}
}
}
json, err := json.MarshalIndent(resultMap, "", " ")
createCmd, err := cmd.NewStdinCmd("modify-sub", string(json))
if err != nil {
return "error", err
}
return createOrModify(createCmd)
}
示例4: ReadAsMap
func ReadAsMap(args intf.Command) (resultMap map[string]interface{}, err error) {
subs := args.Subs()
ci := AntiAbbreviate(subs[0])
body, err := http.Read("/repository/ci/" + ci)
if err != nil {
return
}
return xml2CleanMap(body)
}
示例5: remove
func remove(args intf.Command) (result string, err error) {
for _, sub := range args.Subs() {
ciName := AntiAbbreviate(sub)
// TODO validate input
body, err := http.Remove("/repository/ci/" + ciName)
if err != nil {
return "error", err
}
result = string(body)
}
return
}
示例6: createOrModify
func createOrModify(args intf.Command) (result string, err error) {
subs := args.Subs()
typeName := subs[0]
ciName := subs[1]
ciType, err := metadata.Type(typeName)
if err != nil {
return
}
// put this as the root in a map containing a map
// do this AFTER the for loop
// create new map and put the below in it
mapProps := make(map[string]interface{})
props := args.Arguments()
for _, prop := range props {
key := prop.Name()
mapProps[key], err = translateProp(ciType, prop)
if err != nil {
return
}
}
id := ciName
id = AntiAbbreviate(id)
if ciType.Root != "" && !strings.HasPrefix(id, ciType.Root) {
id = ciType.Root + "/" + id
}
mapProps["-id"] = id
final := map[string]interface{}{ciType.Type: mapProps}
// TODO Make this a util?
json, _ := j2x.MapToJson(final)
xml, _ := j2x.JsonToXml(json)
switch args.Main() {
case "create":
body, err := http.Create("/repository/ci/"+id, bytes.NewBuffer(xml))
if err != nil {
return "error", err
}
return Xml2CleanJson(body)
case "modify-sub":
body, err := http.Update("/repository/ci/"+id, bytes.NewBuffer(xml))
if err != nil {
return "error", err
}
return Xml2CleanJson(body)
}
return "error", errors.New("Unknown command " + args.Main())
}
示例7: list
func list(args intf.Command) (result string, err error) {
subs := args.Subs()
arguments := make([]string, 0)
if len(subs) > 0 {
if strings.HasSuffix(subs[0], "*") {
arguments = append(arguments, "ancestor="+url.QueryEscape(AntiAbbreviate(strings.Replace(subs[0], "*", "", -1))))
} else {
arguments = append(arguments, "parent="+url.QueryEscape(AntiAbbreviate(subs[0])))
}
}
extra := args.Arguments()
for _, el := range extra {
name := el.Name()
switch name {
case "type":
arguments = append(arguments, "type="+url.QueryEscape(el.Value()))
case "like":
arguments = append(arguments, "namePattern="+url.QueryEscape(el.Value()))
case "before":
//TODO lastModifiedBefore
case "after":
//TODO lastModifiedAfter
case "page":
arguments = append(arguments, "page="+url.QueryEscape(el.Value()))
case "pagesize":
arguments = append(arguments, "resultsPerPage="+url.QueryEscape(el.Value()))
}
}
body, err := http.Read("/repository/query?" + strings.Join(arguments, "&"))
list, err := readCiList(body)
if err != nil {
return "error", err
}
for _, el := range list.CIs {
fmt.Println(el.CiRef)
}
return "", err
}
示例8: undeploy
func undeploy(args intf.Command) (result string, err error) {
subs := args.Subs()
appToUndeploy := repo.AntiAbbreviate(subs[0])
body, err := http.Read("/deployment/prepare/undeploy?deployedApplication=" + appToUndeploy)
if err != nil {
return
}
body, err = http.Create("/deployment", bytes.NewBuffer(body))
if err != nil {
return
}
taskId := string(body)
body, err = http.Create("/task/"+string(body)+"/start", nil)
if err != nil {
return
}
displayStatus(taskId)
return string(body), err
}
示例9: grant
func grant(args intf.Command) (result string, err error) {
subs := args.Subs()
ci := subs[0]
roleToChange := subs[1]
perms := subs[2:]
// Get current permissions
// (already works for global keyword :) )
body, err := http.Read("/internal/security/roles/permissions/" + repo.AntiAbbreviate(ci))
if err != nil {
return
}
values, err := x2j.XmlToMap(body)
if err != nil {
return
}
arr := arrayFromMap(values["collection"], "rolePermissions")
changed := false
for _, elMap := range arr {
role := elMap["role"].(map[string]interface{})
if role["-name"] == roleToChange {
oldPerms := elMap["permissions"].([]interface{})
for _, el := range perms {
oldPerms = append(oldPerms, el)
}
elMap["permissions"], changed = oldPerms, true
}
}
if !changed {
roleMap := map[string]string{"-id": strconv.Itoa(len(arr)), "-role": roleToChange}
fmt.Println("Need to add it.... :( ", roleMap)
fullMap := map[string]interface{}{"permissions": perms, "role": roleMap}
arr = append(arr, fullMap)
values["collection"].(map[string]interface{})["rolePermissions"] = arr
}
// TODO Make this a util?
json, _ := j2x.MapToJson(values)
xml, _ := j2x.JsonToXml(json)
fmt.Println("modified(?) response = ", string(xml))
/*
body, err = http.Update("/internal/security/roles/permissions/" +
repo.AntiAbbreviate(ci),
bytes.NewBuffer(xml))
if err != nil {
return
}
fmt.Println("modified(?) response = ", body)
//*/
//fmt.Println("permset = ", permSet)
// decode XML to ... JSON or marshall to objects?
// is role already in there?
// if not: add role
// is permission already in there? -> ignore
// add permission
// encode as XML
// post to http
return
}
示例10: prepare
func prepare(args intf.Command, depType string) (result string, err error) {
subs := args.Subs()
appVersion := repo.AntiAbbreviate(subs[0])
targetEnv := repo.AntiAbbreviate(subs[1])
parts := strings.Split(appVersion, "/")
app := parts[len(parts)-2]
targetDeployed := targetEnv + "/" + app
if depType == "*" {
statusCode, _, err := http.Get("/repository/ci/" + targetDeployed)
if err != nil {
return "error", err
} else if statusCode == 200 {
depType = "UPDATE"
} else if statusCode == 404 {
depType = "INITIAL"
} else {
return "error", errors.New("Unexpected http status code " + strconv.Itoa(statusCode) + " while checking the existance of " + targetDeployed)
}
}
deployedApplication := map[string]interface{}{
"-id": targetDeployed,
"version": map[string]interface{}{
"-ref": appVersion,
},
"environment": map[string]interface{}{
"-ref": targetEnv,
},
"optimizePlan": "true",
}
deployment := map[string]interface{}{
"deployment": map[string]interface{}{
"-type": depType,
"application": map[string]interface{}{
"udm.DeployedApplication": deployedApplication,
},
},
}
for _, arg := range args.Arguments() {
if arg.Name() == "orchestrator" {
deployedApplication["orchestrator"] =
repo.MapSetOfStrings(arg.Values())
}
}
// TODO Make this a util?
json, _ := j2x.MapToJson(deployment)
xml, _ := j2x.JsonToXml(json)
body, err := http.Create("/deployment/prepare/deployeds", bytes.NewBuffer(xml))
if err != nil {
return "error", err
}
body, err = http.Create("/deployment", bytes.NewBuffer(body))
return string(body), err
}