Skip to content

Commit 3bb9bf5

Browse files
Migrate code generator to eris (#4454)
* Add eris as a dependency * Update generator files
1 parent 0099f42 commit 3bb9bf5

File tree

186 files changed

+1085
-1077
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

186 files changed

+1085
-1077
lines changed

v2/tools/generator/gen_kustomize.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"os"
1010
"path/filepath"
1111

12-
"github.com/pkg/errors"
12+
"github.com/rotisserie/eris"
1313
"github.com/spf13/cobra"
1414
kerrors "k8s.io/apimachinery/pkg/util/errors"
1515

@@ -99,7 +99,7 @@ func NewGenKustomizeCommand() (*cobra.Command, error) {
9999
}
100100

101101
if len(result.Resources) == 0 {
102-
err = errors.Errorf("no files found in %q", basesPath)
102+
err = eris.Errorf("no files found in %q", basesPath)
103103
log.Error(
104104
err,
105105
"No CRD files found")

v2/tools/generator/gen_types.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"strings"
1111
"unicode"
1212

13-
"github.com/pkg/errors"
13+
"github.com/rotisserie/eris"
1414
"github.com/spf13/cobra"
1515

1616
"github.com/Azure/azure-service-operator/v2/tools/generator/internal/codegen"
@@ -61,7 +61,7 @@ func NewGenTypesCommand() (*cobra.Command, error) {
6161

6262
err = cg.Generate(ctx, log)
6363
if err != nil {
64-
err = errors.Wrap(err, "error generating code")
64+
err = eris.Wrap(err, "error generating code")
6565
return err
6666
}
6767

v2/tools/generator/go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ require (
5252
github.com/mattn/go-isatty v0.0.20 // indirect
5353
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
5454
github.com/rogpeppe/go-internal v1.12.0 // indirect
55+
github.com/rotisserie/eris v0.5.4 // indirect
5556
github.com/sergi/go-diff v1.3.1 // indirect
5657
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
5758
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect

v2/tools/generator/go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
266266
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
267267
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
268268
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
269+
github.com/rotisserie/eris v0.5.4 h1:Il6IvLdAapsMhvuOahHWiBnl1G++Q0/L5UIkI5mARSk=
270+
github.com/rotisserie/eris v0.5.4/go.mod h1:Z/kgYTJiJtocxCbFfvRmO+QejApzG6zpyky9G1A4g9s=
269271
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
270272
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
271273
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=

v2/tools/generator/internal/armconversion/arm_conversion_function.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ package armconversion
77

88
import (
99
"github.com/dave/dst"
10-
"github.com/pkg/errors"
10+
"github.com/rotisserie/eris"
1111

1212
"github.com/Azure/azure-service-operator/v2/tools/generator/internal/astmodel"
1313
)
@@ -80,15 +80,15 @@ func (c *ConvertToARMFunction) AsFunc(
8080
receiver,
8181
c.Name())
8282
if err != nil {
83-
return nil, errors.Wrapf(
83+
return nil, eris.Wrapf(
8484
err,
8585
"error creating ConvertToARM function for %s",
8686
receiver.Name())
8787
}
8888

8989
decl, err := builder.functionDeclaration()
9090
if err != nil {
91-
return nil, errors.Wrapf(
91+
return nil, eris.Wrapf(
9292
err,
9393
"error generating ConvertToARM function for %s",
9494
c.Name())
@@ -107,15 +107,15 @@ func (c *PopulateFromARMFunction) AsFunc(
107107
receiver,
108108
c.Name())
109109
if err != nil {
110-
return nil, errors.Wrapf(
110+
return nil, eris.Wrapf(
111111
err,
112112
"error creating ConvertFromARM function for %s",
113113
receiver.Name())
114114
}
115115

116116
decl, err := builder.functionDeclaration()
117117
if err != nil {
118-
return nil, errors.Wrapf(
118+
return nil, eris.Wrapf(
119119
err,
120120
"error generating ConvertFromARM function for %s",
121121
c.Name())

v2/tools/generator/internal/armconversion/arm_spec_interface.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"fmt"
1010

1111
"github.com/dave/dst"
12-
"github.com/pkg/errors"
12+
"github.com/rotisserie/eris"
1313

1414
"github.com/Azure/azure-service-operator/v2/tools/generator/internal/astbuilder"
1515
"github.com/Azure/azure-service-operator/v2/tools/generator/internal/astmodel"
@@ -19,7 +19,7 @@ import (
1919
func checkPropertyPresence(o *astmodel.ObjectType, name astmodel.PropertyName) error {
2020
_, ok := o.Property(name)
2121
if !ok {
22-
return errors.Errorf("resource spec doesn't have %q property", name)
22+
return eris.Errorf("resource spec doesn't have %q property", name)
2323
}
2424

2525
return nil
@@ -83,7 +83,7 @@ func armSpecInterfaceSimpleGetFunction(
8383
receiverIdent := fn.IdFactory().CreateReceiver(receiver.Name())
8484
receiverExpr, err := receiver.AsTypeExpr(codeGenerationContext)
8585
if err != nil {
86-
return nil, errors.Wrapf(err, "creating type expression for %s", receiver.Name())
86+
return nil, eris.Wrapf(err, "creating type expression for %s", receiver.Name())
8787
}
8888

8989
var result dst.Expr = astbuilder.Selector(dst.NewIdent(receiverIdent), propertyName)

v2/tools/generator/internal/armconversion/convert_from_arm_function_builder.go

+19-17
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"strings"
1212

1313
"github.com/dave/dst"
14-
"github.com/pkg/errors"
14+
"github.com/rotisserie/eris"
1515

1616
"github.com/Azure/azure-service-operator/v2/tools/generator/internal/astbuilder"
1717
"github.com/Azure/azure-service-operator/v2/tools/generator/internal/astmodel"
@@ -33,7 +33,7 @@ func newConvertFromARMFunctionBuilder(
3333
) (*convertFromARMBuilder, error) {
3434
receiverExpr, err := receiver.AsTypeExpr(codeGenerationContext)
3535
if err != nil {
36-
return nil, errors.Wrapf(err, "creating type expression for %s", receiver)
36+
return nil, eris.Wrapf(err, "creating type expression for %s", receiver)
3737
}
3838

3939
result := &convertFromARMBuilder{
@@ -105,7 +105,7 @@ func (builder *convertFromARMBuilder) functionDeclaration() (*dst.FuncDecl, erro
105105
fn.AddComments("populates a Kubernetes CRD object from an Azure ARM object")
106106
ownerReferenceExpr, err := astmodel.ArbitraryOwnerReference.AsTypeExpr(builder.codeGenerationContext)
107107
if err != nil {
108-
return nil, errors.Wrap(err, "creating owner reference type expression")
108+
return nil, eris.Wrap(err, "creating owner reference type expression")
109109
}
110110

111111
fn.AddParameter(
@@ -123,7 +123,7 @@ func (builder *convertFromARMBuilder) functionBodyStatements() ([]dst.Stmt, erro
123123
builder.destinationType,
124124
builder.propertyConversionHandler)
125125
if err != nil {
126-
return nil, errors.Wrapf(err, "unable to generate conversion statements for %s", builder.methodName)
126+
return nil, eris.Wrapf(err, "unable to generate conversion statements for %s", builder.methodName)
127127
}
128128

129129
// We remove empty statements here as they may have been used to store comments or other
@@ -185,7 +185,7 @@ func (builder *convertFromARMBuilder) namePropertyHandler(
185185
// Check to make sure that the ARM object has a "Name" property (which matches our "AzureName")
186186
fromProp, ok := fromType.Property("Name")
187187
if !ok {
188-
return notHandled, errors.New("ARM resource missing property 'Name'")
188+
return notHandled, eris.New("ARM resource missing property 'Name'")
189189
}
190190

191191
// Invoke SetAzureName(ExtractKubernetesResourceNameFromARMName(this.Name)):
@@ -277,18 +277,19 @@ func (builder *convertFromARMBuilder) ownerPropertyHandler(
277277
builder.sourceType.WriteDebugDescription(&armDescription, nil)
278278

279279
return notHandled,
280-
errors.Errorf(
280+
eris.Errorf(
281281
"owner property was not of type TypeName. Kube: %s, ARM: %s",
282282
kubeDescription.String(),
283283
armDescription.String())
284+
284285
}
285286

286287
var convertedOwner dst.Expr
287288
if ownerNameType == astmodel.KnownResourceReferenceType {
288289
knownResourceReferenceExpr, err := astmodel.KnownResourceReferenceType.AsTypeExpr(builder.codeGenerationContext)
289290
if err != nil {
290291
return notHandled,
291-
errors.Wrapf(err, "creating known resource reference type expression for %s", ownerProp)
292+
eris.Wrapf(err, "creating known resource reference type expression for %s", ownerProp)
292293
}
293294

294295
compositeLit := astbuilder.NewCompositeLiteralBuilder(knownResourceReferenceExpr)
@@ -299,7 +300,7 @@ func (builder *convertFromARMBuilder) ownerPropertyHandler(
299300
convertedOwner = astbuilder.AddrOf(dst.NewIdent(ownerParameter))
300301
} else {
301302
return notHandled,
302-
errors.Errorf(
303+
eris.Errorf(
303304
"found Owner property on spec with unexpected TypeName %s",
304305
ownerNameType.String())
305306
}
@@ -366,7 +367,7 @@ func (builder *convertFromARMBuilder) flattenedPropertyHandler(
366367
result, err := builder.buildFlattenedAssignment(toProp, fromProp)
367368
if err != nil {
368369
return notHandled,
369-
errors.Wrapf(err,
370+
eris.Wrapf(err,
370371
"failed to build flattened assignment for property %s",
371372
toProp.PropertyName())
372373
}
@@ -376,7 +377,7 @@ func (builder *convertFromARMBuilder) flattenedPropertyHandler(
376377
}
377378

378379
return notHandled,
379-
errors.Errorf(
380+
eris.Errorf(
380381
"couldn’t find source ARM property %q that k8s property %q was flattened from",
381382
toProp.FlattenedFrom()[0],
382383
toProp.PropertyName())
@@ -395,11 +396,12 @@ func (builder *convertFromARMBuilder) buildFlattenedAssignment(
395396
}
396397

397398
return notHandled,
398-
errors.Errorf(
399+
eris.Errorf(
399400
"need to implement multiple levels of flattening: property %q on %s was flattened from %q",
400401
toProp.PropertyName(),
401402
builder.receiverIdent,
402403
strings.Join(props, "."))
404+
403405
}
404406

405407
allDefs := builder.codeGenerationContext.GetAllReachableDefinitions()
@@ -414,7 +416,7 @@ func (builder *convertFromARMBuilder) buildFlattenedAssignment(
414416
fromPropType, err := allDefs.FullyResolve(fromProp.PropertyType())
415417
if err != nil {
416418
return notHandled,
417-
errors.Wrapf(
419+
eris.Wrapf(
418420
err,
419421
"failed to resolve type for property %s",
420422
fromProp.PropertyName())
@@ -431,7 +433,7 @@ func (builder *convertFromARMBuilder) buildFlattenedAssignment(
431433
elementType, err = allDefs.FullyResolve(fromPropOptType.Element())
432434
if err != nil {
433435
return notHandled,
434-
errors.Wrapf(
436+
eris.Wrapf(
435437
err,
436438
"failed to resolve type for property %s",
437439
fromProp.PropertyName())
@@ -447,7 +449,7 @@ func (builder *convertFromARMBuilder) buildFlattenedAssignment(
447449
if !objOk {
448450
// see pipeline_flatten_properties.go:flattenPropType which will only flatten from (optional) object types
449451
return notHandled,
450-
errors.Errorf(
452+
eris.Errorf(
451453
"property %q marked as flattened from non-object type %T, which shouldn’t be possible",
452454
toProp.PropertyName(),
453455
fromPropType)
@@ -459,7 +461,7 @@ func (builder *convertFromARMBuilder) buildFlattenedAssignment(
459461
nestedProp, ok := fromPropObjType.Property(originalPropName)
460462
if !ok {
461463
return notHandled,
462-
errors.Errorf(
464+
eris.Errorf(
463465
"couldn't find source of flattened property %q on %s",
464466
toProp.PropertyName(),
465467
builder.receiverIdent)
@@ -486,7 +488,7 @@ func (builder *convertFromARMBuilder) buildFlattenedAssignment(
486488
})
487489
if err != nil {
488490
return notHandled,
489-
errors.Wrapf(
491+
eris.Wrapf(
490492
err,
491493
"failed to generate conversion for flattened property %s",
492494
toProp.PropertyName())
@@ -548,7 +550,7 @@ func (builder *convertFromARMBuilder) propertiesByNameHandler(
548550
})
549551
if err != nil {
550552
return notHandled,
551-
errors.Wrapf(
553+
eris.Wrapf(
552554
err,
553555
"failed to generate conversion for property %s",
554556
toProp.PropertyName())

0 commit comments

Comments
 (0)