diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 71 |
1 files changed, 62 insertions, 9 deletions
@@ -3,11 +3,14 @@ package main import ( "context" "flag" + "fmt" "log/slog" "os" "os/signal" "time" + "github.com/alecthomas/chroma/v2/styles" + "git.gabrielgio.me/cerrado/pkg/config" "git.gabrielgio.me/cerrado/pkg/handler" "git.gabrielgio.me/cerrado/pkg/service" @@ -15,18 +18,53 @@ import ( ) func main() { - ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, os.Kill) - defer stop() - if err := run(ctx); err != nil { - slog.Error("Error", "error", err) + if len(os.Args) == 4 && os.Args[1] == "hash" { + err := hash(os.Args[2], os.Args[3]) + if err != nil { + slog.Error("Hash", "error", err) + os.Exit(1) + } + return + } + + if len(os.Args) == 2 && os.Args[1] == "key" { + err := key() + if err != nil { + slog.Error("Key", "error", err) + os.Exit(1) + } + return + } + + if err := run(); err != nil { + slog.Error("Server", "error", err) os.Exit(1) } } -func run(ctx context.Context) error { - var ( - configPath = flag.String("config", "/etc/cerrado.scfg", "File path for the configuration file") - ) +func hash(username string, password string) error { + hash, err := service.GenerateHash(username, password) + if err != nil { + return err + } + fmt.Println(hash) + return nil +} + +func key() error { + en, err := service.GenerateAesKey() + if err != nil { + return err + } + fmt.Println(en) + return nil +} + +func run() error { + ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, os.Kill) + defer stop() + + configPath := flag.String("config", "/etc/cerrado.scfg", "File path for the configuration file") flag.Parse() @@ -36,10 +74,25 @@ func run(ctx context.Context) error { return err } + // checking chroma configuration + if _, ok := styles.Registry[configRepo.GetSyntaxHighlight()]; !ok { + slog.Warn( + "Invalid Syntax highlight selected", + "invalid-style", configRepo.GetSyntaxHighlight(), + "using", "monokailight", + ) + styles.Fallback = styles.Registry["monokailight"] + } + // services gitService := service.NewGitService(configRepo) + authService := service.NewAuthService(configRepo) - handler, err := handler.MountHandler(gitService, configRepo) + handler, err := handler.MountHandler( + gitService, + authService, + configRepo, + ) if err != nil { return err } |