2023-06-23 13:09:44 +00:00
package modules
import (
"context"
"runtime"
"strings"
"time"
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/internal/version"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
// rootCmd represents the base command when called without any subcommands.
var rootCmd = & cobra . Command {
Use : "frostfs-s3-authmate" ,
Version : version . Version ,
Short : "FrostFS S3 Authmate" ,
Long : "Helps manage delegated access via gates to data stored in FrostFS network" ,
Example : "frostfs-s3-authmate --version" ,
SilenceErrors : true ,
SilenceUsage : true ,
PersistentPreRunE : func ( cmd * cobra . Command , _ [ ] string ) error {
viper . AutomaticEnv ( )
viper . SetEnvPrefix ( "AUTHMATE" )
viper . SetEnvKeyReplacer ( strings . NewReplacer ( "." , "_" ) )
viper . AllowEmptyEnv ( true )
return viper . BindPFlags ( cmd . Flags ( ) )
} ,
RunE : func ( cmd * cobra . Command , _ [ ] string ) error {
return cmd . Help ( )
} ,
}
const (
withLogFlag = "with-log"
debugFlag = "debug"
timeoutFlag = "timeout"
)
func Execute ( ctx context . Context ) ( * cobra . Command , error ) {
return rootCmd . ExecuteContextC ( ctx )
}
func init ( ) {
rootCmd . PersistentFlags ( ) . Bool ( withLogFlag , false , "Enable logger" )
rootCmd . PersistentFlags ( ) . Bool ( debugFlag , false , "Enable debug logger level" )
rootCmd . PersistentFlags ( ) . Duration ( timeoutFlag , time . Minute , "Timeout of processing of the command, for example 2m (note: max time unit is an hour so to set a day you should use 24h)" )
cobra . AddTemplateFunc ( "runtimeVersion" , runtime . Version )
rootCmd . SetVersionTemplate ( ` Frostfs S3 Authmate
{ { printf "Version: %s" . Version } }
GoVersion : { { runtimeVersion } }
` )
2023-06-23 13:10:43 +00:00
rootCmd . AddCommand ( issueSecretCmd )
initIssueSecretCmd ( )
2023-06-23 13:11:15 +00:00
rootCmd . AddCommand ( obtainSecretCmd )
initObtainSecretCmd ( )
2023-06-23 13:11:57 +00:00
rootCmd . AddCommand ( generatePresignedURLCmd )
initGeneratePresignedURLCmd ( )
2023-06-23 13:09:44 +00:00
}