@24i/smartapps-bigscreen-rnv-build-engine 0.9.2 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/dist/src/__tests__/resolvers/resolveBaseUrl.spec.js +100 -0
  2. package/dist/src/__tests__/resolvers/resolveBuildFileExtension.spec.js +26 -0
  3. package/dist/src/__tests__/resolvers/resolveBuildFileName.spec.js +89 -0
  4. package/dist/src/__tests__/resolvers/resolveBuildVersion.spec.js +50 -0
  5. package/dist/src/__tests__/resolvers/resolveBuildVersionOffset.spec.js +111 -0
  6. package/dist/src/__tests__/resolvers/resolveDeployLocations.spec.js +87 -0
  7. package/dist/src/__tests__/resolvers/resolveGenericRnvConfig.spec.js +92 -0
  8. package/dist/src/__tests__/resolvers/resolveHbbtvDeployConfig.spec.js +35 -0
  9. package/dist/src/__tests__/resolvers/resolveHbbtvDeployUrl.spec.js +41 -0
  10. package/dist/src/__tests__/resolvers/resolveHbbtvRemoteBuildDirRelativePath.spec.js +49 -0
  11. package/dist/src/__tests__/resolvers/resolveSupportedPlatforms.spec.js +22 -0
  12. package/dist/src/__tests__/resolvers/resolveUsedFlavours.spec.js +38 -0
  13. package/dist/src/__tests__/resolvers/resolveZippedPlatformBuildsRelativeFilePath.spec.js +18 -0
  14. package/dist/src/resolvers/resolveBaseUrl.js +5 -5
  15. package/dist/src/resolvers/resolveBuildFileName.js +5 -4
  16. package/dist/src/resolvers/resolveDeployLocations.js +1 -1
  17. package/dist/src/resolvers/resolveGenericRnvConfig.js +1 -1
  18. package/dist/src/resolvers/resolveHbbtvDeployUrl.js +1 -1
  19. package/dist/src/resolvers/resolveHbbtvRemoteBuildDirRelativePath.js +8 -11
  20. package/dist/src/resolvers/resolveZippedPlatformBuildsRelativeFilePath.js +2 -3
  21. package/dist/src/tasks/deploy/hbbtv/deployHbbtv.js +2 -1
  22. package/package.json +5 -4
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolveBaseUrl_1 = require("../../resolvers/resolveBaseUrl");
4
+ const resolveGenericRnvConfig_1 = require("../../resolvers/resolveGenericRnvConfig");
5
+ const constants_1 = require("../../constants");
6
+ jest.mock('../../resolvers/resolveGenericRnvConfig');
7
+ describe('resolveBaseUrl', () => {
8
+ const bucketName = 'test-bucket';
9
+ const flavour = 'test_flavour';
10
+ const packageVersion = '1.0.0';
11
+ afterEach(() => {
12
+ jest.clearAllMocks();
13
+ jest.resetAllMocks();
14
+ jest.resetModules();
15
+ });
16
+ it('returns empty string when c.common.packageVersion is not set', () => {
17
+ resolveGenericRnvConfig_1.getBaseConfig.mockReturnValue({
18
+ runtime: {},
19
+ buildConfig: {
20
+ common: {
21
+ packageVersion: '',
22
+ deploy: { aws3: { bucketName } },
23
+ },
24
+ },
25
+ });
26
+ Object.values(constants_1.Platforms).forEach((platform) => {
27
+ Object.values(constants_1.BuildSchemes).forEach((scheme) => {
28
+ expect((0, resolveBaseUrl_1.resolveBaseUrl)({ platform, scheme, flavour })).toBe('');
29
+ });
30
+ });
31
+ });
32
+ it('returns empty string when c.buildConfig.common.deploy.aws3.bucketName is not set', () => {
33
+ resolveGenericRnvConfig_1.getBaseConfig.mockReturnValue({
34
+ runtime: {},
35
+ buildConfig: { common: { packageVersion } },
36
+ });
37
+ Object.values(constants_1.Platforms).forEach((platform) => {
38
+ Object.values(constants_1.BuildSchemes).forEach((scheme) => {
39
+ expect((0, resolveBaseUrl_1.resolveBaseUrl)({ platform, scheme, flavour })).toBe('');
40
+ });
41
+ });
42
+ });
43
+ describe('resolving baseUrl for configured schemes', () => {
44
+ const bucketUrl = `http://${bucketName}.s3.amazonaws.com`;
45
+ beforeEach(() => {
46
+ resolveGenericRnvConfig_1.getBaseConfig.mockReturnValue({
47
+ runtime: {},
48
+ buildConfig: {
49
+ common: {
50
+ packageVersion,
51
+ deploy: { aws3: { bucketName } },
52
+ },
53
+ },
54
+ });
55
+ });
56
+ it('returns empty string for other build schemes as latest or distribution', () => {
57
+ const schemesWithDefinedBaseUrl = [
58
+ constants_1.BuildSchemes.DEV_LATEST,
59
+ constants_1.BuildSchemes.RC_LATEST,
60
+ constants_1.BuildSchemes.RELEASE_LATEST,
61
+ constants_1.BuildSchemes.RELEASE_DIST,
62
+ ];
63
+ Object.values(constants_1.Platforms).forEach((platform) => {
64
+ Object.values(constants_1.BuildSchemes).forEach((scheme) => {
65
+ const baseUrl = (0, resolveBaseUrl_1.resolveBaseUrl)({ platform, scheme, flavour });
66
+ if (schemesWithDefinedBaseUrl.includes(scheme)) {
67
+ expect(baseUrl).not.toBe('');
68
+ }
69
+ else {
70
+ expect(baseUrl).toBe('');
71
+ }
72
+ });
73
+ });
74
+ });
75
+ it('returns proper url for "latest development" build scheme', () => {
76
+ const scheme = constants_1.BuildSchemes.DEV_LATEST;
77
+ Object.values(constants_1.Platforms).forEach((platform) => {
78
+ expect((0, resolveBaseUrl_1.resolveBaseUrl)({ platform, flavour, scheme })).toBe(`${bucketUrl}/builds/${platform}/${flavour}/latest/dev`);
79
+ });
80
+ });
81
+ it('returns proper url for "latest release candidate" scheme', () => {
82
+ const scheme = constants_1.BuildSchemes.RC_LATEST;
83
+ Object.values(constants_1.Platforms).forEach((platform) => {
84
+ expect((0, resolveBaseUrl_1.resolveBaseUrl)({ platform, flavour, scheme })).toBe(`${bucketUrl}/builds/${platform}/${flavour}/latest/rc`);
85
+ });
86
+ });
87
+ it('returns proper url for "latest release" build scheme', () => {
88
+ const scheme = constants_1.BuildSchemes.RELEASE_LATEST;
89
+ Object.values(constants_1.Platforms).forEach((platform) => {
90
+ expect((0, resolveBaseUrl_1.resolveBaseUrl)({ platform, flavour, scheme })).toBe(`${bucketUrl}/builds/${platform}/${flavour}/latest/release`);
91
+ });
92
+ });
93
+ it('returns proper url for "distribution release" build scheme', () => {
94
+ const scheme = constants_1.BuildSchemes.RELEASE_DIST;
95
+ Object.values(constants_1.Platforms).forEach((platform) => {
96
+ expect((0, resolveBaseUrl_1.resolveBaseUrl)({ platform, flavour, scheme })).toBe(`${bucketUrl}/builds/${platform}/${flavour}/dist/v${packageVersion}`);
97
+ });
98
+ });
99
+ });
100
+ });
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolveBuildFileExtension_1 = require("../../resolvers/resolveBuildFileExtension");
4
+ const constants_1 = require("../../constants");
5
+ describe('resolveBuildFileExtension', () => {
6
+ it('returns "wgt" for tizen platform', () => {
7
+ const resolvedExtension = (0, resolveBuildFileExtension_1.resolveBuildFileExtension)(constants_1.Platforms.TIZEN);
8
+ expect(resolvedExtension).toBe('wgt');
9
+ });
10
+ it('returns "ipk" for webos platform', () => {
11
+ const resolvedExtension = (0, resolveBuildFileExtension_1.resolveBuildFileExtension)(constants_1.Platforms.WEBOS);
12
+ expect(resolvedExtension).toBe('ipk');
13
+ });
14
+ it('returns "zip" for all platforms except tizen and webos', () => {
15
+ const excludedPlatforms = [constants_1.Platforms.TIZEN, constants_1.Platforms.WEBOS];
16
+ Object.values(constants_1.Platforms).forEach((platform) => {
17
+ const resolvedExtension = (0, resolveBuildFileExtension_1.resolveBuildFileExtension)(platform);
18
+ if (excludedPlatforms.includes(platform)) {
19
+ expect(resolvedExtension).not.toBe('zip');
20
+ }
21
+ else {
22
+ expect(resolvedExtension).toBe('zip');
23
+ }
24
+ });
25
+ });
26
+ });
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolveBuildFileName_1 = require("../../resolvers/resolveBuildFileName");
4
+ const resolveGenericRnvConfig_1 = require("../../resolvers/resolveGenericRnvConfig");
5
+ const resolveBuildVersionOffset_1 = require("../../resolvers/resolveBuildVersionOffset");
6
+ const constants_1 = require("../../constants");
7
+ jest.mock('../../resolvers/resolveGenericRnvConfig');
8
+ jest.mock('../../resolvers/resolveBuildVersionOffset');
9
+ const getPackageExtensionByPlatform = (platform) => {
10
+ switch (platform) {
11
+ case constants_1.Platforms.TIZEN: return 'wgt';
12
+ case constants_1.Platforms.WEBOS: return 'ipk';
13
+ default: return 'zip';
14
+ }
15
+ };
16
+ describe('resolveBuildFileName', () => {
17
+ let c = {};
18
+ beforeEach(() => {
19
+ resolveGenericRnvConfig_1.getBaseConfig.mockReturnValue({
20
+ runtime: {},
21
+ buildConfig: { common: { packageVersion: '1.0.0' } },
22
+ });
23
+ });
24
+ afterEach(() => {
25
+ jest.clearAllMocks();
26
+ jest.resetAllMocks();
27
+ jest.resetModules();
28
+ });
29
+ beforeEach(() => {
30
+ c = {
31
+ runtime: { appId: 'flavour' },
32
+ buildConfig: {
33
+ common: { appNameInFileName: 'appName' },
34
+ },
35
+ };
36
+ });
37
+ it('returns proper string when there is no version offset', () => {
38
+ resolveBuildVersionOffset_1.resolveBuildVersionOffset.mockReturnValue('');
39
+ Object.values(constants_1.Platforms).forEach((platform) => {
40
+ c.platform = platform;
41
+ const ext = getPackageExtensionByPlatform(platform);
42
+ c.runtime.scheme = constants_1.BuildSchemes.DEBUG;
43
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_v1.0.0.debug_flavour.${ext}`);
44
+ c.runtime.scheme = constants_1.BuildSchemes.DEV;
45
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_v1.0.0.dev_flavour.${ext}`);
46
+ c.runtime.scheme = constants_1.BuildSchemes.DEV_LATEST;
47
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_latest.dev_flavour.${ext}`);
48
+ c.runtime.scheme = constants_1.BuildSchemes.RC;
49
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_v1.0.0.rc_flavour.${ext}`);
50
+ c.runtime.scheme = constants_1.BuildSchemes.RC_LATEST;
51
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_latest.rc_flavour.${ext}`);
52
+ c.runtime.scheme = constants_1.BuildSchemes.RELEASE;
53
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_v1.0.0_flavour.${ext}`);
54
+ c.runtime.scheme = constants_1.BuildSchemes.RELEASE_LATEST;
55
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_latest.release_flavour.${ext}`);
56
+ c.runtime.scheme = constants_1.BuildSchemes.RELEASE_DIST;
57
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_v1.0.0_flavour.${ext}`);
58
+ });
59
+ });
60
+ it('returns proper string when there is version offset', () => {
61
+ resolveBuildVersionOffset_1.resolveBuildVersionOffset.mockReturnValue('1');
62
+ Object.values(constants_1.Platforms).forEach((platform) => {
63
+ c.platform = platform;
64
+ const ext = getPackageExtensionByPlatform(platform);
65
+ c.runtime.scheme = constants_1.BuildSchemes.DEBUG;
66
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_v1.0.0.debug-1_flavour.${ext}`);
67
+ c.runtime.scheme = constants_1.BuildSchemes.DEV;
68
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_v1.0.0.dev-1_flavour.${ext}`);
69
+ c.runtime.scheme = constants_1.BuildSchemes.DEV_LATEST;
70
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_latest.dev_flavour.${ext}`);
71
+ c.runtime.scheme = constants_1.BuildSchemes.RC;
72
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_v1.0.0.rc-1_flavour.${ext}`);
73
+ c.runtime.scheme = constants_1.BuildSchemes.RC_LATEST;
74
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_latest.rc_flavour.${ext}`);
75
+ c.runtime.scheme = constants_1.BuildSchemes.RELEASE;
76
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_v1.0.0-1_flavour.${ext}`);
77
+ c.runtime.scheme = constants_1.BuildSchemes.RELEASE_LATEST;
78
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_latest.release_flavour.${ext}`);
79
+ c.runtime.scheme = constants_1.BuildSchemes.RELEASE_DIST;
80
+ expect((0, resolveBuildFileName_1.resolveBuildFileName)(c)).toBe(`appName_${platform}_v1.0.0-1_flavour.${ext}`);
81
+ });
82
+ });
83
+ it('throws an error when c.buildConfig.common.appNameInFileName is not present', () => {
84
+ c.buildConfig.common.appNameInFileName = '';
85
+ expect(() => {
86
+ (0, resolveBuildFileName_1.resolveBuildFileName)(c);
87
+ }).toThrowError(new Error('Missing value for "c.buildConfig.common.appNameInFileName"!'));
88
+ });
89
+ });
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolveBuildVersion_1 = require("../../resolvers/resolveBuildVersion");
4
+ const resolveBuildVersionOffset_1 = require("../../resolvers/resolveBuildVersionOffset");
5
+ const resolveGenericRnvConfig_1 = require("../../resolvers/resolveGenericRnvConfig");
6
+ const constants_1 = require("../../constants");
7
+ jest.mock('../../resolvers/resolveBuildVersionOffset');
8
+ jest.mock('../../resolvers/resolveGenericRnvConfig');
9
+ describe('resolveBuildVersion', () => {
10
+ const flavour = 'flavour';
11
+ afterEach(() => {
12
+ jest.clearAllMocks();
13
+ jest.resetAllMocks();
14
+ jest.resetModules();
15
+ });
16
+ it('returns proper string when there is no version offset', () => {
17
+ resolveGenericRnvConfig_1.getBaseConfig.mockReturnValue({
18
+ runtime: {},
19
+ buildConfig: { common: { packageVersion: '1.0.0' } },
20
+ });
21
+ resolveBuildVersionOffset_1.resolveBuildVersionOffset.mockReturnValue('');
22
+ Object.values(constants_1.Platforms).forEach((platform) => {
23
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.DEBUG })).toBe('v1.0.0.debug');
24
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.DEV })).toBe('v1.0.0.dev');
25
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.DEV_LATEST })).toBe('v1.0.0.dev');
26
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RC })).toBe('v1.0.0.rc');
27
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RC_LATEST })).toBe('v1.0.0.rc');
28
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RELEASE })).toBe('v1.0.0');
29
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_LATEST })).toBe('v1.0.0');
30
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_DIST })).toBe('v1.0.0');
31
+ });
32
+ });
33
+ it('returns proper string when there is version offset', () => {
34
+ resolveGenericRnvConfig_1.getBaseConfig.mockReturnValue({
35
+ runtime: {},
36
+ buildConfig: { common: { packageVersion: '1.0.0' } },
37
+ });
38
+ resolveBuildVersionOffset_1.resolveBuildVersionOffset.mockReturnValue('2');
39
+ Object.values(constants_1.Platforms).forEach((platform) => {
40
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.DEBUG })).toBe('v1.0.0.debug-2');
41
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.DEV })).toBe('v1.0.0.dev-2');
42
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.DEV_LATEST })).toBe('v1.0.0.dev-2');
43
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RC })).toBe('v1.0.0.rc-2');
44
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RC_LATEST })).toBe('v1.0.0.rc-2');
45
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RELEASE })).toBe('v1.0.0-2');
46
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_LATEST })).toBe('v1.0.0-2');
47
+ expect((0, resolveBuildVersion_1.resolveBuildVersion)({ platform, flavour, scheme: constants_1.BuildSchemes.RELEASE_DIST })).toBe('v1.0.0-2');
48
+ });
49
+ });
50
+ });
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const child_process_1 = require("child_process");
4
+ const resolveBuildVersionOffset_1 = require("../../resolvers/resolveBuildVersionOffset");
5
+ const c = {
6
+ buildConfig: {
7
+ common: {
8
+ git: {
9
+ branchNames: {
10
+ dev: 'DEV',
11
+ rc: 'RC',
12
+ dist: 'DIST',
13
+ },
14
+ },
15
+ },
16
+ },
17
+ };
18
+ jest.mock('child_process');
19
+ describe('resolveBuildVersionOffset', () => {
20
+ const oldEnv = process.env;
21
+ beforeEach(() => {
22
+ process.env = { ...oldEnv };
23
+ });
24
+ afterEach(() => {
25
+ jest.clearAllMocks();
26
+ jest.resetAllMocks();
27
+ jest.resetModules();
28
+ });
29
+ afterAll(() => {
30
+ process.env = oldEnv;
31
+ });
32
+ it('resolve process.env.BRANCH as a current branch when it is set', () => {
33
+ child_process_1.execSync.mockImplementation(() => '');
34
+ process.env.BRANCH = 'DEV';
35
+ (0, resolveBuildVersionOffset_1.resolveBuildVersionOffset)(c);
36
+ expect(child_process_1.execSync.mock.calls).toHaveLength(1);
37
+ const firstCalledCmd = child_process_1.execSync.mock.calls[0][0];
38
+ expect(firstCalledCmd).not.toBe('git branch --show-current');
39
+ });
40
+ it('uses git command to resolve current branch when process.env.BRANCH is not set', () => {
41
+ child_process_1.execSync.mockImplementation(() => '');
42
+ (0, resolveBuildVersionOffset_1.resolveBuildVersionOffset)(c);
43
+ expect(child_process_1.execSync.mock.calls).toHaveLength(1);
44
+ const firstCalledCmd = child_process_1.execSync.mock.calls[0][0];
45
+ expect(firstCalledCmd).toBe('git branch --show-current');
46
+ });
47
+ it('compares against DIST branch when current branch is DEV', () => {
48
+ child_process_1.execSync.mockImplementation((cmd) => {
49
+ if (cmd === 'git branch --show-current')
50
+ return 'DEV';
51
+ return '';
52
+ });
53
+ (0, resolveBuildVersionOffset_1.resolveBuildVersionOffset)(c);
54
+ expect(child_process_1.execSync.mock.calls).toHaveLength(2);
55
+ const secondCalledCmd = child_process_1.execSync.mock.calls[1][0];
56
+ expect(secondCalledCmd).toBe('git rev-list --count --merges --grep="^Merge pull request #" HEAD ^origin/DIST');
57
+ });
58
+ it('compares against DEV branch when current branch is RC', () => {
59
+ child_process_1.execSync.mockImplementation((cmd) => {
60
+ if (cmd === 'git branch --show-current')
61
+ return 'RC';
62
+ return '';
63
+ });
64
+ (0, resolveBuildVersionOffset_1.resolveBuildVersionOffset)(c);
65
+ expect(child_process_1.execSync.mock.calls).toHaveLength(2);
66
+ const secondCalledCmd = child_process_1.execSync.mock.calls[1][0];
67
+ expect(secondCalledCmd).toBe('git rev-list --count --merges --grep="^Merge pull request #" HEAD ^origin/DEV');
68
+ });
69
+ it('returns empty string when current branch is not DEV or RC', () => {
70
+ child_process_1.execSync.mockImplementation((cmd) => {
71
+ if (cmd === 'git branch --show-current')
72
+ return 'ANY_BRANCH';
73
+ return '';
74
+ });
75
+ expect((0, resolveBuildVersionOffset_1.resolveBuildVersionOffset)(c)).toBe('');
76
+ expect(child_process_1.execSync.mock.calls).toHaveLength(1);
77
+ });
78
+ it('returns empty string when there is no version offset', () => {
79
+ child_process_1.execSync.mockImplementation((cmd) => {
80
+ if (cmd === 'git branch --show-current')
81
+ return 'DEV';
82
+ if (cmd.startsWith('git rev-list --count --merges'))
83
+ return '0';
84
+ return '';
85
+ });
86
+ expect((0, resolveBuildVersionOffset_1.resolveBuildVersionOffset)(c)).toBe('');
87
+ expect(child_process_1.execSync.mock.calls).toHaveLength(2);
88
+ });
89
+ it('returns version offset as string', () => {
90
+ child_process_1.execSync.mockImplementation((cmd) => {
91
+ if (cmd === 'git branch --show-current')
92
+ return 'DEV';
93
+ if (cmd.startsWith('git rev-list --count --merges'))
94
+ return '10';
95
+ return '';
96
+ });
97
+ expect((0, resolveBuildVersionOffset_1.resolveBuildVersionOffset)(c)).toBe('10');
98
+ expect(child_process_1.execSync.mock.calls).toHaveLength(2);
99
+ });
100
+ it('returns empty string when git rev-list cmd throws an error', () => {
101
+ child_process_1.execSync.mockImplementation((cmd) => {
102
+ if (cmd === 'git branch --show-current')
103
+ return 'DEV';
104
+ if (cmd.startsWith('git rev-list --count --merges'))
105
+ throw new Error('test error');
106
+ return '';
107
+ });
108
+ expect((0, resolveBuildVersionOffset_1.resolveBuildVersionOffset)(c)).toBe('');
109
+ expect(child_process_1.execSync.mock.calls).toHaveLength(2);
110
+ });
111
+ });
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolveGenericRnvConfig_1 = require("../../resolvers/resolveGenericRnvConfig");
4
+ const resolveDeployLocations_1 = require("../../resolvers/resolveDeployLocations");
5
+ const resolveBuildVersionOffset_1 = require("../../resolvers/resolveBuildVersionOffset");
6
+ const constants_1 = require("../../constants");
7
+ jest.mock('../../resolvers/resolveGenericRnvConfig');
8
+ jest.mock('../../resolvers/resolveBuildVersionOffset');
9
+ const c = {
10
+ platform: constants_1.Platforms.WEBTV,
11
+ runtime: {
12
+ scheme: constants_1.BuildSchemes.RELEASE_LATEST,
13
+ appId: 'flavour1',
14
+ },
15
+ buildConfig: {
16
+ defaults: { supportedPlatforms: [constants_1.Platforms.TIZEN, constants_1.Platforms.WEBTV, constants_1.Platforms.HBBTV] },
17
+ common: {
18
+ appNameInFileName: 'appName',
19
+ packageVersion: '1.0.0',
20
+ deploy: {
21
+ aws3: {
22
+ bucketName: 'bucketName',
23
+ },
24
+ },
25
+ },
26
+ platforms: {
27
+ tizen: {
28
+ deploy: {
29
+ supportedFlavours: ['flavour1', 'flavour2'],
30
+ },
31
+ },
32
+ webtv: {
33
+ deploy: {
34
+ supportedFlavours: ['flavour1'],
35
+ },
36
+ },
37
+ hbbtv: {
38
+ deploy: {
39
+ supportedFlavours: ['flavour3'],
40
+ },
41
+ },
42
+ },
43
+ },
44
+ };
45
+ describe('resolveDeployLocations', () => {
46
+ resolveGenericRnvConfig_1.getBaseConfig.mockReturnValue(c);
47
+ resolveBuildVersionOffset_1.resolveBuildVersionOffset.mockReturnValue('');
48
+ afterAll(() => {
49
+ jest.clearAllMocks();
50
+ jest.resetAllMocks();
51
+ jest.resetModules();
52
+ });
53
+ it('returns object with correct structure', () => {
54
+ const resolvedDeployLocations = (0, resolveDeployLocations_1.resolveDeployLocations)(c);
55
+ const bucketBaseUrl = 'http://bucketName.s3.amazonaws.com';
56
+ expect(resolvedDeployLocations).toStrictEqual({
57
+ versions: {
58
+ 'v1.0.0': {
59
+ platforms: {
60
+ hbbtv: {
61
+ flavour3: {
62
+ indexUrl: 'http://nxg-bigscreen-test.24imedia.tv/appName/flavour3/latest/release/public/index.html',
63
+ packageUrl: `${bucketBaseUrl}/builds/hbbtv/flavour3/latest/release/build/appName_hbbtv_latest.release_flavour3.zip`,
64
+ },
65
+ },
66
+ tizen: {
67
+ flavour1: {
68
+ indexUrl: `${bucketBaseUrl}/builds/tizen/flavour1/latest/release/public/index.html`,
69
+ packageUrl: `${bucketBaseUrl}/builds/tizen/flavour1/latest/release/build/appName_tizen_latest.release_flavour1.wgt`,
70
+ },
71
+ flavour2: {
72
+ indexUrl: `${bucketBaseUrl}/builds/tizen/flavour2/latest/release/public/index.html`,
73
+ packageUrl: `${bucketBaseUrl}/builds/tizen/flavour2/latest/release/build/appName_tizen_latest.release_flavour2.wgt`,
74
+ },
75
+ },
76
+ webtv: {
77
+ flavour1: {
78
+ indexUrl: `${bucketBaseUrl}/builds/webtv/flavour1/latest/release/public/index.html`,
79
+ packageUrl: `${bucketBaseUrl}/builds/webtv/flavour1/latest/release/build/appName_webtv_latest.release_flavour1.zip`,
80
+ },
81
+ },
82
+ },
83
+ },
84
+ },
85
+ });
86
+ });
87
+ });
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const rnv_1 = require("rnv");
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const resolveGenericRnvConfig_1 = require("../../resolvers/resolveGenericRnvConfig");
9
+ jest.mock('rnv');
10
+ jest.mock('fs');
11
+ const packageJson = { version: '1.2.3', foo: 'bar' };
12
+ const rootRenativeJson = {
13
+ rootProp: 'rootValue',
14
+ common: { rootProp0: 'rootValue0', rootProp1: 'rootValue1' },
15
+ };
16
+ const baseFlavourRenativeJson = {
17
+ common: { rootProp0: 'overwrittenByFlavourValue', flavourProp: 'flavourValue' },
18
+ flavourProp: 'flavourValue',
19
+ };
20
+ describe('getBaseConfig', () => {
21
+ rnv_1.ConfigManager.createRnvConfig.mockReturnValue({
22
+ files: { project: {} },
23
+ paths: {
24
+ project: {
25
+ config: '/path/to/project/renative.json',
26
+ appConfigBase: { dir: '/path/to/project/appConfigs/base/renative.json' },
27
+ },
28
+ },
29
+ });
30
+ fs_1.default.readFileSync.mockImplementation((path) => {
31
+ const spaces = 4;
32
+ if (path.endsWith('package.json')) {
33
+ return JSON.stringify(packageJson, null, spaces);
34
+ }
35
+ if (path.endsWith('renative.json')) {
36
+ if (path.includes('appConfigs/base/')) {
37
+ return JSON.stringify(baseFlavourRenativeJson, null, spaces);
38
+ }
39
+ return JSON.stringify(rootRenativeJson, null, spaces);
40
+ }
41
+ return null;
42
+ });
43
+ afterAll(() => {
44
+ jest.clearAllMocks();
45
+ jest.resetAllMocks();
46
+ jest.resetModules();
47
+ });
48
+ it('returns object with merged data from package.json file', () => {
49
+ const c = (0, resolveGenericRnvConfig_1.getBaseConfig)();
50
+ expect(c.files.project.package).toStrictEqual(packageJson);
51
+ });
52
+ it('merges root renative.json from project root and renative.json from base flavour', () => {
53
+ const c = (0, resolveGenericRnvConfig_1.getBaseConfig)();
54
+ expect(c.buildConfig).toStrictEqual({
55
+ rootProp: 'rootValue',
56
+ flavourProp: 'flavourValue',
57
+ common: {
58
+ rootProp0: 'overwrittenByFlavourValue',
59
+ rootProp1: 'rootValue1',
60
+ flavourProp: 'flavourValue',
61
+ },
62
+ });
63
+ });
64
+ it('returns with resolved template values', () => {
65
+ fs_1.default.readFileSync.mockImplementation((path) => {
66
+ const spaces = 4;
67
+ if (path.endsWith('package.json')) {
68
+ return JSON.stringify({}, null, spaces);
69
+ }
70
+ if (path.endsWith('renative.json')) {
71
+ if (path.includes('appConfigs/base/')) {
72
+ return JSON.stringify({}, null, spaces);
73
+ }
74
+ return JSON.stringify({
75
+ common: {
76
+ prop1: 'value',
77
+ prop2: '{{c.buildConfig.common.prop1}}',
78
+ },
79
+ }, null, spaces);
80
+ }
81
+ console.log(path);
82
+ return null;
83
+ });
84
+ const c = (0, resolveGenericRnvConfig_1.getBaseConfig)();
85
+ expect(c.buildConfig).toStrictEqual({
86
+ common: {
87
+ prop1: 'value',
88
+ prop2: 'value',
89
+ },
90
+ });
91
+ });
92
+ });
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolveHbbtvDeployConfig_1 = require("../../resolvers/resolveHbbtvDeployConfig");
4
+ describe('resolveHbbtvDeployConfig', () => {
5
+ it('returns object with defined "host" value', () => {
6
+ expect(typeof (0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().host).toBe('string');
7
+ expect((0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().host.length).toBeGreaterThan(0);
8
+ });
9
+ it('returns object with defined "username" value', () => {
10
+ expect(typeof (0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().username).toBe('string');
11
+ expect((0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().username.length).toBeGreaterThan(0);
12
+ });
13
+ it('returns object with defined "privateKeyRelativePath" value', () => {
14
+ expect(typeof (0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().privateKeyRelativePath).toBe('string');
15
+ expect((0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().privateKeyRelativePath.length).toBeGreaterThan(0);
16
+ });
17
+ it('returns object with "passphrase" value obtained from environment', () => {
18
+ const originalPassphraseValue = process.env.CI_SSH_KEY_PASSPHRASE;
19
+ process.env.CI_SSH_KEY_PASSPHRASE = 'password';
20
+ expect((0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().passphrase).toBe('password');
21
+ process.env.CI_SSH_KEY_PASSPHRASE = originalPassphraseValue;
22
+ });
23
+ it('returns object with defined "hostHomeDir" value', () => {
24
+ expect(typeof (0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().hostHomeDir).toBe('string');
25
+ expect((0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().hostHomeDir.length).toBeGreaterThan(0);
26
+ });
27
+ it('returns object with defined "dockerHtmlRootDir" value', () => {
28
+ expect(typeof (0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().dockerHtmlRootDir).toBe('string');
29
+ expect((0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().dockerHtmlRootDir.length).toBeGreaterThan(0);
30
+ });
31
+ it('returns object with defined "dockerContainerName" value', () => {
32
+ expect(typeof (0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().dockerContainerName).toBe('string');
33
+ expect((0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)().dockerContainerName.length).toBeGreaterThan(0);
34
+ });
35
+ });
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolveHbbtvDeployUrl_1 = require("../../resolvers/resolveHbbtvDeployUrl");
4
+ const constants_1 = require("../../constants");
5
+ describe('resolveHbbtvDeployUrl', () => {
6
+ const baseUrl = 'http://nxg-bigscreen-test.24imedia.tv';
7
+ const c = {
8
+ buildConfig: {
9
+ common: {
10
+ appNameInFileName: 'appName',
11
+ packageVersion: '1.0.0',
12
+ },
13
+ },
14
+ };
15
+ it('returns proper URL for "latest development" build schemes', () => {
16
+ expect((0, resolveHbbtvDeployUrl_1.resolveHbbtvDeployUrl)(c, constants_1.BuildSchemes.DEV_LATEST, 'flavour')).toBe(`${baseUrl}/appName/flavour/latest/dev/public/index.html`);
17
+ });
18
+ it('returns proper URL for "latest release candidate" build schemes', () => {
19
+ expect((0, resolveHbbtvDeployUrl_1.resolveHbbtvDeployUrl)(c, constants_1.BuildSchemes.RC_LATEST, 'flavour')).toBe(`${baseUrl}/appName/flavour/latest/rc/public/index.html`);
20
+ });
21
+ it('returns proper URL for "latest release" build schemes', () => {
22
+ expect((0, resolveHbbtvDeployUrl_1.resolveHbbtvDeployUrl)(c, constants_1.BuildSchemes.RELEASE_LATEST, 'flavour')).toBe(`${baseUrl}/appName/flavour/latest/release/public/index.html`);
23
+ });
24
+ it('returns proper URL for "distribution release" build schemes', () => {
25
+ expect((0, resolveHbbtvDeployUrl_1.resolveHbbtvDeployUrl)(c, constants_1.BuildSchemes.RELEASE_DIST, 'flavour')).toBe(`${baseUrl}/appName/flavour/dist/v1.0.0/public/index.html`);
26
+ });
27
+ it('returns empty string for all other build schemes', () => {
28
+ const ignoredBuildSchemes = [
29
+ constants_1.BuildSchemes.DEV_LATEST,
30
+ constants_1.BuildSchemes.RC_LATEST,
31
+ constants_1.BuildSchemes.RELEASE_LATEST,
32
+ constants_1.BuildSchemes.RELEASE_DIST,
33
+ ];
34
+ Object
35
+ .values(constants_1.BuildSchemes)
36
+ .filter((scheme) => !ignoredBuildSchemes.includes(scheme))
37
+ .forEach((schemeButNotAnyIgnored) => {
38
+ expect((0, resolveHbbtvDeployUrl_1.resolveHbbtvDeployUrl)(c, schemeButNotAnyIgnored, 'flavour')).toBe('');
39
+ });
40
+ });
41
+ });
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolveHbbtvRemoteBuildDirRelativePath_1 = require("../../resolvers/resolveHbbtvRemoteBuildDirRelativePath");
4
+ const constants_1 = require("../../constants");
5
+ describe('resolveHbbtvRemoteBuildDirRelativePath', () => {
6
+ it('returns empty string when c.buildConfig.common.appNameInFileName is not set', () => {
7
+ const c = { buildConfig: { common: {} } };
8
+ expect((0, resolveHbbtvRemoteBuildDirRelativePath_1.resolveHbbtvRemoteBuildDirRelativePath)(c, constants_1.BuildSchemes.DEV_LATEST, 'flavour')).toBe('');
9
+ });
10
+ it('returns empty string when flavour is not set', () => {
11
+ const c = { buildConfig: { common: { appNameInFileName: 'appName' } } };
12
+ expect((0, resolveHbbtvRemoteBuildDirRelativePath_1.resolveHbbtvRemoteBuildDirRelativePath)(c, constants_1.BuildSchemes.DEV_LATEST, '')).toBe('');
13
+ });
14
+ it('returns proper path for "latest development" build scheme', () => {
15
+ const c = { buildConfig: { common: { appNameInFileName: 'appName' } } };
16
+ expect((0, resolveHbbtvRemoteBuildDirRelativePath_1.resolveHbbtvRemoteBuildDirRelativePath)(c, constants_1.BuildSchemes.DEV_LATEST, 'flavour')).toBe('appName/flavour/latest/dev');
17
+ });
18
+ it('returns proper path for "latest release candidate" build scheme', () => {
19
+ const c = { buildConfig: { common: { appNameInFileName: 'appName' } } };
20
+ expect((0, resolveHbbtvRemoteBuildDirRelativePath_1.resolveHbbtvRemoteBuildDirRelativePath)(c, constants_1.BuildSchemes.RC_LATEST, 'flavour')).toBe('appName/flavour/latest/rc');
21
+ });
22
+ it('returns proper path for "latest release" build scheme', () => {
23
+ const c = { buildConfig: { common: { appNameInFileName: 'appName' } } };
24
+ expect((0, resolveHbbtvRemoteBuildDirRelativePath_1.resolveHbbtvRemoteBuildDirRelativePath)(c, constants_1.BuildSchemes.RELEASE_LATEST, 'flavour')).toBe('appName/flavour/latest/release');
25
+ });
26
+ it('returns proper path for "distribution release" build scheme', () => {
27
+ expect((0, resolveHbbtvRemoteBuildDirRelativePath_1.resolveHbbtvRemoteBuildDirRelativePath)({
28
+ buildConfig: { common: { appNameInFileName: 'appName', packageVersion: '1.0.0' } },
29
+ }, constants_1.BuildSchemes.RELEASE_DIST, 'flavour')).toBe('appName/flavour/dist/v1.0.0');
30
+ expect((0, resolveHbbtvRemoteBuildDirRelativePath_1.resolveHbbtvRemoteBuildDirRelativePath)({
31
+ buildConfig: { common: { appNameInFileName: 'appName' } },
32
+ }, constants_1.BuildSchemes.RELEASE_DIST, 'flavour')).toBe('');
33
+ });
34
+ it('returns empty string for all other build schemes', () => {
35
+ const c = { buildConfig: { common: { appNameInFileName: 'appName' } } };
36
+ const ignoredBuildSchemes = [
37
+ constants_1.BuildSchemes.DEV_LATEST,
38
+ constants_1.BuildSchemes.RC_LATEST,
39
+ constants_1.BuildSchemes.RELEASE_LATEST,
40
+ constants_1.BuildSchemes.RELEASE_DIST,
41
+ ];
42
+ Object
43
+ .values(constants_1.BuildSchemes)
44
+ .filter((scheme) => !ignoredBuildSchemes.includes(scheme))
45
+ .forEach((schemeButNotAnyIgnored) => {
46
+ expect((0, resolveHbbtvRemoteBuildDirRelativePath_1.resolveHbbtvRemoteBuildDirRelativePath)(c, schemeButNotAnyIgnored, 'flavour')).toBe('');
47
+ });
48
+ });
49
+ });
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolveSupportedPlatforms_1 = require("../../resolvers/resolveSupportedPlatforms");
4
+ const constants_1 = require("../../constants");
5
+ describe('resolveSupportedPlatforms', () => {
6
+ it('returns empty array when c.buildConfig.defaults.supportedPlatforms is not defined', () => {
7
+ const c = {
8
+ buildConfig: { defaults: {} },
9
+ };
10
+ expect((0, resolveSupportedPlatforms_1.resolveSupportedPlatforms)(c)).toStrictEqual([]);
11
+ });
12
+ it('returns c.buildConfig.defaults.supportedPlatforms array when it is defined', () => {
13
+ const c = {
14
+ buildConfig: {
15
+ defaults: {
16
+ supportedPlatforms: [constants_1.Platforms.TIZEN, constants_1.Platforms.WEBOS],
17
+ },
18
+ },
19
+ };
20
+ expect((0, resolveSupportedPlatforms_1.resolveSupportedPlatforms)(c)).toStrictEqual([constants_1.Platforms.TIZEN, constants_1.Platforms.WEBOS]);
21
+ });
22
+ });
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolveUsedFlavours_1 = require("../../resolvers/resolveUsedFlavours");
4
+ const constants_1 = require("../../constants");
5
+ describe('resolveUsedFlavours', () => {
6
+ it('returns empty array when platform deploy config is not set', () => {
7
+ const c = {
8
+ buildConfig: {
9
+ defaults: {
10
+ supportedPlatforms: [constants_1.Platforms.TIZEN, constants_1.Platforms.WEBOS, constants_1.Platforms.WEBTV],
11
+ },
12
+ platforms: {
13
+ [constants_1.Platforms.TIZEN]: {},
14
+ [constants_1.Platforms.WEBOS]: { deploy: {} },
15
+ },
16
+ },
17
+ };
18
+ expect((0, resolveUsedFlavours_1.resolveUsedFlavours)(c)).toStrictEqual([]);
19
+ });
20
+ it('returns alphabetically sorted array with used flavours', () => {
21
+ const c = {
22
+ buildConfig: {
23
+ defaults: {
24
+ supportedPlatforms: [constants_1.Platforms.TIZEN, constants_1.Platforms.WEBOS],
25
+ },
26
+ platforms: {
27
+ [constants_1.Platforms.TIZEN]: {
28
+ deploy: { supportedFlavours: ['b', 'a'] },
29
+ },
30
+ [constants_1.Platforms.WEBOS]: {
31
+ deploy: { supportedFlavours: ['b', 'c'] },
32
+ },
33
+ },
34
+ },
35
+ };
36
+ expect((0, resolveUsedFlavours_1.resolveUsedFlavours)(c)).toStrictEqual(['a', 'b', 'c']);
37
+ });
38
+ });
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const resolveZippedPlatformBuildsRelativeFilePath_1 = require("../../resolvers/resolveZippedPlatformBuildsRelativeFilePath");
4
+ const constants_1 = require("../../constants");
5
+ describe('resolveZippedPlatformBuildsRelativeFilePath', () => {
6
+ it('resolves path to zipped platform builds for all platforms', () => {
7
+ const c = {
8
+ buildConfig: {
9
+ paths: { platformBuildsDir: './dir1/dir2/dir3' },
10
+ common: { appNameInFileName: 'appName', packageVersion: '1.0.0' },
11
+ },
12
+ };
13
+ Object.values(constants_1.Platforms).forEach((platform) => {
14
+ const r = (0, resolveZippedPlatformBuildsRelativeFilePath_1.resolveZippedPlatformBuildsRelativeFilePath)(c, platform);
15
+ expect(r).toBe(`./dir1/dir2/dir3/zipped_by_platform/appName_${platform}_1.0.0.zip`);
16
+ });
17
+ });
18
+ });
@@ -8,13 +8,13 @@ const resolveBaseUrl = ({ platform, scheme, flavour }) => {
8
8
  c.platform = platform;
9
9
  c.runtime.scheme = scheme;
10
10
  c.runtime.appId = flavour;
11
- const { packageVersion = '', deploy = {} } = c.buildConfig?.common || {};
12
- const bucketName = deploy.aws3?.bucketName || '';
13
- const bucketUrl = `http://${bucketName}.s3.amazonaws.com`;
14
- const appFolderUrl = `${bucketUrl}/builds/${platform}/${flavour}`;
15
- if (!packageVersion) {
11
+ const { packageVersion, deploy } = c.buildConfig?.common;
12
+ const bucketName = deploy?.aws3?.bucketName || '';
13
+ if (!packageVersion || !bucketName) {
16
14
  return '';
17
15
  }
16
+ const bucketUrl = `http://${bucketName}.s3.amazonaws.com`;
17
+ const appFolderUrl = `${bucketUrl}/builds/${platform}/${flavour}`;
18
18
  switch (scheme) {
19
19
  case constants_1.BuildSchemes.DEV_LATEST:
20
20
  return `${appFolderUrl}/latest/dev`;
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveBuildFileName = void 0;
4
- const rnv_1 = require("rnv");
5
4
  const resolveBuildVersion_1 = require("./resolveBuildVersion");
6
5
  const constants_1 = require("../constants");
7
6
  const resolveBuildFileExtension_1 = require("./resolveBuildFileExtension");
8
- const { getConfigProp } = rnv_1.Common;
9
7
  const getBuildVersionForFileName = (c) => {
10
8
  const { platform, runtime } = c;
11
9
  const { scheme, appId } = runtime;
@@ -26,9 +24,12 @@ const getBuildVersionForFileName = (c) => {
26
24
  };
27
25
  const resolveBuildFileName = (c) => {
28
26
  const platformName = c.platform;
29
- const appNameInFileName = getConfigProp(c, platformName, 'appNameInFileName', '');
27
+ const { appNameInFileName } = c.buildConfig.common;
28
+ if (!appNameInFileName) {
29
+ throw new Error('Missing value for "c.buildConfig.common.appNameInFileName"!');
30
+ }
31
+ const appConfigId = c.runtime.appId;
30
32
  const buildVersion = getBuildVersionForFileName(c);
31
- const appConfigId = c.runtime.appId || '';
32
33
  const extension = (0, resolveBuildFileExtension_1.resolveBuildFileExtension)(platformName);
33
34
  return `${appNameInFileName}_${platformName}_${buildVersion}_${appConfigId}.${extension}`;
34
35
  };
@@ -20,7 +20,7 @@ const getSupportedFlavoursForPlatform = (c, platformName) => {
20
20
  const { supportedFlavours = [] } = c.buildConfig.platforms[platformName]?.deploy || {};
21
21
  return supportedFlavours;
22
22
  };
23
- const makeOutputObject = (buildVersion = '') => ({
23
+ const makeOutputObject = (buildVersion) => ({
24
24
  versions: {
25
25
  [buildVersion]: {
26
26
  platforms: {},
@@ -25,7 +25,7 @@ const path = __importStar(require("path"));
25
25
  const rnv_1 = require("rnv");
26
26
  const replaceRelevantStringsInConfig_1 = require("../utils/replaceRelevantStringsInConfig");
27
27
  const mergeDeep_1 = require("../utils/mergeDeep");
28
- const mergeFileJsonIntoObject = (filePath = '', targetObject = {}) => {
28
+ const mergeFileJsonIntoObject = (filePath, targetObject) => {
29
29
  const fileContentAsString = fs.readFileSync(filePath).toString();
30
30
  const fileContentAsJSON = JSON.parse(fileContentAsString);
31
31
  (0, mergeDeep_1.mergeDeep)(targetObject, fileContentAsJSON);
@@ -6,6 +6,6 @@ const resolveHbbtvDeployConfig_1 = require("./resolveHbbtvDeployConfig");
6
6
  const resolveHbbtvDeployUrl = (c, scheme, appConfigId) => {
7
7
  const { host } = (0, resolveHbbtvDeployConfig_1.resolveHbbtvDeployConfig)();
8
8
  const remoteDirRelativePath = (0, resolveHbbtvRemoteBuildDirRelativePath_1.resolveHbbtvRemoteBuildDirRelativePath)(c, scheme, appConfigId);
9
- return `http://${host}/${remoteDirRelativePath}/public/index.html`;
9
+ return remoteDirRelativePath ? `http://${host}/${remoteDirRelativePath}/public/index.html` : '';
10
10
  };
11
11
  exports.resolveHbbtvDeployUrl = resolveHbbtvDeployUrl;
@@ -1,25 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveHbbtvRemoteBuildDirRelativePath = void 0;
4
- const rnv_1 = require("rnv");
5
4
  const constants_1 = require("../constants");
6
- const { getConfigProp } = rnv_1.Common;
7
5
  const resolveHbbtvRemoteBuildDirRelativePath = (c, scheme, appConfigId) => {
8
- const { projectDirName } = getConfigProp(c, constants_1.Platforms.HBBTV, 'deploy', {});
9
- const version = getConfigProp(c, constants_1.Platforms.HBBTV, 'packageVersion', '');
10
- const appId = c.runtime.appId || appConfigId;
11
- if (!projectDirName || !appId) {
6
+ const projectDirName = c.buildConfig.common.appNameInFileName;
7
+ const version = c.buildConfig.common.packageVersion;
8
+ if (!projectDirName || !appConfigId) {
12
9
  return '';
13
10
  }
14
- switch (c.runtime.scheme || scheme) {
11
+ switch (scheme) {
15
12
  case constants_1.BuildSchemes.DEV_LATEST:
16
- return `${projectDirName}/${appId}/latest/dev`;
13
+ return `${projectDirName}/${appConfigId}/latest/dev`;
17
14
  case constants_1.BuildSchemes.RC_LATEST:
18
- return `${projectDirName}/${appId}/latest/rc`;
15
+ return `${projectDirName}/${appConfigId}/latest/rc`;
19
16
  case constants_1.BuildSchemes.RELEASE_LATEST:
20
- return `${projectDirName}/${appId}/latest/release`;
17
+ return `${projectDirName}/${appConfigId}/latest/release`;
21
18
  case constants_1.BuildSchemes.RELEASE_DIST:
22
- return `${projectDirName}/${appId}/dist/v${version}`;
19
+ return version ? `${projectDirName}/${appConfigId}/dist/v${version}` : '';
23
20
  default:
24
21
  return '';
25
22
  }
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveZippedPlatformBuildsRelativeFilePath = void 0;
4
- const rnv_1 = require("rnv");
5
4
  const resolveZippedPlatformBuildsRelativeFilePath = (c, platformName) => {
6
5
  const { platformBuildsDir } = c.buildConfig.paths;
7
- const appNameInFileName = rnv_1.Common.getConfigProp(c, platformName, 'appNameInFileName', '');
8
- const buildVersion = rnv_1.Common.getConfigProp(c, platformName, 'packageVersion', '');
6
+ const { appNameInFileName } = c.buildConfig.common;
7
+ const buildVersion = c.buildConfig.common.packageVersion;
9
8
  const zippedFilesParentDir = 'zipped_by_platform';
10
9
  const fileExtension = 'zip';
11
10
  const relativePathToDir = `${platformBuildsDir}/${zippedFilesParentDir}`;
@@ -42,7 +42,8 @@ const makeSshConnection = async (c) => {
42
42
  };
43
43
  const getLocalBuildPackagePath = (c) => (path.join(c.runtime.appDir, 'output', (0, resolvers_1.resolveBuildFileName)(c)));
44
44
  const resolveRemotePaths = (c) => {
45
- const remoteBuildDirRelativePath = (0, resolvers_1.resolveHbbtvRemoteBuildDirRelativePath)(c);
45
+ const { scheme, appId } = c.runtime;
46
+ const remoteBuildDirRelativePath = (0, resolvers_1.resolveHbbtvRemoteBuildDirRelativePath)(c, scheme, appId);
46
47
  const { hostHomeDir, dockerHtmlRootDir } = (0, resolvers_1.resolveHbbtvDeployConfig)();
47
48
  const hostTempDirName = 'travis-ci-temp';
48
49
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@24i/smartapps-bigscreen-rnv-build-engine",
3
- "version": "0.9.2",
3
+ "version": "0.10.0",
4
4
  "description": "Package with build engine for SmartApps BIGscreen projects...",
5
5
  "main": "dist/src/index.js",
6
6
  "scripts": {
@@ -10,11 +10,12 @@
10
10
  "copy:project:webos": "cp -r templates/platforms/webos/project dist/templates/platforms/webos/",
11
11
  "copy:projects": "npm run copy:project:tizen && npm run copy:project:webos",
12
12
  "eslint": "eslint \"./src/**/*.{js,jsx,ts,tsx}\" \"./templates/**/*.{js,jsx,ts,tsx}\"",
13
- "stylelint": "stylelint \"./src/**/*.scss\" --aei --cache --rd --risd --rdd",
13
+ "stylelint": "stylelint \"./src/**/*.scss\" --aei --rd --risd --rdd",
14
14
  "lintcheck": "npm run eslint && npm run stylelint",
15
15
  "typecheck": "tsc --noEmit",
16
+ "lintcheck:cached": "npm run eslint -- --cache && npm run stylelint -- --cache",
17
+ "typecheck:cached": "tsc --noEmit --incremental",
16
18
  "test": "jest --passWithNoTests",
17
- "checks": "npm run lintcheck && npm run typecheck && npm run test",
18
19
  "prepublishOnly": "npm run build"
19
20
  },
20
21
  "devDependencies": {
@@ -58,5 +59,5 @@
58
59
  "keywords": [],
59
60
  "author": "24i",
60
61
  "license": "ISC",
61
- "gitHead": "d8e7a8994fb30da7f0780afe1421bf924f7264c5"
62
+ "gitHead": "b315a9f7085bbc0b2d2c215c1862f931fc775892"
62
63
  }