Rewrite code for creating versioned modules as a transformation
Moves the code for transforming an unversioned module into a
versioned module into a transformer.
This is preparation for enhancing the versioning tranformer to support
applying per property transformations. Specifically, to allow
properties to reference other libraries within the sdk.
Bug: 142940300
Test: m nothing
Change-Id: Ia6b5cff8e1b5cd7232e031769d9fc0019e815fcb
diff --git a/sdk/update.go b/sdk/update.go
index 2731d50..56ce1fc 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -194,12 +194,16 @@
member.memberType.BuildSnapshot(ctx, builder, member)
}
+ // Create a transformer that will transform an unversioned module into a versioned module.
+ unversionedToVersionedTransformer := unversionedToVersionedTransformation{builder: builder}
+
for _, unversioned := range builder.prebuiltOrder {
// Copy the unversioned module so it can be modified to make it versioned.
versioned := unversioned.deepCopy()
- name := versioned.properties["name"].(string)
- versioned.setProperty("name", builder.versionedSdkMemberName(name))
- versioned.insertAfter("name", "sdk_member_name", name)
+
+ // Transform the unversioned module into a versioned one.
+ versioned.transform(unversionedToVersionedTransformer)
+
bpFile.AddModule(versioned)
// Set prefer: false - this is not strictly required as that is the default.
@@ -281,6 +285,22 @@
return outputZipFile
}
+type unversionedToVersionedTransformation struct {
+ identityTransformation
+ builder *snapshotBuilder
+}
+
+var _ bpTransformer = (*unversionedToVersionedTransformation)(nil)
+
+func (t unversionedToVersionedTransformation) transformModule(module *bpModule) *bpModule {
+ // Use a versioned name for the module but remember the original name for the
+ // snapshot.
+ name := module.getValue("name").(string)
+ module.setProperty("name", t.builder.versionedSdkMemberName(name))
+ module.insertAfter("name", "sdk_member_name", name)
+ return module
+}
+
func generateBpContents(contents *generatedContents, bpFile *bpFile) {
contents.Printfln("// This is auto-generated. DO NOT EDIT.")
for _, bpModule := range bpFile.order {