• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mlange-42 / modo / 12777767016

14 Jan 2025 10:46PM CUT coverage: 34.058% (+0.2%) from 33.894%
12777767016

Pull #39

github

web-flow
Merge 12e54bf0f into efc472466
Pull Request #39: Move the binary package to module root

0 of 60 new or added lines in 3 files covered. (0.0%)

282 of 828 relevant lines covered (34.06%)

2.1 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/main.go
1
package main
2

3
import (
4
        "fmt"
5
        "io"
6
        "log"
7
        "os"
8

9
        "github.com/mlange-42/modo/document"
10
        "github.com/mlange-42/modo/format"
11
        "github.com/spf13/cobra"
12
)
13

NEW
14
func main() {
×
NEW
15
        if err := rootCommand().Execute(); err != nil {
×
NEW
16
                log.Fatal(err)
×
NEW
17
        }
×
18
}
19

20
type args struct {
21
        file            string
22
        renderFormat    string
23
        caseInsensitive bool
24
        outDir          string
25
}
26

NEW
27
func rootCommand() *cobra.Command {
×
NEW
28
        var cliArgs args
×
NEW
29

×
NEW
30
        root := &cobra.Command{
×
NEW
31
                Use:   "modo OUT-PATH",
×
NEW
32
                Short: "Mojo documentation generator",
×
NEW
33
                Long:  ``,
×
NEW
34
                Args:  cobra.ExactArgs(1),
×
NEW
35
                RunE: func(cmd *cobra.Command, args []string) error {
×
NEW
36
                        cliArgs.outDir = args[0]
×
NEW
37
                        return run(&cliArgs)
×
NEW
38
                },
×
39
        }
40

NEW
41
        root.Flags().StringVarP(&cliArgs.file, "input", "i", "", "File to read. Reads from STDIN if not specified.")
×
NEW
42
        root.Flags().StringVarP(&cliArgs.renderFormat, "format", "f", "plain", "Output format. One of (plain|mdbook|hugo).")
×
NEW
43
        root.Flags().BoolVar(&cliArgs.caseInsensitive, "case-insensitive", false, "Build for systems that are not case-sensitive regarding file names.\nAppends hyphen (-) to capitalized file names.")
×
NEW
44

×
NEW
45
        root.Flags().SortFlags = false
×
NEW
46

×
NEW
47
        return root
×
48
}
49

NEW
50
func run(args *args) error {
×
NEW
51
        if args.outDir == "" {
×
NEW
52
                return fmt.Errorf("no output path given")
×
NEW
53
        }
×
54

NEW
55
        data, err := read(args.file)
×
NEW
56
        if err != nil {
×
NEW
57
                return err
×
NEW
58
        }
×
59

NEW
60
        docs, err := document.FromJson(data)
×
NEW
61
        if err != nil {
×
NEW
62
                return err
×
NEW
63
        }
×
64

NEW
65
        rFormat, err := format.GetFormat(args.renderFormat)
×
NEW
66
        if err != nil {
×
NEW
67
                return err
×
NEW
68
        }
×
NEW
69
        if args.caseInsensitive {
×
NEW
70
                document.CaseSensitiveSystem = false
×
NEW
71
        }
×
72

NEW
73
        err = format.Render(docs, args.outDir, rFormat)
×
NEW
74
        if err != nil {
×
NEW
75
                return err
×
NEW
76
        }
×
77

NEW
78
        return nil
×
79
}
80

NEW
81
func read(file string) ([]byte, error) {
×
NEW
82
        if file == "" {
×
NEW
83
                return io.ReadAll(os.Stdin)
×
NEW
84
        } else {
×
NEW
85
                return os.ReadFile(file)
×
NEW
86
        }
×
87
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc