blob: 9b9ba60368c68651ecc17dd82699a8b7e1c6c34b [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package cmd
import (
"errors"
"fmt"
"strings"
"github.com/apache/cloudstack-cloudmonkey/config"
)
var helpCommand *Command
func init() {
helpCommand = &Command{
Name: "help",
Help: "Help",
Handle: func(r *Request) error {
if len(r.Args) < 1 || r.Args[0] == "-h" {
PrintUsage()
return nil
}
api := r.Config.GetCache()[strings.ToLower(r.Args[0])]
if api == nil {
return errors.New("unknown command or API requested")
}
fmt.Printf("\033[34m%s\033[0m: %s\n", api.Name, api.Description)
if api.Async {
fmt.Println("This API is \033[35masynchronous\033[0m.")
}
if len(api.RequiredArgs) > 0 {
fmt.Printf("Required params: ")
for _, requiredArg := range api.RequiredArgs {
fmt.Printf("%s, ", strings.Replace(requiredArg, "=", "", -1))
}
fmt.Println()
}
if len(api.Args) > 0 {
fmt.Printf("%-24s %-8s %s\n", "API Params", "Type", "Description")
fmt.Printf("%-24s %-8s %s\n", "==========", "====", "===========")
}
for _, arg := range api.Args {
if arg.Type == config.FAKE {
continue
}
fmt.Printf("\033[36m%-24s\033[0m \033[32m%-8s\033[0m ", strings.Replace(arg.Name, "=", "", -1), arg.Type)
info := []rune(arg.Description)
for i, r := range info {
fmt.Printf("%s", string(r))
if i > 0 && i%40 == 0 {
fmt.Println()
for i := 0; i < 34; i++ {
fmt.Printf(" ")
}
}
}
fmt.Println()
}
return nil
},
}
AddCommand(helpCommand)
}