diff --git a/src/type/repository-build-definition.js b/src/type/repository-build-definition.js index e32c900b..d0293307 100644 --- a/src/type/repository-build-definition.js +++ b/src/type/repository-build-definition.js @@ -9,6 +9,12 @@ const metapackageDefinition = require('./metapackage-definition'); * Defines release build instructions for a git repository. */ class repositoryBuildDefinition { + /** + * @type String|null Identifier of this repository in the build config, used to + * target it individually from a release refs file + */ + key = null; + /** * @type String|null Git Repository URL */ @@ -79,9 +85,10 @@ class repositoryBuildDefinition { extraRefToRelease = []; /** - * @param {{repoUrl: String, packageDirs: Array, packageIndividual: Array, packageMetaFromDirs: Array, vendor: String, ref: String, fromTag: String, skipTags: {Object}, transform: Object., fixVersions: {Object}, packageReplacements: {Object}, extraRefToRelease: Array, extraMetapackages: Array}} + * @param {{key: String, repoUrl: String, packageDirs: Array, packageIndividual: Array, packageMetaFromDirs: Array, vendor: String, ref: String, fromTag: String, skipTags: {Object}, transform: Object., fixVersions: {Object}, packageReplacements: {Object}, extraRefToRelease: Array, extraMetapackages: Array}} */ constructor(options) { + this.key = options.key || this.key; this.repoUrl = options.repoUrl || this.repoUrl; this.vendor = options.vendor || this.vendor; diff --git a/tests/unit/type/repository-build-definition.test.js b/tests/unit/type/repository-build-definition.test.js index 838c8cd7..af9f2ab8 100644 --- a/tests/unit/type/repository-build-definition.test.js +++ b/tests/unit/type/repository-build-definition.test.js @@ -24,6 +24,11 @@ describe('repositoryBuildDefinition', () => { expect(def.ref).toBeNull(); }); + it('should use null for key when not provided', () => { + const def = new repositoryBuildDefinition({}); + expect(def.key).toBeNull(); + }); + it('should use null for fromTag when not provided', () => { const def = new repositoryBuildDefinition({}); expect(def.fromTag).toBeNull(); @@ -63,6 +68,11 @@ describe('repositoryBuildDefinition', () => { expect(def.ref).toBe('2.4-develop'); }); + it('should use provided key', () => { + const def = new repositoryBuildDefinition({ key: 'magento2' }); + expect(def.key).toBe('magento2'); + }); + it('should use provided fromTag', () => { const def = new repositoryBuildDefinition({ fromTag: '2.4.0' }); expect(def.fromTag).toBe('2.4.0'); diff --git a/tests/unit/utils.test.js b/tests/unit/utils.test.js index b71eaebf..7c0ab85e 100644 --- a/tests/unit/utils.test.js +++ b/tests/unit/utils.test.js @@ -496,8 +496,8 @@ describe('mergeBuildConfigs', () => { const b = { 'my-repo': { repoUrl: 'https://example.com' } }; const result = mergeBuildConfigs(a, b); - // The key is added to the repositoryBuildDefinition - verify via the object expect(result).toHaveLength(1); + expect(result[0].key).toBe('my-repo'); }); it('should override values from a with values from b', () => {