예제 #1
0
파일: client.go 프로젝트: gaku/1pass
func listItems(vault *onepass.Vault, items []onepass.Item) {
	rangeutil.Sort(0, len(items), func(i, k int) bool {
		return strings.ToLower(items[i].Title) < strings.ToLower(items[k].Title)
	},
		func(i, k int) {
			items[i], items[k] = items[k], items[i]
		})

	for _, item := range items {
		trashState := ""
		if item.Trashed {
			trashState = " (in trash)"
		}
		fmt.Printf("%s (%s, %s)%s\n", item.Title, item.Type(), item.Uuid[0:4], trashState)
	}
}
예제 #2
0
파일: modes.go 프로젝트: gaku/1pass
// PrintHelp prints help output for the command.
// If cmd is empty, prints banner followed by the list of supported
// commands and one-line descriptions for each.
//
// If cmd is non-empty, prints the syntax for that particular command
// along with the text returned by that command's ExtraHelp function.
//
func (p *Parser) PrintHelp(banner string, cmd string) {
	if len(cmd) == 0 {
		fmt.Fprintf(os.Stderr, "Usage: %s <command> <args>\n\n", os.Args[0])
		fmt.Fprintf(os.Stderr, "%s\n\n", banner)
		fmt.Fprintf(os.Stderr, "Supported commands:\n\n")

		sortedCommands := append([]Mode{}, p.Modes...)
		rangeutil.Sort(0, len(sortedCommands), func(i, k int) bool {
			return sortedCommands[i].Command < sortedCommands[k].Command
		},
			func(i, k int) {
				sortedCommands[i], sortedCommands[k] = sortedCommands[k], sortedCommands[i]
			})

		// maximum width for command names before
		// description is moved onto next line
		cmdWidth := 12
		for _, cmd := range sortedCommands {
			if cmd.Internal {
				continue
			}
			fmt.Fprintf(os.Stderr, "  %s", cmd.Command)
			padding := 0
			if len(cmd.Command) > cmdWidth {
				fmt.Fprintf(os.Stderr, "\n")
				padding = 2 + cmdWidth
			} else {
				padding = cmdWidth - len(cmd.Command)
			}
			padding += 2
			fmt.Fprintf(os.Stderr, "  %*.s%s\n", padding, "", cmd.Description)
		}
		fmt.Printf("\nUse '%s help <command>' for more information about using a given command.\n\n", os.Args[0])
	} else {
		found := false
		for _, mode := range p.Modes {
			if mode.Command == cmd {
				found = true

				syntax := fmt.Sprintf("%s %s", os.Args[0], mode.Command)
				for _, arg := range mode.ArgNames {
					if strings.HasPrefix(arg, "[") {
						// optional arg
						syntax = fmt.Sprintf("%s %s", syntax, arg)
					} else {
						// required arg
						syntax = fmt.Sprintf("%s <%s>", syntax, arg)
					}
				}
				fmt.Printf("%s\n\n%s\n\n", syntax, mode.Description)

				if mode.ExtraHelp != nil {
					fmt.Printf("%s\n\n", mode.ExtraHelp())
				}
			}
		}
		if !found {
			fmt.Fprintf(os.Stderr, "No such command: '%s'\n", cmd)
		}
	}
}