Use Go generate instead of a makefile (#279)

* Use Go generate instead of a makefile

* Meet the go generate specifications
This commit is contained in:
John Wood
2022-06-30 11:09:52 -07:00
committed by GitHub
parent 37a41318ba
commit 0a56dcc30e
5 changed files with 22 additions and 17 deletions
-5
View File
@@ -1,5 +0,0 @@
.PHONY: ctlogs
ctlogs:
go run github.com/square/certigo/internal/gen-known-logs --package lib > ../../lib/ctlogs.go
go fmt ../../lib/ctlogs.go
+1 -1
View File
@@ -6,4 +6,4 @@ Logs are fetched parsed from https://www.gstatic.com/ct/log_list/v2/all_logs_lis
## Usage
From the current directory (`certigo/internal/gen-known-logs`), run `make ctlogs`. This will fetch the list of logs and place generated code in [lib/ctlogs.go](../../lib/ctlogs.go).
Run `go generate ./...` to regenerate known logs.
+16 -9
View File
@@ -6,10 +6,13 @@ import (
"fmt"
"log"
"net/http"
"os"
"time"
)
var packageName = flag.String("package", "lib", "Package for the generated code")
var (
out = flag.String("out", "", "Output file")
)
// https://github.com/google/certificate-transparency-community-site/blob/master/docs/google/known-logs.md
const knownLogsAddr = "https://www.gstatic.com/ct/log_list/v2/all_logs_list.json"
@@ -24,8 +27,7 @@ func main() {
resp, err := http.Get(knownLogsAddr)
if err != nil {
log.Printf("Failed to fetch the list of known CT logs: %v", err)
return
log.Fatalf("Failed to fetch the list of known CT logs: %v", err)
}
defer resp.Body.Close()
@@ -40,11 +42,16 @@ func main() {
}
if err := json.NewDecoder(resp.Body).Decode(&logs); err != nil {
log.Printf("Failed to parse the list of known CT logs: %v", err)
return
log.Fatalf("Failed to parse the list of known CT logs: %v", err)
}
fmt.Printf(`// Autogenerated with github.com/square/certigo/internal/gen-known-logs
f, err := os.Create(*out)
if err != nil {
log.Fatalf("Failed to open file %s", *out)
}
defer f.Close()
fmt.Fprintf(f, `// Code generated by github.com/square/certigo/internal/gen-known-logs; DO NOT EDIT
// Generated at %s
package %s
@@ -54,16 +61,16 @@ type ctLog struct {
}
var knownLogs = map[string]*ctLog{
`, time.Now().Format(time.RFC3339), *packageName)
`, time.Now().Format(time.RFC3339), os.Getenv("GOPACKAGE"))
knownLogs := make(map[string]*ctLog)
for _, op := range logs.Operators {
for _, l := range op.Logs {
fmt.Printf("\t%q: {operator: %q, url: %q},\n", l.ID, op.Name, l.URL)
fmt.Fprintf(f, "\t%q: {operator: %q, url: %q},\n", l.ID, op.Name, l.URL)
knownLogs[l.ID] = &ctLog{
operator: op.Name,
url: l.URL,
}
}
}
fmt.Println("}")
fmt.Fprintln(f, "}")
}
+3
View File
@@ -11,6 +11,9 @@ import (
ctutil "github.com/google/certificate-transparency-go/x509util"
)
//go:generate go run github.com/square/certigo/internal/gen-known-logs --out ctlogs.go
//go:generate go fmt ctlogs.go
func parseSCTList(cert *x509.Certificate) []*simpleSCT {
// ctutil contains a fork of crypto/x509 with support for SCTs. We must re-parse the
// whole certificate to get at them, so do a quick check to see if the SCT extension
+2 -2
View File
@@ -1,5 +1,5 @@
// Autogenerated with github.com/square/certigo/internal/gen-known-logs
// Generated at 2022-06-29T17:31:27-07:00
// Code generated by github.com/square/certigo/internal/gen-known-logs; DO NOT EDIT
// Generated at 2022-06-29T22:18:11-07:00
package lib
type ctLog struct {