File: gendoc.go

package info (click to toggle)
golang-github-reviewdog-errorformat 0.0~git20240608.1d3280e-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 984 kB
  • sloc: python: 59; xml: 13; sh: 7; javascript: 4; haskell: 3; makefile: 3
file content (68 lines) | stat: -rw-r--r-- 1,376 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//go:build ignore
// +build ignore

package main

import (
	"bytes"
	"fmt"
	"go/format"
	"log"
	"os"
	"sort"

	"github.com/reviewdog/errorformat/fmts"
)

func main() {
	if err := run(); err != nil {
		log.Fatal(err)
	}
}

func run() error {
	buf := &bytes.Buffer{}
	fmt.Fprintln(buf, firstlines)
	fmt.Fprintln(buf, "")
	fmt.Fprintln(buf, pkgcomment)
	fmt.Fprintln(buf, "//")
	fmt.Fprintln(buf, "// Defined formats:")
	fmt.Fprintln(buf, "// ")
	langToFmts := fmts.DefinedFmtsByLang()

	langs := make([]string, 0, len(langToFmts))
	for lang, _ := range langToFmts {
		langs = append(langs, lang)
	}
	sort.Strings(langs)

	for _, lang := range langs {
		nameToFmt := langToFmts[lang]
		names := make([]string, 0, len(nameToFmt))
		for name, _ := range nameToFmt {
			names = append(names, name)
		}
		sort.Strings(names)

		fmt.Fprintf(buf, "// \t%v\n", lang)
		for _, name := range names {
			f := nameToFmt[name]
			fmt.Fprintf(buf, "// \t\t%s\t%s - %s\n", f.Name, f.Description, f.URL)
		}
	}
	fmt.Fprintln(buf, pkgline)

	source, err := format.Source(buf.Bytes())
	if err != nil {
		return err
	}

	return os.WriteFile("doc.go", source, 0644)
}

const (
	firstlines = `// Code generated by fmts/gendoc.go; DO NOT EDIT.
// Please run '$ go generate ./...' instead to update this file`
	pkgcomment = `// Package fmts holds defined errorformats.`
	pkgline    = `package fmts`
)