aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/cmd.go50
-rw-r--r--cmd/format.go0
-rw-r--r--cmd/fscrypt/strings.go13
-rw-r--r--cmd/helper.go0
-rw-r--r--cmd/templates.go0
5 files changed, 57 insertions, 6 deletions
diff --git a/cmd/cmd.go b/cmd/cmd.go
new file mode 100644
index 0000000..e2f0cf4
--- /dev/null
+++ b/cmd/cmd.go
@@ -0,0 +1,50 @@
+/*
+ * cmd.go - Main interface to cmd package (running, Cmd and Flag structs, etc)
+ *
+ * Copyright 2017 Google Inc.
+ * Author: Joe Richey (joerichey@google.com)
+ *
+ * Licensed 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 is the common library for writing fscrypt command line binaries.
+// This package is mainly a wrapper around github.com/urfave/cli, but provides
+// additional support to make the usage look similar to the man page.
+//
+// The main componets are the `Cmd` and `Flag` types which can be used to define
+// a top-level command with many potential subcommands. This package also
+// presents a smaller interface than urfave/cli, making it easier to use for
+// other commands.
+package cmd
+
+// Command represents a command with many potential top-level commands. This is
+// trand
+type Cmd struct {
+ Name string
+ UsageLines []string
+ SubCmds []Cmd
+ Arguments []Argument
+ Flags []cli.Flag
+ Man *ManEntry
+ Action CommandFunc
+}
+
+type Argument struct {
+ Name string
+ Usage string
+}
+
+type ManEntry struct {
+ Title string
+ Section int
+}
diff --git a/cmd/format.go b/cmd/format.go
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/cmd/format.go
diff --git a/cmd/fscrypt/strings.go b/cmd/fscrypt/strings.go
index fb79c38..e90abe1 100644
--- a/cmd/fscrypt/strings.go
+++ b/cmd/fscrypt/strings.go
@@ -122,12 +122,9 @@ Options:
{{end}}`
)
-// Add words to this map to have pluralize support them.
+// Add words to this map if pluralization does not just involve adding an s.
var plurals = map[string]string{
- "argument": "arguments",
- "filesystem": "filesystems",
- "protector": "protectors",
- "policy": "policies",
+ "policy": "policies",
}
// pluralize prints our the correct pluralization of a work along with the
@@ -135,7 +132,11 @@ var plurals = map[string]string{
// pluralize(2, "policy") = "2 policies"
func pluralize(count int, word string) string {
if count != 1 {
- word = plurals[word]
+ if plural, ok := plurals[word]; ok {
+ word = plural
+ } else {
+ word += "s"
+ }
}
return fmt.Sprintf("%d %s", count, word)
}
diff --git a/cmd/helper.go b/cmd/helper.go
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/cmd/helper.go
diff --git a/cmd/templates.go b/cmd/templates.go
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/cmd/templates.go