diff options
| author | mo khan <mo@mokhan.ca> | 2026-01-30 23:42:28 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2026-01-30 23:42:28 -0700 |
| commit | 1bbe5e40640b39b7a08e4b9bcf08f7fdbdbb2f0a (patch) | |
| tree | 2e30ddd0cb8ad61059a6d8acd8307fa4f28d9050 /cmd/gitmal | |
| parent | bbcd6c6d62f3befb58feddfa16513a5cd4c00473 (diff) | |
refactor: return err instead of panic and use errgroup
Diffstat (limited to 'cmd/gitmal')
| -rw-r--r-- | cmd/gitmal/main.go | 59 |
1 files changed, 33 insertions, 26 deletions
diff --git a/cmd/gitmal/main.go b/cmd/gitmal/main.go index 1581819..2207b95 100644 --- a/cmd/gitmal/main.go +++ b/cmd/gitmal/main.go @@ -1,6 +1,7 @@ package main import ( + "errors" "fmt" "os" "path/filepath" @@ -15,6 +16,13 @@ import ( var flagOutput string func main() { + if err := run(); err != nil { + fmt.Fprintln(os.Stderr, "error:", err) + os.Exit(1) + } +} + +func run() error { flag.StringVar(&flagOutput, "output", "output", "Output directory") flag.Usage = usage flag.Parse() @@ -25,17 +33,17 @@ func main() { input = args[0] } if len(args) > 1 { - panic("Multiple repos not supported yet") + return errors.New("multiple repos not supported yet") } outputDir, err := filepath.Abs(flagOutput) if err != nil { - panic(err) + return err } absInput, err := filepath.Abs(input) if err != nil { - panic(err) + return err } input = absInput @@ -44,12 +52,12 @@ func main() { branches, err := git.Branches(input) if err != nil { - panic(err) + return err } tags, err := git.Tags(input) if err != nil { - panic(err) + return err } var defaultBranch string @@ -58,13 +66,11 @@ func main() { } else if generator.ContainsBranch(branches, "main") { defaultBranch = "main" } else { - generator.Echo("No default branch found (expected 'main' or 'master').") - os.Exit(1) + return errors.New("no default branch found (expected 'main' or 'master')") } if yes, a, b := generator.HasConflictingBranchNames(branches); yes { - generator.Echo(fmt.Sprintf("Conflicting branchs %q and %q, both want to use %q dir name.", a, b, a.DirName())) - os.Exit(1) + return fmt.Errorf("conflicting branches %q and %q, both want to use %q dir name", a, b, a.DirName()) } params := generator.Params{ @@ -80,7 +86,7 @@ func main() { for _, branch := range branches { commitsFor[branch], err = git.Commits(branch, params.RepoDir) if err != nil { - panic(err) + return err } for _, commit := range commitsFor[branch] { @@ -95,7 +101,7 @@ func main() { for _, tag := range tags { commitsForTag, err := git.Commits(git.NewRef(tag.Name), params.RepoDir) if err != nil { - panic(err) + return err } for _, commit := range commitsForTag { if alreadyExisting, ok := commits[commit.Hash]; ok && !alreadyExisting.Branch.IsEmpty() { @@ -108,15 +114,15 @@ func main() { generator.Echo(fmt.Sprintf("> %s: %d branches, %d tags, %d commits", params.Name, len(branches), len(tags), len(commits))) if err := generator.GenerateCSS(params); err != nil { - panic(err) + return err } if err := generator.GenerateBranches(branches, defaultBranch, params); err != nil { - panic(err) + return err } if err := generator.GenerateBranchesJSON(branches, commitsFor, params); err != nil { - panic(err) + return err } var defaultBranchFiles []git.Blob @@ -127,7 +133,7 @@ func main() { files, err := git.Files(params.Ref, params.RepoDir) if err != nil { - panic(err) + return err } if branch.String() == defaultBranch { @@ -135,23 +141,23 @@ func main() { } if err := generator.GenerateBlobs(files, params); err != nil { - panic(err) + return err } if err := generator.GenerateLists(files, params); err != nil { - panic(err) + return err } if err := generator.GenerateLogForBranch(commitsFor[branch], params); err != nil { - panic(err) + return err } if err := generator.GenerateCommitsJSON(commitsFor[branch], params); err != nil { - panic(err) + return err } if err := generator.GenerateCommitsAtom(commitsFor[branch], params); err != nil { - panic(err) + return err } } @@ -159,28 +165,29 @@ func main() { generator.Echo("> generating commits...") if err := generator.GenerateCommits(commits, params); err != nil { - panic(err) + return err } if err := generator.GenerateTags(tags, params); err != nil { - panic(err) + return err } if err := generator.GenerateTagsAtom(tags, params); err != nil { - panic(err) + return err } if err := generator.GenerateReleasesAtom(tags, params); err != nil { - panic(err) + return err } if len(defaultBranchFiles) == 0 { - panic("No files found for default branch") + return errors.New("no files found for default branch") } if err := generator.GenerateIndex(defaultBranchFiles, params); err != nil { - panic(err) + return err } + return nil } func usage() { |
