/
main.go
67 lines (54 loc) · 1.41 KB
/
main.go
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
package main
import (
"flag"
"fmt"
"log"
"os"
"path/filepath"
"github.com/Charliekenney23/tf-changelog-validator/internal/preflight"
"github.com/Charliekenney23/tf-changelog-validator/pkg/chlogvalidator"
"github.com/go-git/go-git/v5"
)
const (
repoPathEnvVar = "REPO_PATH"
)
var repoPath string
func init() {
flag.Usage = usage
flag.StringVar(&repoPath, "repoPath", ".", "Path to the Terraform provider's git repository.")
flag.Parse()
if repoPathVal, ok := os.LookupEnv(repoPathEnvVar); ok {
repoPath = repoPathVal
}
}
func usage() {
fmt.Fprintf(flag.CommandLine.Output(), `Usage: tf-changelog-validator [OPTIONS]
Validate your Terraform provider's changelog to prevent release errors
Options:
`)
flag.PrintDefaults()
}
func main() {
r, err := git.PlainOpen(repoPath)
if err != nil {
log.Fatalf("failed to open git repository '%s': %s", repoPath, err)
}
ok, err := preflight.Check(r)
if err != nil {
log.Fatal(err)
}
if !ok {
log.Println("[INFO] preflight check failed; not running validation")
return
}
changelogPath := filepath.Join(repoPath, "CHANGELOG.md")
f, err := os.Open(changelogPath)
if err != nil {
log.Fatalf("failed to open changelog '%s': %s", changelogPath, err)
}
log.Printf("[INFO] validating changelog '%s'", changelogPath)
if err := chlogvalidator.Validate(f); err != nil {
log.Fatalf("validation failed: %s", err)
}
log.Printf("[INFO] changelog is valid")
}