- Set up cobra CLI with all commands (backup, restore, prune, verify, fetch) - Integrate uber/fx for dependency injection and lifecycle management - Add globals package with build-time variables (Version, Commit) - Implement config loading from YAML with validation - Create core data models (FileInfo, ChunkInfo, BlobInfo, Snapshot) - Add Makefile with build, test, lint, and clean targets - Include minimal test suite for compilation verification - Update documentation with --quick flag for verify command - Fix markdown numbering in implementation TODO
40 lines
588 B
Go
40 lines
588 B
Go
package globals
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"go.uber.org/fx"
|
|
)
|
|
|
|
// these get populated from main() and copied into the Globals object.
|
|
var (
|
|
Appname string = "vaultik"
|
|
Version string = "dev"
|
|
Commit string = "unknown"
|
|
)
|
|
|
|
type Globals struct {
|
|
Appname string
|
|
Version string
|
|
Commit string
|
|
StartTime time.Time
|
|
}
|
|
|
|
func New(lc fx.Lifecycle) (*Globals, error) {
|
|
n := &Globals{
|
|
Appname: Appname,
|
|
Version: Version,
|
|
Commit: Commit,
|
|
}
|
|
|
|
lc.Append(fx.Hook{
|
|
OnStart: func(ctx context.Context) error {
|
|
n.StartTime = time.Now()
|
|
return nil
|
|
},
|
|
})
|
|
|
|
return n, nil
|
|
}
|