mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
a991379a74
Some tests are not fully rewritten in Go, a typescript wrapper is called instead until we remove the remaining TS tests and dependencies. Also, dockerize every components (mainly Authelia backend, frontend and kind) so that the project does not interfere with user host anymore (open ports for instance). The only remaining intrusive change is the one done during bootstrap to add entries in /etc/hosts. It will soon be avoided using authelia.com domain that I own.
152 lines
3.6 KiB
Go
Executable File
152 lines
3.6 KiB
Go
Executable File
//usr/bin/env go run "$0" "$@"; exit
|
|
|
|
package main
|
|
|
|
import (
|
|
"github.com/clems4ever/authelia/utils"
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var logLevel string
|
|
|
|
// AutheliaCommandDefinition is the definition of one authelia-scripts command.
|
|
type AutheliaCommandDefinition struct {
|
|
Name string
|
|
Short string
|
|
Long string
|
|
CommandLine string
|
|
Args cobra.PositionalArgs
|
|
Func func(cmd *cobra.Command, args []string)
|
|
SubCommands []*cobra.Command
|
|
}
|
|
|
|
// CobraCommands list of cobra commands
|
|
type CobraCommands = []*cobra.Command
|
|
|
|
// Commands is the list of commands of authelia-scripts
|
|
var Commands = []AutheliaCommandDefinition{
|
|
AutheliaCommandDefinition{
|
|
Name: "bootstrap",
|
|
Short: "Prepare environment for development and testing.",
|
|
Long: `Prepare environment for development and testing. This command prepares docker
|
|
images and download tools like Kind for Kubernetes testing.`,
|
|
Func: Bootstrap,
|
|
},
|
|
AutheliaCommandDefinition{
|
|
Name: "build",
|
|
Short: "Build Authelia binary and static assets",
|
|
Func: Build,
|
|
},
|
|
AutheliaCommandDefinition{
|
|
Name: "clean",
|
|
Short: "Clean build artifacts",
|
|
Func: Clean,
|
|
},
|
|
AutheliaCommandDefinition{
|
|
Name: "docker",
|
|
Short: "Commands related to building and publishing docker image",
|
|
SubCommands: CobraCommands{DockerBuildCmd, DockerPushCmd, DockerManifestCmd},
|
|
},
|
|
AutheliaCommandDefinition{
|
|
Name: "hash-password [password]",
|
|
Short: "Compute hash of a password for creating a file-based users database",
|
|
Func: HashPassword,
|
|
Args: cobra.MinimumNArgs(1),
|
|
},
|
|
AutheliaCommandDefinition{
|
|
Name: "serve [config]",
|
|
Short: "Serve compiled version of Authelia",
|
|
Func: ServeCmd,
|
|
Args: cobra.MinimumNArgs(1),
|
|
},
|
|
AutheliaCommandDefinition{
|
|
Name: "suites",
|
|
Short: "Compute hash of a password for creating a file-based users database",
|
|
SubCommands: CobraCommands{
|
|
SuitesTestCmd,
|
|
SuitesListCmd,
|
|
SuitesSetupCmd,
|
|
SuitesTeardownCmd,
|
|
},
|
|
},
|
|
AutheliaCommandDefinition{
|
|
Name: "ci",
|
|
Short: "Run continuous integration script",
|
|
Func: RunCI,
|
|
},
|
|
AutheliaCommandDefinition{
|
|
Name: "unittest",
|
|
Short: "Run unit tests",
|
|
Func: RunUnitTest,
|
|
},
|
|
}
|
|
|
|
func levelStringToLevel(level string) log.Level {
|
|
if level == "debug" {
|
|
return log.DebugLevel
|
|
} else if level == "warning" {
|
|
return log.WarnLevel
|
|
}
|
|
return log.InfoLevel
|
|
}
|
|
|
|
func main() {
|
|
var rootCmd = &cobra.Command{Use: "authelia-scripts"}
|
|
cobraCommands := make([]*cobra.Command, 0)
|
|
|
|
for _, autheliaCommand := range Commands {
|
|
var fn func(cobraCmd *cobra.Command, args []string)
|
|
|
|
if autheliaCommand.CommandLine != "" {
|
|
cmdline := autheliaCommand.CommandLine
|
|
fn = func(cobraCmd *cobra.Command, args []string) {
|
|
cmd := utils.CommandWithStdout(cmdline, args...)
|
|
err := cmd.Run()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
} else if autheliaCommand.Func != nil {
|
|
fn = autheliaCommand.Func
|
|
}
|
|
|
|
command := &cobra.Command{
|
|
Use: autheliaCommand.Name,
|
|
Short: autheliaCommand.Short,
|
|
}
|
|
|
|
if autheliaCommand.Long != "" {
|
|
command.Long = autheliaCommand.Long
|
|
}
|
|
|
|
if fn != nil {
|
|
command.Run = fn
|
|
}
|
|
|
|
if autheliaCommand.Args != nil {
|
|
command.Args = autheliaCommand.Args
|
|
}
|
|
|
|
if autheliaCommand.SubCommands != nil {
|
|
command.AddCommand(autheliaCommand.SubCommands...)
|
|
}
|
|
|
|
cobraCommands = append(cobraCommands, command)
|
|
}
|
|
|
|
rootCmd.PersistentFlags().StringVar(&logLevel, "log-level", "info", "Set the log level for the command")
|
|
rootCmd.AddCommand(cobraCommands...)
|
|
cobra.OnInitialize(initConfig)
|
|
|
|
err := rootCmd.Execute()
|
|
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func initConfig() {
|
|
log.SetLevel(levelStringToLevel(logLevel))
|
|
}
|