Creating a server command
So far, all of our service code lives inside the vault
package. We are now going to use this package to create a new tool to expose the server functionality.
Create a new folder in vault
called cmd
, and inside it create another called vaultd
. We are going to put our command code inside the vaultd
folder because even though the code will be in the main
package, the name of the tool will be vaultd
by default. If we just put the command in the cmd
folder, the tool would be built into a binary called cmd
-which is pretty confusing.
Note
In Go projects, if the primary use of the package is to be imported into other programs (such as Go kit), then the root level files should make up the package and will have an appropriate package name (not main
). If the primary purpose is a command-line tool, such as the Drop command (https://github.com/matryer/drop), then the root files will be in the main
package.
The rationale for this comes down to usability; when importing a package...