Migration
This is my new public git source viewer. Source coming soon. Please contact with concerns/bugs.
Contact me
internal/site/routes.go
c0427d5fc7c0fcf8606c546071085e8af231fb81
· 2.4 KB · 74 lines
raw
| 1 | // Package site is the route table: the one file you edit when adding a |
| 2 | // page or an endpoint. Modules are the "what", routes are the "where". |
| 3 | package site |
| 4 | |
| 5 | import ( |
| 6 | "gsg/internal/api" |
| 7 | "gsg/internal/core" |
| 8 | ) |
| 9 | |
| 10 | func Routes() []core.Route { |
| 11 | return []core.Route{ |
| 12 | // ---- site-scoped ------------------------------------------------- |
| 13 | {Name: "index", Scope: core.ScopeSite, |
| 14 | Pattern: "GET /{$}", |
| 15 | Render: core.View{Template: "index.html"}}, |
| 16 | |
| 17 | {Name: "api-index", Scope: core.ScopeSite, |
| 18 | Pattern: "GET /api/repos.json", |
| 19 | Render: core.JSON{Build: api.IndexEndpoint}}, |
| 20 | |
| 21 | // ---- per repository ---------------------------------------------- |
| 22 | // NavLabel order below is the order tabs appear in the repo-scoped |
| 23 | // nav (top bar and page-nav chips) -- see core.BuildNav. |
| 24 | {Name: "repo", |
| 25 | Pattern: "GET /{repo}/{$}", |
| 26 | Render: core.View{Template: "tree.html"}}, |
| 27 | |
| 28 | {Name: "api-repo", |
| 29 | Pattern: "GET /{repo}/api/repo.json", |
| 30 | Render: core.JSON{Build: api.RepoEndpoint}}, |
| 31 | |
| 32 | // {rest...} fuses ref and path; SplitRefPath separates them by |
| 33 | // longest-matching ref, so feature/x/src/main.go works. |
| 34 | {Name: "tree", NavLabel: "files", |
| 35 | Pattern: "GET /{repo}/tree/{rest...}", |
| 36 | Render: core.View{Template: "tree.html"}}, |
| 37 | |
| 38 | {Name: "log", NavLabel: "log", |
| 39 | Pattern: "GET /{repo}/log/{rest...}", |
| 40 | Render: core.View{Template: "log.html"}}, |
| 41 | |
| 42 | {Name: "blob", |
| 43 | Pattern: "GET /{repo}/blob/{rest...}", |
| 44 | Render: core.View{Template: "blob.html"}}, |
| 45 | |
| 46 | // Actual file bytes. See core.Raw for why this is not text/html. |
| 47 | {Name: "raw", |
| 48 | Pattern: "GET /{repo}/raw/{rest...}", |
| 49 | Render: core.Raw{Module: "blobraw"}}, |
| 50 | |
| 51 | // The DAG across every ref. |
| 52 | {Name: "graph", NavLabel: "graph", |
| 53 | Pattern: "GET /{repo}/graph/{$}", |
| 54 | Render: core.View{Template: "graph.html"}}, |
| 55 | |
| 56 | {Name: "refs", NavLabel: "refs", |
| 57 | Pattern: "GET /{repo}/refs/{$}", |
| 58 | Render: core.View{Template: "refs.html"}}, |
| 59 | |
| 60 | // Arbitrary two-commit diff: /demo/compare/main...feature |
| 61 | {Name: "compare", |
| 62 | Pattern: "GET /{repo}/compare/{range}", |
| 63 | Render: core.View{Template: "compare.html"}}, |
| 64 | |
| 65 | // SHA-addressed: content can never change, so cache forever. |
| 66 | {Name: "commit", Immutable: true, |
| 67 | Pattern: "GET /{repo}/commit/{rev}", |
| 68 | Render: core.View{Template: "commit.html"}}, |
| 69 | |
| 70 | {Name: "api-commit", Immutable: true, |
| 71 | Pattern: "GET /{repo}/api/commit/{rev}", |
| 72 | Render: core.JSON{Build: api.CommitEndpoint}}, |
| 73 | } |
| 74 | } |