Repository: incubator-htrace Updated Branches: refs/heads/master e77266210 -> 6c8e0dea6
HTRACE-122. Remove bundler Project: http://git-wip-us.apache.org/repos/asf/incubator-htrace/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-htrace/commit/6c8e0dea Tree: http://git-wip-us.apache.org/repos/asf/incubator-htrace/tree/6c8e0dea Diff: http://git-wip-us.apache.org/repos/asf/incubator-htrace/diff/6c8e0dea Branch: refs/heads/master Commit: 6c8e0dea63395dfe4171ff652ab173377dceb06a Parents: e772662 Author: Abraham Elmahrek <[email protected]> Authored: Fri Feb 27 11:33:09 2015 -0800 Committer: Abraham Elmahrek <[email protected]> Committed: Fri Feb 27 12:59:43 2015 -0800 ---------------------------------------------------------------------- htrace-core/src/go/gobuild.sh | 3 - .../go/src/org/apache/htrace/bundler/bundler.go | 231 ------------------- .../go/src/org/apache/htrace/htraced/rest.go | 13 +- 3 files changed, 12 insertions(+), 235 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/6c8e0dea/htrace-core/src/go/gobuild.sh ---------------------------------------------------------------------- diff --git a/htrace-core/src/go/gobuild.sh b/htrace-core/src/go/gobuild.sh index 91cefbf..40cb4bf 100755 --- a/htrace-core/src/go/gobuild.sh +++ b/htrace-core/src/go/gobuild.sh @@ -95,9 +95,6 @@ install) # Download dependencies into the build directory. echo "godep restore..." godep restore || die "failed to set up dependencies" - go run "$SCRIPT_DIR/src/org/apache/htrace/bundler/bundler.go" \ - --src="$SCRIPT_DIR/../web/" --dst="$SCRIPT_DIR/src/org/apache/htrace/resource/" \ - || die "bundler failed" # Discover the git version GIT_VERSION=$(git rev-parse HEAD) http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/6c8e0dea/htrace-core/src/go/src/org/apache/htrace/bundler/bundler.go ---------------------------------------------------------------------- diff --git a/htrace-core/src/go/src/org/apache/htrace/bundler/bundler.go b/htrace-core/src/go/src/org/apache/htrace/bundler/bundler.go deleted file mode 100644 index 11c3292..0000000 --- a/htrace-core/src/go/src/org/apache/htrace/bundler/bundler.go +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package main - -// -// The bundler turns files into resources contained in go code. -// -// This is useful for serving HTML and Javascript files from a self-contained binary. -// - -import ( - "bufio" - "flag" - "fmt" - "io/ioutil" - "log" - "os" - "path/filepath" - "strings" -) - -const APACHE_HEADER = `/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -` - -const GENERATED_CODE_COMMENT = "// THIS IS GENERATED CODE. DO NOT EDIT." - -var SEP string = string(os.PathSeparator) - -// Return true if a file contains a given string. -func fileContainsString(path, line string) (bool, error) { - file, err := os.Open(path) - if err != nil { - return false, err - } - defer file.Close() - scanner := bufio.NewScanner(file) - for scanner.Scan() { - if strings.Contains(scanner.Text(), line) { - return true, nil - } - } - if err := scanner.Err(); err != nil { - return false, err - } - return false, nil -} - -// Converts a source file path to a destination file path -func sfileToDfile(sfile string) string { - return strings.Replace(sfile, SEP, "__", -1) + ".go" -} - -// Delete generated files that are in dfiles but not sfiles. -// sfiles and dfiles must be sorted by file name. -func deleteUnusedDst(sfiles []string, dst string, dfiles []os.FileInfo) error { - s := 0 - for d := range dfiles { - fullDst := dst + SEP + dfiles[d].Name() - generated, err := fileContainsString(fullDst, GENERATED_CODE_COMMENT) - if err != nil { - return err - } - if !generated { - // Skip this destination file, since it is not generated. - continue - } - found := false - for { - if s >= len(sfiles) { - break - } - tgt := sfileToDfile(sfiles[s]) - if tgt == dfiles[d].Name() { - found = true - break - } - if tgt > dfiles[d].Name() { - break - } - s++ - } - if !found { - log.Printf("Removing %s\n", fullDst) - err := os.Remove(fullDst) - if err != nil { - return err - } - } - } - return nil -} - -func createBundleFile(pkg, src, sfile, dst string) error { - // Open destination file and write header. - tgt := sfileToDfile(sfile) - fullDst := dst + SEP + tgt - out, err := os.Create(fullDst) - if err != nil { - return err - } - defer out.Close() - _, err = out.WriteString(APACHE_HEADER) - if err != nil { - return err - } - _, err = out.WriteString("\n" + GENERATED_CODE_COMMENT + "\n") - if err != nil { - return err - } - _, err = out.WriteString(fmt.Sprintf("\npackage %s\n", pkg)) - if err != nil { - return err - } - _, err = out.WriteString(fmt.Sprintf("var _ = addResource(\"%s\", `\n", tgt[:len(tgt)-3])) - if err != nil { - return err - } - - // Open source file and create scanner. - fullSrc := src + SEP + sfile - in, err := os.Open(fullSrc) - if err != nil { - return err - } - defer in.Close() - reader := bufio.NewReader(in) - scanner := bufio.NewScanner(reader) - for scanner.Scan() { - str := strings.Replace(scanner.Text(), "`", "` + \"`\" + `", -1) + "\n" - // Avoid "Unicode (UTF-8) BOM in middle of file" error. - str = strings.Replace(str, "\uFEFF", "` + \"\\uFEFF\" + `", -1) - _, err := out.WriteString(str) - if err != nil { - return err - } - } - _, err = out.WriteString("`)\n") - if err != nil { - return err - } - err = out.Close() - if err != nil { - return err - } - return nil -} - -var src = flag.String("src", "", "Source path for bundled resources.") -var dst = flag.String("dst", "", "Destination path for bundled resources.") -var pkg = flag.String("pkg", "resource", "Package name to use for bundled resources") - -func main() { - flag.Parse() - if *src == "" { - log.Fatal("You must supply a src directory to bundle.") - } - if *dst == "" { - log.Fatal("You must supply a dst directory for output.") - } - sfiles := make([]string, 0, 32) - absSrc, err := filepath.Abs(filepath.Clean(*src)) - if err != nil { - log.Fatalf("Error getting absolute path for %s: %s\n", *src, err.Error()) - } - err = filepath.Walk(absSrc, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - if info.IsDir() { - return nil - } - var suffix string - suffix, err = filepath.Rel(absSrc, path) - if err != nil { - return err - } - sfiles = append(sfiles, suffix) - return nil - }) - if err != nil { - log.Fatalf("Error listing files in src directory %s: %s\n", absSrc, err.Error()) - } - var dfiles []os.FileInfo - dfiles, err = ioutil.ReadDir(*dst) - if err != nil { - log.Fatalf("Error listing files in output directory %s: %s\n", *dst, err.Error()) - } - deleteUnusedDst(sfiles, *dst, dfiles) - for s := range sfiles { - err = createBundleFile(*pkg, absSrc, sfiles[s], *dst) - if err != nil { - log.Fatalf("Error creating bundle file for %s in %s: %s\n", - sfiles[s], *dst, err.Error()) - } - log.Printf("Bundled %s as %s\n", absSrc, *dst+SEP+sfileToDfile(sfiles[s])) - } -} http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/6c8e0dea/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go ---------------------------------------------------------------------- diff --git a/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go b/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go index dc9a061..58486f1 100644 --- a/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go +++ b/htrace-core/src/go/src/org/apache/htrace/htraced/rest.go @@ -31,6 +31,7 @@ import ( "org/apache/htrace/common" "org/apache/htrace/conf" "org/apache/htrace/resource" + "os" "path/filepath" "strconv" "strings" @@ -292,7 +293,17 @@ func CreateRestServer(cnf *conf.Config, store *dataStore) (*RestServer, error) { span.Handle("/{id}/children", findChildrenH).Methods("GET") // Default Handler. This will serve requests for static requests. - r.PathPrefix("/").Handler(&defaultServeHandler{lg: rsv.lg}).Methods("GET") + webdir := os.Getenv("HTRACED_WEB_DIR") + if webdir == "" { + webdir, err = filepath.Abs(filepath.Join(filepath.Dir(os.Args[0]), "..", "..", "web")) + + if err != nil { + return nil, err + } + } + + rsv.lg.Infof("Serving static files from %s\n.", webdir) + r.PathPrefix("/").Handler(http.FileServer(http.Dir(webdir))).Methods("GET") // Log an error message for unknown non-GET requests. r.PathPrefix("/").Handler(&logErrorHandler{lg: rsv.lg})
