| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // Copyright (C) 2014 The Syncthing Authors.
- //
- // This Source Code Form is subject to the terms of the Mozilla Public
- // License, v. 2.0. If a copy of the MPL was not distributed with this file,
- // You can obtain one at http://mozilla.org/MPL/2.0/.
- package main
- import (
- "bytes"
- "flag"
- "fmt"
- "io"
- "text/tabwriter"
- )
- func optionTable(w io.Writer, rows [][]string) {
- tw := tabwriter.NewWriter(w, 2, 4, 2, ' ', 0)
- for _, row := range rows {
- for i, cell := range row {
- if i > 0 {
- tw.Write([]byte("\t"))
- }
- tw.Write([]byte(cell))
- }
- tw.Write([]byte("\n"))
- }
- tw.Flush()
- }
- func usageFor(fs *flag.FlagSet, usage string, extra string) func() {
- return func() {
- var b bytes.Buffer
- b.WriteString("Usage:\n " + usage + "\n")
- var options [][]string
- fs.VisitAll(func(f *flag.Flag) {
- var opt = " -" + f.Name
- if f.DefValue != "false" {
- opt += "=" + fmt.Sprintf(`"%s"`, f.DefValue)
- }
- options = append(options, []string{opt, f.Usage})
- })
- if len(options) > 0 {
- b.WriteString("\nOptions:\n")
- optionTable(&b, options)
- }
- fmt.Println(b.String())
- if len(extra) > 0 {
- fmt.Println(extra)
- }
- }
- }
|