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..f06beae 100755 --- a/tools/build +++ b/tools/build @@ -2,7 +2,18 @@ set -e +verbose() { + ! test -z "$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..97d8ab5 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) @@ -139,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 { @@ -221,37 +228,43 @@ func parseAndRenderSegs(sourcePath string) ([]*Seg, string) { } func parseExamples() []*Example { - 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] @@ -261,6 +274,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) @@ -271,6 +287,9 @@ func renderIndex(examples []*Example) { } func renderExamples(examples []*Example) { + if verbose() { + fmt.Println("Rendering examples") + } exampleTmpl := template.New("example") _, err := exampleTmpl.Parse(mustReadFile("templates/example.tmpl")) check(err)