diff options
Diffstat (limited to 'cmd/fscrypt/strings.go')
| -rw-r--r-- | cmd/fscrypt/strings.go | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/cmd/fscrypt/strings.go b/cmd/fscrypt/strings.go new file mode 100644 index 0000000..b77389f --- /dev/null +++ b/cmd/fscrypt/strings.go @@ -0,0 +1,143 @@ +/* + * strings.go - File which contains the specific strings used for output and + * formatting in fscrypt. + * + * 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 main + +import ( + "fmt" + "strings" +) + +// Global application strings +const ( + shortUsage = "A tool for managing Linux filesystem encryption" + + apache2GoogleCopyright = `Copyright 2017 Google, Inc. + + 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.` +) + +// Argument usage strings +const ( + directoryArg = "DIRECTORY" + mountpointArg = "MOUNTPOINT" + pathArg = "PATH" + archiveArg = "ARCHIVE_FILE" + recoveryCodeArg = "RECOVERY_CODE" + mountpointIDArg = mountpointArg + ":ID" +) + +// Text Templates which format our command line output (using text/template) +var ( + // indent is the prefix for the output lines in each section + indent = strings.Repeat(" ", indentLength) + // Top level help output: what is printed for "fscrypt" or "fscrypt --help" + appHelpTemplate = `{{.HelpName}} - {{.Usage}} + +Usage: +` + indent + `{{.HelpName}} COMMAND [arguments] [options] + +Commands:{{range .VisibleCommands}} +` + indent + `{{join .Names ", "}}{{"\t- "}}{{.Usage}}{{end}} +{{if .Description}} +Description: +` + indent + `{{.Description}} +{{end}} +Options: +{{range .VisibleFlags}}{{.}} + +{{end}}` + + // Command help output, used when a command has no subcommands + commandHelpTemplate = `{{.HelpName}} - {{.Usage}} + +Usage: +` + indent + `{{.HelpName}}{{if .ArgsUsage}} {{.ArgsUsage}}{{end}}{{if .VisibleFlags}} [options]{{end}} +{{if .Description}} +Description: +` + indent + `{{.Description}} +{{end}}{{if .VisibleFlags}} +Options: +{{range .VisibleFlags}}{{.}} + +{{end}}{{end}}` + + // Subcommand help output, used when a command has subcommands + subcommandHelpTemplate = `{{.HelpName}} - {{.Usage}} + +Usage: +` + indent + `{{.HelpName}} {{if .ArgsUsage}}{{.ArgsUsage}}{{else}}SUBCOMMAND [arguments]{{end}}{{if .VisibleFlags}} [options]{{end}} + +Subcommands:{{range .VisibleCommands}} +` + indent + `{{join .Names ", "}}{{"\t- "}}{{.Usage}}{{end}} +{{if .Description}} +Description: +` + indent + `{{.Description}} +{{end}}{{if .VisibleFlags}} +Options: +{{range .VisibleFlags}}{{.}} + +{{end}}{{end}}` + + // Additional info, used with "fscrypt version" + versionInfoTemplate = `{{.HelpName}} - {{.Usage}} + +{{if .Version}}Version: +` + indent + `{{.Version}} + +{{end}}{{if .Compiled}}Compiled: +` + indent + `{{.Compiled}} + +{{end}}{{if len .Authors}}Author{{with $length := len .Authors}}{{if ne 1 $length}}s{{end}}{{end}}:{{range .Authors}} +` + indent + `{{.}}{{end}} + +{{end}}{{if .Copyright}}Copyright: +` + indent + `{{.Copyright}} + +{{end}}` +) + +// Add words to this map to have pluralize support them. +var plurals = map[string]string{ + "argument": "arguments", + "filesystem": "filesystems", + "protector": "protectors", + "policy": "policies", +} + +// pluralize prints our the correct pluralization of a work along with the +// specified count. This means pluralize(1, "policy") = "1 policy" but +// pluralize(2, "policy") = "2 policies" +func pluralize(count int, word string) string { + if count != 1 { + word = plurals[word] + } + return fmt.Sprintf("%d %s", count, word) +} |