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

Commita95194e

Browse files
committed
support variadic types
1 parent9e68769 commita95194e

File tree

2 files changed

+23
-21
lines changed

2 files changed

+23
-21
lines changed

‎coderd/audit/audit_gen.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
set -euo pipefail
44

55
cd"$(git rev-parse --show-toplevel)"
6-
go run ./scripts/auditgen ./coderd/database"$1"
6+
go run ./scripts/auditgen ./coderd/database"$@"

‎scripts/auditgen/main.go

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
funcmain() {
2020
ctx:=context.Background()
2121
log:=slog.Make(sloghuman.Sink(os.Stderr))
22-
code,err:=GenerateFromDirectory(ctx,os.Args[1],os.Args[2])
22+
code,err:=GenerateFromDirectory(ctx,os.Args[1],os.Args[2:]...)
2323
iferr!=nil {
2424
log.Fatal(ctx,"generate",slog.Error(err))
2525
}
@@ -28,14 +28,14 @@ func main() {
2828
}
2929

3030
// GenerateFromDirectory will return all the typescript code blocks for a directory
31-
funcGenerateFromDirectory(ctx context.Context,directory,typNamestring) (string,error) {
31+
funcGenerateFromDirectory(ctx context.Context,directorystring,typeNames...string) (string,error) {
3232
g:=Generator{}
3333
err:=g.parsePackage(ctx,directory)
3434
iferr!=nil {
3535
return"",xerrors.Errorf("parse package %q: %w",directory,err)
3636
}
3737

38-
str,err:=g.generate(typName)
38+
str,err:=g.generate(typeNames...)
3939
iferr!=nil {
4040
return"",xerrors.Errorf("parse package %q: %w",directory,err)
4141
}
@@ -74,38 +74,40 @@ func (g *Generator) parsePackage(ctx context.Context, patterns ...string) error
7474
returnnil
7575
}
7676

77-
func (g*Generator)generate(typNamestring) (string,error) {
77+
func (g*Generator)generate(typeNames...string) (string,error) {
7878
sb:= strings.Builder{}
7979

8080
_,_=fmt.Fprint(&sb,"Copy the following code into the audit.AuditableResources table\n\n")
8181

82-
obj:=g.pkg.Types.Scope().Lookup(typName)
83-
ifobj==nil||obj.Type()==nil {
84-
return"",xerrors.Errorf("type doesn't exist %q",typName)
85-
}
86-
87-
switchobj:=obj.(type) {
88-
case*types.TypeName:
89-
named,ok:=obj.Type().(*types.Named)
90-
if!ok {
91-
panic("all typenames should be named types")
82+
for_,typName:=rangetypeNames {
83+
obj:=g.pkg.Types.Scope().Lookup(typName)
84+
ifobj==nil||obj.Type()==nil {
85+
return"",xerrors.Errorf("type doesn't exist %q",typName)
9286
}
9387

94-
switchtyp:=named.Underlying().(type) {
95-
case*types.Struct:
96-
g.writeStruct(&sb,typ,typName)
88+
switchobj:=obj.(type) {
89+
case*types.TypeName:
90+
named,ok:=obj.Type().(*types.Named)
91+
if!ok {
92+
panic("all typenames should be named types")
93+
}
94+
95+
switchtyp:=named.Underlying().(type) {
96+
case*types.Struct:
97+
g.writeStruct(&sb,typ,typName)
9798

99+
default:
100+
return"",xerrors.Errorf("invalid type %T",obj)
101+
}
98102
default:
99103
return"",xerrors.Errorf("invalid type %T",obj)
100104
}
101-
default:
102-
return"",xerrors.Errorf("invalid type %T",obj)
103105
}
104106

105107
returnsb.String(),nil
106108
}
107109

108-
func (g*Generator)writeStruct(w io.Writer,st*types.Struct,namestring) {
110+
func (*Generator)writeStruct(w io.Writer,st*types.Struct,namestring) {
109111
_,_=fmt.Fprintf(w,"\t&database.%s{}: {\n",name)
110112

111113
fori:=0;i<st.NumFields();i++ {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp