// 2020 Rackspace, 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. // Package version is the version management logic for gomigrate to make sure we are // able manage the version releases. package version import ( "runtime" "time" "github.com/sirupsen/logrus" "github.rackspace.com/DCM/gomigrate/core" "github.rackspace.com/gorax/gokeys" "github.com/gookit/color" ) // Plugin function will return a argparse.Command type back to the parent parser // nolint:typecheck func Plugin(p *core.Parser) core.Plugin { // Create a argument for the DCX Translations logic cmd := p.NewCommand("version", "display current version") return core.Plugin{CMD: cmd, Func: pluginFunc} } // pluginFunc function is executed from the gomigrate caller func pluginFunc(cfg gokeys.Settings) { var storedVer CfgVer key, err := FromCfg(cfg) if err == nil { if storedVer, err = Parse(key.String()); err != nil { logrus.Error(err) } } color.Green.Printf("GoMigrate: v%s\n", storedVer.Version.String()) color.Cyan.Printf(" ° Runtime: %s_%s\n", runtime.GOOS, runtime.GOARCH) color.Cyan.Printf(" ° Version Checked At: %s\n", storedVer.Timestamp.String()) color.Cyan.Printf(" ° Next Version Check At: %s\n\n", storedVer.Timestamp.Add(checkInterval*time.Hour)) }