Skip to content
This repository was archived by the owner on Nov 12, 2024. It is now read-only.

Commit a904c34

Browse files
authored
feat: add more graphs (gno, and ecosystem) (#26)
1 parent 4154998 commit a904c34

File tree

4 files changed

+56
-15
lines changed

4 files changed

+56
-15
lines changed

.github/workflows/generate.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ jobs:
5656
- run: make fetch
5757
env:
5858
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
59-
- run: make output/roadmap.json
59+
- run: make gen-json
6060
- run: make gen-image
6161

6262
- run: git rm -f .gitignore

CONTRIBUTING.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ If you're working on the graph rendering, I recommend focusing solely on the `ge
1010

1111
You can use the following command which offers fast automatic preview (tested on Mac):
1212

13-
find . | entr -c sh -xec "make gen-image && open output/roadmap.svg".
13+
find . | entr -c sh -xec "rm -f output/*.svg; *make gen-image && open output/roadmap.svg".

Makefile

+32-11
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,40 @@
11
all: fetch gen-image
22

3-
fetch:
4-
go run moul.io/depviz/v3/cmd/depviz --store-path=output/ fetch -github-token=${GITHUB_TOKEN} gnolang/roadmap
3+
fetch: output/indexes.bolt
4+
gen-image: output/roadmap.svg output/roadmap.png output/gno.svg output/gno.png output/ecosystem.svg output/ecosystem.png
55

6-
output/roadmap.json:
6+
clean:
7+
rm -f output/*.json
8+
9+
fclean:
10+
rm -rf output/
11+
12+
## Advancedrules
13+
14+
gen-json: output/roadmap.json output/gno.json output/ecosystem.json
15+
gen-dots: output/roadmap.dot output/gno.dot output/ecosystem.dot
16+
17+
# depviz database, shared between repos
18+
output/indexes.bolt:
19+
go run moul.io/depviz/v3/cmd/depviz --store-path=output/ fetch -github-token=${GITHUB_TOKEN} gnolang/roadmap gnolang/gno gnolang/awesome-gno
20+
21+
# per-flavor rules
22+
output/roadmap.json: output/indexes.bolt
723
go run moul.io/depviz/v3/cmd/depviz --store-path=output/ gen json gnolang/roadmap > $@.tmp
824
@mv $@.tmp $@
25+
output/gno.json: output/indexes.bolt
26+
go run moul.io/depviz/v3/cmd/depviz --store-path=output/ gen json gnolang/gno > $@.tmp
27+
@mv $@.tmp $@
28+
output/ecosystem.json: output/indexes.bolt
29+
go run moul.io/depviz/v3/cmd/depviz --store-path=output/ gen json gnolang/gno gnolang/roadmap gnolang/awesome-gno > $@.tmp
30+
@mv $@.tmp $@
931

10-
gen-image: output/roadmap.json
11-
go run ./gen-graph
12-
dot -Tpng output/roadmap.dot > output/roadmap.png
13-
dot -Tsvg output/roadmap.dot > output/roadmap.svg
32+
# generic conversions
33+
%.dot: %.json
34+
go run ./gen-graph -i $< -o $@
1435

15-
clean:
16-
rm -f output/roadmap.json
36+
%.svg: %.dot
37+
dot -Tsvg $< > $@
1738

18-
fclean:
19-
rm -rf output/
39+
%.png: %.dot
40+
dot -Tpng $< > $@

gen-graph/main.go

+22-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package main
22

33
import (
44
"bytes"
5+
"flag"
56
"fmt"
67
"io/ioutil"
8+
"log"
79
"strings"
810
"time"
911

@@ -15,7 +17,15 @@ import (
1517
)
1618

1719
func main() {
18-
file, err := ioutil.ReadFile("output/roadmap.json")
20+
var (
21+
inputFile string
22+
outputFile string
23+
)
24+
flag.StringVar(&inputFile, "i", "output/roadmap.json", "input file (.json)")
25+
flag.StringVar(&outputFile, "o", "output/roadmap.dot", "output file (.dot)")
26+
flag.Parse()
27+
28+
file, err := ioutil.ReadFile(inputFile)
1929
checkErr(err)
2030
var roadmapFile dvmodel.Batch
2131
var u jsonpb.Unmarshaler
@@ -71,6 +81,11 @@ func main() {
7181
for _, task := range roadmap {
7282
for _, dependentID := range task.IsBlocking {
7383
dependent := roadmap[dependentID.String()]
84+
if dependent == nil {
85+
log.Printf("invalid dependent: %q -> %q", task.ID.String(), dependentID)
86+
// TODO: create "404" red block
87+
continue
88+
}
7489
name := task.ID.String() + dependent.ID.String()
7590
edge, err := graph.CreateEdge(name, nodes[task.ID.String()], nodes[dependent.ID.String()])
7691
checkErr(err)
@@ -79,6 +94,11 @@ func main() {
7994
}
8095
for _, dependingID := range task.IsDependingOn {
8196
depending := roadmap[dependingID.String()]
97+
if depending == nil {
98+
log.Printf("invalid depending: %q -> %q", task.ID.String(), dependingID)
99+
// TODO: create "404" red block
100+
continue
101+
}
82102
name := depending.ID.String() + task.ID.String()
83103
edge, err := graph.CreateEdge(name, nodes[depending.ID.String()], nodes[task.ID.String()])
84104
checkErr(err)
@@ -87,7 +107,7 @@ func main() {
87107
}
88108
}
89109

90-
checkErr(g.RenderFilename(graph, graphviz.XDOT, "output/roadmap.dot"))
110+
checkErr(g.RenderFilename(graph, graphviz.XDOT, outputFile))
91111
}
92112

93113
func taskLabelExists(t *dvmodel.Task, label string) bool {

0 commit comments

Comments
 (0)