// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This file was auto-generated via go generate.
// DO NOT UPDATE MANUALLY

/*
Command uniqueid generates unique identifiers. It also has an option of
automatically substituting unique ids with placeholders in files.

Usage:
   uniqueid <command>

The uniqueid commands are:
   generate    Generates UniqueIds
   inject      Injects UniqueIds into existing files
   help        Display help for commands or topics

The global flags are:
 -v23.metadata=<just specify -v23.metadata to activate>
   Displays metadata for the program and exits.

Uniqueid generate - Generates UniqueIds

Generates unique ids and outputs them to standard out.

Usage:
   uniqueid generate

Uniqueid inject - Injects UniqueIds into existing files

Injects UniqueIds into existing files. Strings of the form "$UNIQUEID$" will be
replaced with generated ids.

Usage:
   uniqueid inject <filenames>

<filenames> List of files to inject unique ids into

Uniqueid help - Display help for commands or topics

Help with no args displays the usage of the parent command.

Help with args displays the usage of the specified sub-command or help topic.

"help ..." recursively displays help for all commands and topics.

Usage:
   uniqueid help [flags] [command/topic ...]

[command/topic ...] optionally identifies a specific sub-command or help topic.

The uniqueid help flags are:
 -style=compact
   The formatting style for help output:
      compact - Good for compact cmdline output.
      full    - Good for cmdline output, shows all global flags.
      godoc   - Good for godoc processing.
   Override the default by setting the CMDLINE_STYLE environment variable.
 -width=<terminal width>
   Format output to this target width in runes, or unlimited if width < 0.
   Defaults to the terminal width if available.  Override the default by setting
   the CMDLINE_WIDTH environment variable.
*/
package main
