diff --git a/handlers/badge.go b/handlers/badge.go
index be332c0..338e000 100644
--- a/handlers/badge.go
+++ b/handlers/badge.go
@@ -57,8 +57,8 @@ func badgeURL(grade Grade) string {
}
// BadgeHandler handles fetching the badge images
-func BadgeHandler(w http.ResponseWriter, r *http.Request, org, repo string) {
- name := fmt.Sprintf("%s/%s", org, repo)
+func BadgeHandler(w http.ResponseWriter, r *http.Request, repo string) {
+ name := fmt.Sprintf("%s", repo)
resp, err := newChecksResp(name, false)
if err != nil {
log.Printf("ERROR: fetching badge for %s: %v", name, err)
diff --git a/handlers/check.go b/handlers/check.go
index 71a85b0..09d528a 100644
--- a/handlers/check.go
+++ b/handlers/check.go
@@ -30,6 +30,16 @@ func CheckHandler(w http.ResponseWriter, r *http.Request) {
repo := r.FormValue("repo")
log.Printf("Checking repo %s...", repo)
+
+ // repoRoot, err := vcs.RepoRootForImportPath(repo, true)
+ // if err != nil {
+ // log.Println("ERROR:", err)
+ // http.Error(w, err.Error(), 404)
+ // return
+ // }
+ // repo = repoRoot.Root
+ // log.Println("RepoRootForImportPath:", repo)
+
if strings.ToLower(repo) == "golang/go" {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte("We've decided to omit results for the Go repository because it has lots of test files that (purposely) don't pass our checks. Go gets an A+ in our books though!"))
@@ -38,7 +48,7 @@ func CheckHandler(w http.ResponseWriter, r *http.Request) {
forceRefresh := r.Method != "GET" // if this is a GET request, try to fetch from cached version in boltdb first
resp, err := newChecksResp(repo, forceRefresh)
if err != nil {
- log.Println("ERROR: ", err)
+ log.Println("ERROR: from newChecksResp: ", err)
b, _ := json.Marshal(err)
w.WriteHeader(http.StatusInternalServerError)
w.Write(b)
diff --git a/handlers/checks.go b/handlers/checks.go
index 7d2f290..9e9ca57 100644
--- a/handlers/checks.go
+++ b/handlers/checks.go
@@ -8,13 +8,16 @@ import (
"os"
"os/exec"
"path/filepath"
- "strings"
"time"
"github.com/boltdb/bolt"
"github.com/gojp/goreportcard/check"
)
+func dirName(repo string) string {
+ return fmt.Sprintf("repos/src/%s", repo)
+}
+
func getFromCache(repo string) (checksResp, error) {
// try and fetch from boltdb
db, err := bolt.Open(DBPath, 0600, &bolt.Options{Timeout: 1 * time.Second})
@@ -67,24 +70,11 @@ type checksResp struct {
LastRefresh time.Time `json:"last_refresh"`
}
-func orgRepoNames(url string) (string, string) {
- dir := strings.TrimSuffix(url, ".git")
- split := strings.Split(dir, "/")
- org := split[len(split)-2]
- repoName := split[len(split)-1]
-
- return org, repoName
-}
-
-func dirName(url string) string {
- org, repoName := orgRepoNames(url)
-
- return fmt.Sprintf("repos/src/github.com/%s/%s", org, repoName)
-}
-
-func clone(url string) error {
- org, _ := orgRepoNames(url)
- if err := os.Mkdir(fmt.Sprintf("repos/src/github.com/%s", org), 0755); err != nil && !os.IsExist(err) {
+func goGet(repo string) error {
+ log.Println("Go getting", repo, "...")
+ dir := dirName(repo)
+ log.Println("dirName is", dir)
+ if err := os.Mkdir("repos", 0755); err != nil && !os.IsExist(err) {
return fmt.Errorf("could not create dir: %v", err)
}
d, err := filepath.Abs("repos")
@@ -92,40 +82,24 @@ func clone(url string) error {
return fmt.Errorf("could not fetch absolute path: %v", err)
}
os.Setenv("GOPATH", d)
- dir := dirName(url)
_, err = os.Stat(dir)
if os.IsNotExist(err) {
- cmd := exec.Command("go", "get", "-u", url)
+ cmd := exec.Command("go", "get", "-d", repo)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
return fmt.Errorf("could not run go get: %v", err)
}
-
return nil
}
if err != nil {
return fmt.Errorf("could not stat dir: %v", err)
}
- // cmd := exec.Command("git", "-C", dir, "fetch", "origin", "master")
- // if err := cmd.Run(); err != nil {
- // return fmt.Errorf("could not fetch master branch: %v", err)
- // }
- // cmd = exec.Command("git", "-C", dir, "reset", "--hard", "origin/master")
- // if err = cmd.Run(); err != nil {
- // return fmt.Errorf("could not reset origin/master: %v", err)
- // }
-
return nil
}
func newChecksResp(repo string, forceRefresh bool) (checksResp, error) {
- url := repo
- if strings.Count(repo, ".") == 0 {
- url = "github.com/" + url
- }
-
if !forceRefresh {
resp, err := getFromCache(repo)
if err != nil {
@@ -138,12 +112,12 @@ func newChecksResp(repo string, forceRefresh bool) (checksResp, error) {
}
// fetch the repo and grade it
- err := clone(url)
+ err := goGet(repo)
if err != nil {
return checksResp{}, fmt.Errorf("could not clone repo: %v", err)
}
- dir := dirName(url)
+ dir := dirName(repo)
filenames, err := check.GoFiles(dir)
if err != nil {
return checksResp{}, fmt.Errorf("could not get filenames: %v", err)
diff --git a/handlers/report.go b/handlers/report.go
index 19b043c..7fe2fd6 100644
--- a/handlers/report.go
+++ b/handlers/report.go
@@ -3,6 +3,6 @@ package handlers
import "net/http"
// ReportHandler handles the report page
-func ReportHandler(w http.ResponseWriter, r *http.Request, org, repo string) {
+func ReportHandler(w http.ResponseWriter, r *http.Request, repo string) {
http.ServeFile(w, r, "templates/home.html")
}
diff --git a/main.go b/main.go
index cfaf992..8037eea 100644
--- a/main.go
+++ b/main.go
@@ -12,9 +12,9 @@ import (
"github.com/gojp/goreportcard/handlers"
)
-func makeHandler(name string, fn func(http.ResponseWriter, *http.Request, string, string)) http.HandlerFunc {
+func makeHandler(name string, fn func(http.ResponseWriter, *http.Request, string)) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
- validPath := regexp.MustCompile(fmt.Sprintf(`^/%s/([a-zA-Z0-9\-_]+)/([a-zA-Z0-9\-_.]+)$`, name))
+ validPath := regexp.MustCompile(fmt.Sprintf(`^/%s/([a-zA-Z0-9\-_\/\.]+)$`, name))
m := validPath.FindStringSubmatch(r.URL.Path)
@@ -23,13 +23,7 @@ func makeHandler(name string, fn func(http.ResponseWriter, *http.Request, string
return
}
- // catch the special period cases that github does not allow for repos
- if m[2] == "." || m[2] == ".." {
- http.NotFound(w, r)
- return
- }
-
- fn(w, r, m[1], m[2])
+ fn(w, r, m[1])
}
}
diff --git a/templates/home.html b/templates/home.html
index e8c4a6b..be9f515 100644
--- a/templates/home.html
+++ b/templates/home.html
@@ -211,7 +211,7 @@