From 5487e88919f1495857367b478726ddfca283d319 Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Wed, 5 Jun 2019 10:15:13 -0700 Subject: [PATCH 1/7] Add VERBOSE option to tools/build and generate.go VERBOSE will be set by TRAVIS (but can also be set by user to diagnose slow builds). Using an env var so that it automatically propagates to all the sub-scripts and tools without having to pass it through tools/build explicitly. --- .travis.yml | 5 ++++- tools/build | 9 +++++++++ tools/generate.go | 13 ++++++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1864bc5..54d1654 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,4 +12,7 @@ install: - go get -u github.com/russross/blackfriday script: - - 'tools/build' + - tools/build + +env: + - VERBOSE=1 diff --git a/tools/build b/tools/build index 3c07db8..b3205bb 100755 --- a/tools/build +++ b/tools/build @@ -2,7 +2,16 @@ set -e +verbose() [[ -v VERBOSE ]] + +verbose && echo "Running tests..." tools/test + +verbose && echo "Formatting code..." tools/format + +verbose && echo "Measuring line lengths..." tools/measure + +verbose && echo "Generating HTML..." tools/generate diff --git a/tools/generate.go b/tools/generate.go index 32f542c..c840169 100644 --- a/tools/generate.go +++ b/tools/generate.go @@ -19,6 +19,10 @@ var cacheDir = "/tmp/gobyexample-cache" var siteDir = "./public" var pygmentizeBin = "./vendor/pygments/pygmentize" +func verbose() bool { + return len(os.Getenv("VERBOSE")) > 0 +} + func check(err error) { if err != nil { panic(err) @@ -221,6 +225,7 @@ func parseAndRenderSegs(sourcePath string) ([]*Seg, string) { } func parseExamples() []*Example { + fmt.Println("Parsing examples") exampleNames := readLines("examples.txt") examples := make([]*Example, 0) for _, exampleName := range exampleNames { @@ -261,6 +266,9 @@ func parseExamples() []*Example { } func renderIndex(examples []*Example) { + if verbose() { + fmt.Println("Rendering index") + } indexTmpl := template.New("index") _, err := indexTmpl.Parse(mustReadFile("templates/index.tmpl")) check(err) @@ -274,7 +282,10 @@ func renderExamples(examples []*Example) { exampleTmpl := template.New("example") _, err := exampleTmpl.Parse(mustReadFile("templates/example.tmpl")) check(err) - for _, example := range examples { + for i, example := range examples { + if verbose() { + fmt.Printf("Rendering %s [%d/%d]\n", example.Name, i, len(examples)) + } exampleF, err := os.Create(siteDir + "/" + example.ID) check(err) exampleTmpl.Execute(exampleF, example) From 3d0bde4f8f5000cbde5cf5262830e4d48401cb30 Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Wed, 5 Jun 2019 10:17:09 -0700 Subject: [PATCH 2/7] Add verbose guard in parseExamples --- tools/generate.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/generate.go b/tools/generate.go index c840169..1b79de8 100644 --- a/tools/generate.go +++ b/tools/generate.go @@ -225,7 +225,9 @@ func parseAndRenderSegs(sourcePath string) ([]*Seg, string) { } func parseExamples() []*Example { - fmt.Println("Parsing examples") + if verbose() { + fmt.Println("Parsing examples") + } exampleNames := readLines("examples.txt") examples := make([]*Example, 0) for _, exampleName := range exampleNames { From d34c7ac64e39abfde318e77d97df59e073e514ad Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Thu, 6 Jun 2019 05:26:20 -0700 Subject: [PATCH 3/7] Rewrite verbose() to work in OSX bash --- tools/build | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/build b/tools/build index b3205bb..f06beae 100755 --- a/tools/build +++ b/tools/build @@ -2,7 +2,9 @@ set -e -verbose() [[ -v VERBOSE ]] +verbose() { + ! test -z "$VERBOSE" +} verbose && echo "Running tests..." tools/test From cdbdae9715bf1ff501e4f22f7e066d5729ec1fb3 Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Fri, 7 Jun 2019 06:12:30 -0700 Subject: [PATCH 4/7] Do progress reporting during parsing/processing stage, not HTML render stage --- tools/generate.go | 75 ++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/tools/generate.go b/tools/generate.go index 1b79de8..24a5a26 100644 --- a/tools/generate.go +++ b/tools/generate.go @@ -225,40 +225,43 @@ func parseAndRenderSegs(sourcePath string) ([]*Seg, string) { } func parseExamples() []*Example { - if verbose() { - fmt.Println("Parsing examples") - } - exampleNames := readLines("examples.txt") - examples := make([]*Example, 0) - for _, exampleName := range exampleNames { - if (exampleName != "") && !strings.HasPrefix(exampleName, "#") { - example := Example{Name: exampleName} - exampleID := strings.ToLower(exampleName) - exampleID = strings.Replace(exampleID, " ", "-", -1) - exampleID = strings.Replace(exampleID, "/", "-", -1) - exampleID = strings.Replace(exampleID, "'", "", -1) - exampleID = dashPat.ReplaceAllString(exampleID, "-") - example.ID = exampleID - example.Segs = make([][]*Seg, 0) - sourcePaths := mustGlob("examples/" + exampleID + "/*") - for _, sourcePath := range sourcePaths { - if strings.HasSuffix(sourcePath, ".hash") { - example.GoCodeHash, example.URLHash = parseHashFile(sourcePath) - } else { - sourceSegs, filecontents := parseAndRenderSegs(sourcePath) - if filecontents != "" { - example.GoCode = filecontents - } - example.Segs = append(example.Segs, sourceSegs) - } - } - newCodeHash := sha1Sum(example.GoCode) - if example.GoCodeHash != newCodeHash { - example.URLHash = resetURLHashFile(newCodeHash, example.GoCode, "examples/"+example.ID+"/"+example.ID+".hash") - } - examples = append(examples, &example) + var exampleNames []string + for _, line := range readLines("examples.txt") { + if line != "" && !strings.HasPrefix(line, "#") { + exampleNames = append(exampleNames, line) } } + examples := make([]*Example, 0) + for i, exampleName := range exampleNames { + if verbose() { + fmt.Printf("Processing %s [%d/%d]\n", exampleName, i+1, len(exampleNames)) + } + example := Example{Name: exampleName} + exampleID := strings.ToLower(exampleName) + exampleID = strings.Replace(exampleID, " ", "-", -1) + exampleID = strings.Replace(exampleID, "/", "-", -1) + exampleID = strings.Replace(exampleID, "'", "", -1) + exampleID = dashPat.ReplaceAllString(exampleID, "-") + example.ID = exampleID + example.Segs = make([][]*Seg, 0) + sourcePaths := mustGlob("examples/" + exampleID + "/*") + for _, sourcePath := range sourcePaths { + if strings.HasSuffix(sourcePath, ".hash") { + example.GoCodeHash, example.URLHash = parseHashFile(sourcePath) + } else { + sourceSegs, filecontents := parseAndRenderSegs(sourcePath) + if filecontents != "" { + example.GoCode = filecontents + } + example.Segs = append(example.Segs, sourceSegs) + } + } + newCodeHash := sha1Sum(example.GoCode) + if example.GoCodeHash != newCodeHash { + example.URLHash = resetURLHashFile(newCodeHash, example.GoCode, "examples/"+example.ID+"/"+example.ID+".hash") + } + examples = append(examples, &example) + } for i, example := range examples { if i < (len(examples) - 1) { example.NextExample = examples[i+1] @@ -281,13 +284,13 @@ func renderIndex(examples []*Example) { } func renderExamples(examples []*Example) { + if verbose() { + fmt.Println("Generating HTML") + } exampleTmpl := template.New("example") _, err := exampleTmpl.Parse(mustReadFile("templates/example.tmpl")) check(err) - for i, example := range examples { - if verbose() { - fmt.Printf("Rendering %s [%d/%d]\n", example.Name, i, len(examples)) - } + for _, example := range examples { exampleF, err := os.Create(siteDir + "/" + example.ID) check(err) exampleTmpl.Execute(exampleF, example) From cb0f0a305624f6dd0b50b374ebb5d0a5f21a5e1d Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Fri, 7 Jun 2019 06:17:26 -0700 Subject: [PATCH 5/7] Tweak logged text --- tools/generate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/generate.go b/tools/generate.go index 24a5a26..4872b3b 100644 --- a/tools/generate.go +++ b/tools/generate.go @@ -285,7 +285,7 @@ func renderIndex(examples []*Example) { func renderExamples(examples []*Example) { if verbose() { - fmt.Println("Generating HTML") + fmt.Println("Rendering templates") } exampleTmpl := template.New("example") _, err := exampleTmpl.Parse(mustReadFile("templates/example.tmpl")) From 70cb6ffb45bd8a39365b4da3ae4a23488a0a1038 Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Fri, 7 Jun 2019 06:26:27 -0700 Subject: [PATCH 6/7] Add printout when sending a request to play.golang.org --- tools/generate.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/generate.go b/tools/generate.go index 4872b3b..51b4a04 100644 --- a/tools/generate.go +++ b/tools/generate.go @@ -143,6 +143,9 @@ func parseHashFile(sourcePath string) (string, string) { } func resetURLHashFile(codehash, code, sourcePath string) string { + if verbose() { + fmt.Println(" Sending request to play.golang.org") + } payload := strings.NewReader(code) resp, err := http.Post("https://play.golang.org/share", "text/plain", payload) if err != nil { From bee52f22ce5faaef01bb4318220ad3b7dc787b65 Mon Sep 17 00:00:00 2001 From: Mark McGranaghan Date: Sat, 8 Jun 2019 11:21:40 -0400 Subject: [PATCH 7/7] Change word --- tools/generate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/generate.go b/tools/generate.go index 51b4a04..97d8ab5 100644 --- a/tools/generate.go +++ b/tools/generate.go @@ -288,7 +288,7 @@ func renderIndex(examples []*Example) { func renderExamples(examples []*Example) { if verbose() { - fmt.Println("Rendering templates") + fmt.Println("Rendering examples") } exampleTmpl := template.New("example") _, err := exampleTmpl.Parse(mustReadFile("templates/example.tmpl"))