Merge branch 'buildprogress'
This commit is contained in:
commit
bab32db83f
@ -12,4 +12,7 @@ install:
|
|||||||
- go get -u github.com/russross/blackfriday
|
- go get -u github.com/russross/blackfriday
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- 'tools/build'
|
- tools/build
|
||||||
|
|
||||||
|
env:
|
||||||
|
- VERBOSE=1
|
||||||
|
11
tools/build
11
tools/build
@ -2,7 +2,18 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
verbose() {
|
||||||
|
! test -z "$VERBOSE"
|
||||||
|
}
|
||||||
|
|
||||||
|
verbose && echo "Running tests..."
|
||||||
tools/test
|
tools/test
|
||||||
|
|
||||||
|
verbose && echo "Formatting code..."
|
||||||
tools/format
|
tools/format
|
||||||
|
|
||||||
|
verbose && echo "Measuring line lengths..."
|
||||||
tools/measure
|
tools/measure
|
||||||
|
|
||||||
|
verbose && echo "Generating HTML..."
|
||||||
tools/generate
|
tools/generate
|
||||||
|
@ -19,6 +19,10 @@ var cacheDir = "/tmp/gobyexample-cache"
|
|||||||
var siteDir = "./public"
|
var siteDir = "./public"
|
||||||
var pygmentizeBin = "./vendor/pygments/pygmentize"
|
var pygmentizeBin = "./vendor/pygments/pygmentize"
|
||||||
|
|
||||||
|
func verbose() bool {
|
||||||
|
return len(os.Getenv("VERBOSE")) > 0
|
||||||
|
}
|
||||||
|
|
||||||
func check(err error) {
|
func check(err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@ -139,6 +143,9 @@ func parseHashFile(sourcePath string) (string, string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func resetURLHashFile(codehash, code, sourcePath string) string {
|
func resetURLHashFile(codehash, code, sourcePath string) string {
|
||||||
|
if verbose() {
|
||||||
|
fmt.Println(" Sending request to play.golang.org")
|
||||||
|
}
|
||||||
payload := strings.NewReader(code)
|
payload := strings.NewReader(code)
|
||||||
resp, err := http.Post("https://play.golang.org/share", "text/plain", payload)
|
resp, err := http.Post("https://play.golang.org/share", "text/plain", payload)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -221,37 +228,43 @@ func parseAndRenderSegs(sourcePath string) ([]*Seg, string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func parseExamples() []*Example {
|
func parseExamples() []*Example {
|
||||||
exampleNames := readLines("examples.txt")
|
var exampleNames []string
|
||||||
examples := make([]*Example, 0)
|
for _, line := range readLines("examples.txt") {
|
||||||
for _, exampleName := range exampleNames {
|
if line != "" && !strings.HasPrefix(line, "#") {
|
||||||
if (exampleName != "") && !strings.HasPrefix(exampleName, "#") {
|
exampleNames = append(exampleNames, line)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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 {
|
for i, example := range examples {
|
||||||
if i < (len(examples) - 1) {
|
if i < (len(examples) - 1) {
|
||||||
example.NextExample = examples[i+1]
|
example.NextExample = examples[i+1]
|
||||||
@ -261,6 +274,9 @@ func parseExamples() []*Example {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func renderIndex(examples []*Example) {
|
func renderIndex(examples []*Example) {
|
||||||
|
if verbose() {
|
||||||
|
fmt.Println("Rendering index")
|
||||||
|
}
|
||||||
indexTmpl := template.New("index")
|
indexTmpl := template.New("index")
|
||||||
_, err := indexTmpl.Parse(mustReadFile("templates/index.tmpl"))
|
_, err := indexTmpl.Parse(mustReadFile("templates/index.tmpl"))
|
||||||
check(err)
|
check(err)
|
||||||
@ -271,6 +287,9 @@ func renderIndex(examples []*Example) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func renderExamples(examples []*Example) {
|
func renderExamples(examples []*Example) {
|
||||||
|
if verbose() {
|
||||||
|
fmt.Println("Rendering examples")
|
||||||
|
}
|
||||||
exampleTmpl := template.New("example")
|
exampleTmpl := template.New("example")
|
||||||
_, err := exampleTmpl.Parse(mustReadFile("templates/example.tmpl"))
|
_, err := exampleTmpl.Parse(mustReadFile("templates/example.tmpl"))
|
||||||
check(err)
|
check(err)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user