Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2255162

Browse files
committed
add codersdk autogen
1 parent9bd101d commit2255162

File tree

6 files changed

+76
-98
lines changed

6 files changed

+76
-98
lines changed

‎Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,7 @@ gen: \
486486
$(DB_GEN_FILES)\
487487
site/src/api/typesGenerated.ts\
488488
coderd/rbac/object_gen.go\
489+
codersdk/rbacresources_gen.go\
489490
docs/admin/prometheus.md\
490491
docs/cli.md\
491492
docs/admin/audit-logs.md\
@@ -611,7 +612,10 @@ examples/examples.gen.json: scripts/examplegen/main.go examples/examples.go $(sh
611612
go run ./scripts/examplegen/main.go> examples/examples.gen.json
612613

613614
coderd/rbac/object_gen.go: scripts/rbacgen/main.go coderd/rbac/object.go
614-
go run scripts/rbacgen/main.go ./coderd/rbac> coderd/rbac/object_gen.go
615+
go run scripts/rbacgen/main.go rbac> coderd/rbac/object_gen.go
616+
617+
codersdk/rbacresources_gen.go: scripts/rbacgen/main.go coderd/rbac/object.go
618+
go run scripts/rbacgen/main.go codersdk> codersdk/rbacresources_gen.go
615619

616620
docs/admin/prometheus.md: scripts/metricsdocgen/main.go scripts/metricsdocgen/metrics
617621
go run scripts/metricsdocgen/main.go

‎coderd/rbac/object_gen.go

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎codersdk/rbacresources.go

Lines changed: 0 additions & 77 deletions
This file was deleted.

‎scripts/rbacgen/codersdk.gotmpl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Code generated by rbacgen/main.go. DO NOT EDIT.
2+
package codersdk
3+
4+
type RBACResource string
5+
6+
const (
7+
{{- range $element := . }}
8+
Resource{{ pascalCaseName $element.FunctionName }} RBACResource = "{{ $element.Type }}"
9+
{{- end }}
10+
)
11+
12+
const (
13+
{{- range $element := actionsList }}
14+
{{ $element.Enum }} = "{{ $element.Value }}"
15+
{{- end }}
16+
)

‎scripts/rbacgen/main.go

Lines changed: 49 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package main
22

33
import (
44
"bytes"
5-
"context"
65
_"embed"
76
"errors"
7+
"flag"
88
"fmt"
99
"go/ast"
1010
"go/format"
@@ -19,17 +19,41 @@ import (
1919
"github.com/coder/coder/v2/coderd/rbac/policy"
2020
)
2121

22-
//go:embed object.gotmpl
23-
varobjectGoTplstring
22+
//go:embed rbacobject.gotmpl
23+
varrbacObjectTemplatestring
24+
25+
//go:embed codersdk.gotmpl
26+
varcodersdkTemplatestring
27+
28+
funcusage() {
29+
_,_=fmt.Println("Usage: rbacgen <codersdk|rbac>")
30+
_,_=fmt.Println("Must choose a template target.")
31+
}
2432

2533
// main will generate a file that lists all rbac objects.
2634
// This is to provide an "AllResources" function that is always
2735
// in sync.
2836
funcmain() {
29-
ctx,cancel:=context.WithCancel(context.Background())
30-
defercancel()
37+
flag.Parse()
38+
39+
iflen(flag.Args())<1 {
40+
usage()
41+
os.Exit(1)
42+
}
43+
44+
varsourcestring
45+
switchstrings.ToLower(flag.Args()[0]) {
46+
case"codersdk":
47+
source=codersdkTemplate
48+
case"rbac":
49+
source=rbacObjectTemplate
50+
default:
51+
_,_=fmt.Fprintln(os.Stderr,fmt.Sprintf("%q is not a valid templte target",flag.Args()[0]))
52+
usage()
53+
os.Exit(2)
54+
}
3155

32-
out,err:=generate(ctx)
56+
out,err:=generateRbacObjects(source)
3357
iferr!=nil {
3458
log.Fatalf("Generate source: %s",err.Error())
3559
}
@@ -108,25 +132,36 @@ fileDeclLoop:
108132
returnactions
109133
}
110134

111-
funcgenerate(ctx context.Context) ([]byte,error) {
135+
typeActionDetailsstruct {
136+
Enumstring
137+
Valuestring
138+
}
139+
140+
funcgenerateRbacObjects(templateSourcestring) ([]byte,error) {
112141
// Parse the policy.go file for the action enums
113142
f,err:=parser.ParseFile(token.NewFileSet(),"./coderd/rbac/policy/policy.go",nil,parser.ParseComments)
114143
iferr!=nil {
115144
returnnil,fmt.Errorf("parsing policy.go: %w",err)
116145
}
117146
actionMap:=fileActions(f)
147+
actionList:=make([]ActionDetails,0)
148+
forvalue,enum:=rangeactionMap {
149+
actionList=append(actionList,ActionDetails{
150+
Enum:enum,
151+
Value:value,
152+
})
153+
}
154+
slices.SortFunc(actionList,func(a,bActionDetails)int {
155+
returnstrings.Compare(a.Enum,b.Enum)
156+
})
118157

119158
varerrorList []error
120159
varxint
121160
tpl,err:=template.New("object.gotmpl").Funcs(template.FuncMap{
122161
"capitalize":capitalize,
123162
"pascalCaseName":pascalCaseName[string],
124-
"actionsList":func() []string {
125-
tmp:=make([]string,0)
126-
for_,actionEnum:=rangeactionMap {
127-
tmp=append(tmp,actionEnum)
128-
}
129-
returntmp
163+
"actionsList":func() []ActionDetails {
164+
returnactionList
130165
},
131166
"actionEnum":func(action policy.Action)string {
132167
x++
@@ -137,7 +172,7 @@ func generate(ctx context.Context) ([]byte, error) {
137172
returnv
138173
},
139174
"concat":func(strs...string)string {returnstrings.Join(strs,"") },
140-
}).Parse(objectGoTpl)
175+
}).Parse(templateSource)
141176
iferr!=nil {
142177
returnnil,fmt.Errorf("parse template: %w",err)
143178
}

‎scripts/rbacgen/object.gotmplrenamed to‎scripts/rbacgen/rbacobject.gotmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func AllResources() []Objecter {
3333
func AllActions() []policy.Action {
3434
return []policy.Action {
3535
{{- range $element := actionsList }}
36-
policy.{{ $element }},
36+
policy.{{ $element.Enum }},
3737
{{- end }}
3838
}
3939
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp