Project Details
Repository Layout
Information on how this repository is structured.
Files
├── cmd
│ ├── copy
│ ├── helper
│ ├── list
│ └── root.go
├── main.go
├── output
├── site
├── test
├── tfclient
├── tfm
└── version
main.go
- Entry point for the CLI, not much code here
go.mod
and go.sum
- Go package dependencies
CHANGELOG.md
- Repository Changes by release
version/version.go
- Isolated package to create a struct for Version information
cmds/
- Directory for all commands/subcommands
cmds/copy
- each subcommand is placed into it's own directory package
cmds/list
- each subcommand is placed into it's own directory package
cmds/helper
- Package that creates an easy set of functions to cleanly retrieve flag values regardless of how they were set
tfclient
- Package for to setup a
go-tfe
source and destination context to interact with the TFC/TFE APIs.
output
- Package to assist with outputing information for the user.
docs
- Directory for documentation about the tool. Powered by MKDocs and hosted on GitHub Pages
.gihub/worksflow
- Github Action workflows
main.tml
automated buildsrelease.yaml
binary release buildunit-test.yml
automated features testing pipelinedocs-deploy.yml
deployment of TFM Docs to GitHub pages
Technologies
Language:
Go
, chosen to have the ability to cross compile for multiple operating systems.
Go Libraries
cobra
, chosen to provide a modern CLI interface experience.viper
, chosen to handle configuration filesgo-tfe
, Go API client for TFE/TFC
Architectural Decisions
See Architectural Decisions Records to understand how and why tfm
has been built.