@celonis/content-cli 0.4.4 → 0.4.6
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.
- package/api/variables-api.js +34 -0
- package/commands/package.command.js +4 -4
- package/content/factory/widget-manager.factory.js +4 -4
- package/content/manager/analysis-bookmarks.manager.js +1 -3
- package/content/manager/analysis.manager.js +3 -4
- package/content/manager/asset.manager.js +4 -5
- package/content-cli-import.js +2 -1
- package/content-cli-list.js +2 -1
- package/lib/api/variables-api.d.ts +7 -0
- package/lib/commands/package.command.d.ts +2 -2
- package/lib/interfaces/data-pool-manager.interfaces.d.ts +1 -1
- package/lib/interfaces/package-manager.interfaces.d.ts +8 -0
- package/lib/services/file-service.d.ts +1 -0
- package/lib/services/package-manager/package-service.d.ts +3 -3
- package/lib/services/package-manager/variable-service.d.ts +2 -1
- package/lib/util/semantic-versioning.d.ts +5 -0
- package/lib/util/yaml.d.ts +2 -0
- package/package.json +2 -2
- package/services/file-service.js +18 -3
- package/services/package-manager/package-service.js +48 -25
- package/services/package-manager/variable-service.js +7 -1
- package/util/semantic-versioning.js +29 -0
- package/util/yaml.js +21 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
(function (factory) {
|
|
11
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
12
|
+
var v = factory(require, exports);
|
|
13
|
+
if (v !== undefined) module.exports = v;
|
|
14
|
+
}
|
|
15
|
+
else if (typeof define === "function" && define.amd) {
|
|
16
|
+
define(["require", "exports", "../services/http-client-service.v2", "../util/logger"], factory);
|
|
17
|
+
}
|
|
18
|
+
})(function (require, exports) {
|
|
19
|
+
"use strict";
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
const http_client_service_v2_1 = require("../services/http-client-service.v2");
|
|
22
|
+
const logger_1 = require("../util/logger");
|
|
23
|
+
class VariablesApi {
|
|
24
|
+
assignVariableValues(packageKey, variablesAssignments) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
return http_client_service_v2_1.httpClientV2.post(`/package-manager/api/nodes/by-package-key/${packageKey}/variables/values`, variablesAssignments).catch(e => {
|
|
27
|
+
throw new logger_1.FatalError(`Problem updating variables of package ${packageKey}: ${e}`);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
VariablesApi.INSTANCE = new VariablesApi();
|
|
33
|
+
exports.variablesApi = VariablesApi.INSTANCE;
|
|
34
|
+
});
|
|
@@ -41,10 +41,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
41
41
|
yield this.contentService.batchPush(profile, this.packageManagerFactory.createPushManagers(spaceKey));
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
|
-
listPackages(jsonResponse, includeDependencies) {
|
|
44
|
+
listPackages(jsonResponse, includeDependencies, packageKeys) {
|
|
45
45
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
46
|
if (jsonResponse) {
|
|
47
|
-
yield package_service_1.packageService.findAndExportListOfAllPackages(includeDependencies);
|
|
47
|
+
yield package_service_1.packageService.findAndExportListOfAllPackages(includeDependencies, packageKeys !== null && packageKeys !== void 0 ? packageKeys : []);
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
50
50
|
yield package_service_1.packageService.listPackages();
|
|
@@ -56,9 +56,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
56
56
|
yield package_service_1.packageService.batchExportPackages(packageKeys, includeDependencies);
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
|
-
batchImportPackages(spaceMappings, exportedPackagesFile) {
|
|
59
|
+
batchImportPackages(spaceMappings, dataModelMappingsFilePath, exportedPackagesFile) {
|
|
60
60
|
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
yield package_service_1.packageService.batchImportPackages(spaceMappings !== null && spaceMappings !== void 0 ? spaceMappings : [], exportedPackagesFile);
|
|
61
|
+
yield package_service_1.packageService.batchImportPackages(spaceMappings !== null && spaceMappings !== void 0 ? spaceMappings : [], dataModelMappingsFilePath, exportedPackagesFile);
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "fs", "path", "../../util/logger", "
|
|
7
|
+
define(["require", "exports", "fs", "path", "../../util/logger", "../manager/widget.manager", "adm-zip", "../../util/yaml"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
const fs = require("fs");
|
|
13
13
|
const path = require("path");
|
|
14
14
|
const logger_1 = require("../../util/logger");
|
|
15
|
-
const YAML = require("yaml");
|
|
16
15
|
const widget_manager_1 = require("../manager/widget.manager");
|
|
17
16
|
const AdmZip = require("adm-zip");
|
|
17
|
+
const yaml_1 = require("../../util/yaml");
|
|
18
18
|
class WidgetManagerFactory {
|
|
19
19
|
createManager(tenantIndependent = false, userSpecific = false) {
|
|
20
20
|
const widgetManager = new widget_manager_1.WidgetManager();
|
|
@@ -37,10 +37,10 @@
|
|
|
37
37
|
}
|
|
38
38
|
fetchManifest() {
|
|
39
39
|
if (fs.existsSync(path.resolve(process.cwd(), "manifest.yaml"))) {
|
|
40
|
-
return
|
|
40
|
+
return yaml_1.parse(fs.readFileSync(path.resolve(process.cwd(), "manifest.yaml"), { encoding: "utf-8" }));
|
|
41
41
|
}
|
|
42
42
|
if (fs.existsSync(path.resolve(process.cwd(), "manifest.yml"))) {
|
|
43
|
-
return
|
|
43
|
+
return yaml_1.parse(fs.readFileSync(path.resolve(process.cwd(), "manifest.yml"), { encoding: "utf-8" }));
|
|
44
44
|
}
|
|
45
45
|
return null;
|
|
46
46
|
}
|
|
@@ -4,15 +4,13 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "./base.manager", "
|
|
7
|
+
define(["require", "exports", "./base.manager", "fs"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const base_manager_1 = require("./base.manager");
|
|
13
|
-
const YAML = require("yaml");
|
|
14
13
|
const fs = require("fs");
|
|
15
|
-
YAML.scalarOptions.str.doubleQuoted.jsonEncoding = true;
|
|
16
14
|
class AnalysisBookmarksManager extends base_manager_1.BaseManager {
|
|
17
15
|
get fileName() {
|
|
18
16
|
return this._fileName;
|
|
@@ -4,16 +4,15 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "./base.manager", "
|
|
7
|
+
define(["require", "exports", "./base.manager", "./asset.manager", "fs", "../../util/yaml"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const base_manager_1 = require("./base.manager");
|
|
13
|
-
const YAML = require("yaml");
|
|
14
13
|
const asset_manager_1 = require("./asset.manager");
|
|
15
14
|
const fs = require("fs");
|
|
16
|
-
|
|
15
|
+
const yaml_1 = require("../../util/yaml");
|
|
17
16
|
class AnalysisManager extends base_manager_1.BaseManager {
|
|
18
17
|
get fileName() {
|
|
19
18
|
return this._fileName;
|
|
@@ -61,7 +60,7 @@
|
|
|
61
60
|
}
|
|
62
61
|
getSerializedFileContent(data) {
|
|
63
62
|
if (this.packageManager) {
|
|
64
|
-
return
|
|
63
|
+
return yaml_1.stringify(data);
|
|
65
64
|
}
|
|
66
65
|
return JSON.stringify(data);
|
|
67
66
|
}
|
|
@@ -4,14 +4,13 @@
|
|
|
4
4
|
if (v !== undefined) module.exports = v;
|
|
5
5
|
}
|
|
6
6
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "./base.manager", "yaml"], factory);
|
|
7
|
+
define(["require", "exports", "./base.manager", "../../util/yaml"], factory);
|
|
8
8
|
}
|
|
9
9
|
})(function (require, exports) {
|
|
10
10
|
"use strict";
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const base_manager_1 = require("./base.manager");
|
|
13
|
-
const
|
|
14
|
-
YAML.scalarOptions.str.doubleQuoted.jsonEncoding = true;
|
|
13
|
+
const yaml_1 = require("../../util/yaml");
|
|
15
14
|
class AssetManager extends base_manager_1.BaseManager {
|
|
16
15
|
get key() {
|
|
17
16
|
return this._key;
|
|
@@ -52,12 +51,12 @@
|
|
|
52
51
|
};
|
|
53
52
|
}
|
|
54
53
|
toNodeTransport() {
|
|
55
|
-
const asset =
|
|
54
|
+
const asset = yaml_1.parse(this.content);
|
|
56
55
|
asset.rootNodeKey = this.packageKey;
|
|
57
56
|
return asset;
|
|
58
57
|
}
|
|
59
58
|
getSerializedFileContent(data) {
|
|
60
|
-
return
|
|
59
|
+
return yaml_1.stringify(data);
|
|
61
60
|
}
|
|
62
61
|
}
|
|
63
62
|
exports.AssetManager = AssetManager;
|
package/content-cli-import.js
CHANGED
|
@@ -30,9 +30,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
30
30
|
.description("Command to import all given packages")
|
|
31
31
|
.option("-p, --profile <profile>", "Profile which you want to use to list packages")
|
|
32
32
|
.option("--spaceMappings <spaceMappings...>", "List of mappings for importing packages to different target spaces. Mappings should follow format 'packageKey:targetSpaceKey'")
|
|
33
|
+
.option("--dataModelMappingsFile <dataModelMappingsFile>", "DataModel variable mappings file path")
|
|
33
34
|
.requiredOption("-f, --file <file>", "Exported packages file (relative path)")
|
|
34
35
|
.action((cmd) => __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
yield new package_command_1.PackageCommand().batchImportPackages(cmd.spaceMappings, cmd.file);
|
|
36
|
+
yield new package_command_1.PackageCommand().batchImportPackages(cmd.spaceMappings, cmd.dataModelMappingsFile, cmd.file);
|
|
36
37
|
process.exit();
|
|
37
38
|
}));
|
|
38
39
|
return program;
|
package/content-cli-list.js
CHANGED
|
@@ -34,8 +34,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
34
34
|
.option("-p, --profile <profile>", "Profile which you want to use to list packages")
|
|
35
35
|
.option("--json", "Return response as json type", "")
|
|
36
36
|
.option("--includeDependencies", "Include variables and dependencies", "")
|
|
37
|
+
.option("--packageKeys <packageKeys...>", "Lists only given package keys")
|
|
37
38
|
.action((cmd) => __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
yield new package_command_1.PackageCommand().listPackages(cmd.json, cmd.includeDependencies);
|
|
39
|
+
yield new package_command_1.PackageCommand().listPackages(cmd.json, cmd.includeDependencies, cmd.packageKeys);
|
|
39
40
|
process.exit();
|
|
40
41
|
}));
|
|
41
42
|
return program;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ContentNodeTransport, VariablesAssignments } from "../interfaces/package-manager.interfaces";
|
|
2
|
+
declare class VariablesApi {
|
|
3
|
+
static readonly INSTANCE: VariablesApi;
|
|
4
|
+
assignVariableValues(packageKey: string, variablesAssignments: VariablesAssignments[]): Promise<ContentNodeTransport[]>;
|
|
5
|
+
}
|
|
6
|
+
export declare const variablesApi: VariablesApi;
|
|
7
|
+
export {};
|
|
@@ -4,7 +4,7 @@ export declare class PackageCommand {
|
|
|
4
4
|
pullPackage(profile: string, key: string, store: boolean, newKey: string, draft: boolean): Promise<void>;
|
|
5
5
|
pushPackage(profile: string, spaceKey: string, fileName: string, newKey: string, overwrite: boolean): Promise<void>;
|
|
6
6
|
pushPackages(profile: string, spaceKey: string): Promise<void>;
|
|
7
|
-
listPackages(jsonResponse: boolean, includeDependencies: boolean): Promise<void>;
|
|
7
|
+
listPackages(jsonResponse: boolean, includeDependencies: boolean, packageKeys: string[]): Promise<void>;
|
|
8
8
|
batchExportPackages(packageKeys: string[], includeDependencies: boolean): Promise<void>;
|
|
9
|
-
batchImportPackages(spaceMappings: string[], exportedPackagesFile: string): Promise<void>;
|
|
9
|
+
batchImportPackages(spaceMappings: string[], dataModelMappingsFilePath: string, exportedPackagesFile: string): Promise<void>;
|
|
10
10
|
}
|
|
@@ -49,6 +49,14 @@ export interface VariablesAssignments {
|
|
|
49
49
|
value: object;
|
|
50
50
|
type: string;
|
|
51
51
|
}
|
|
52
|
+
export interface VariableDefinitionWithValue {
|
|
53
|
+
key: string;
|
|
54
|
+
type: string;
|
|
55
|
+
description?: string;
|
|
56
|
+
source?: string;
|
|
57
|
+
runtime?: boolean;
|
|
58
|
+
metadata?: object;
|
|
59
|
+
}
|
|
52
60
|
export interface PackageHistoryTransport {
|
|
53
61
|
id: string;
|
|
54
62
|
key: string;
|
|
@@ -4,6 +4,7 @@ export declare class FileService {
|
|
|
4
4
|
writeToFileWithGivenName(data: any, filename: string): void;
|
|
5
5
|
createDirectoryWithGivenName(dirName: string): void;
|
|
6
6
|
readManifestFile(importedFileName: string): Promise<ManifestNodeTransport[]>;
|
|
7
|
+
readFileToJson<T>(fileName: string): Promise<T>;
|
|
7
8
|
readFile(filename: string): string;
|
|
8
9
|
private getSerializedFileContent;
|
|
9
10
|
}
|
|
@@ -4,12 +4,12 @@ import { ManifestNodeTransport } from "../../interfaces/manifest-transport";
|
|
|
4
4
|
declare class PackageService {
|
|
5
5
|
protected readonly fileDownloadedMessage = "File downloaded successfully. New filename: ";
|
|
6
6
|
listPackages(): Promise<void>;
|
|
7
|
-
findAndExportListOfAllPackages(includeDependencies: boolean): Promise<void>;
|
|
8
|
-
batchImportPackages(spaceMappings: string[], exportedPackagesFile: string): Promise<void>;
|
|
7
|
+
findAndExportListOfAllPackages(includeDependencies: boolean, packageKeys: string[]): Promise<void>;
|
|
8
|
+
batchImportPackages(spaceMappings: string[], dataModelMappingsFilePath: string, exportedPackagesFile: string): Promise<void>;
|
|
9
9
|
private checkNodeForCircularDependency;
|
|
10
10
|
private importPackage;
|
|
11
|
-
private compareVersions;
|
|
12
11
|
private importPackageVersion;
|
|
12
|
+
private isLatestVersion;
|
|
13
13
|
private importDependencyPackages;
|
|
14
14
|
private checkIfPackageVersionHasBeenImported;
|
|
15
15
|
private createBodyForImport;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { PackageWithVariableAssignments } from "../../interfaces/package-manager.interfaces";
|
|
1
|
+
import { PackageWithVariableAssignments, VariablesAssignments } from "../../interfaces/package-manager.interfaces";
|
|
2
2
|
import { BatchExportNodeTransport } from "../../interfaces/batch-export-node-transport";
|
|
3
3
|
declare class VariableService {
|
|
4
4
|
getVariableAssignmentsForNodes(nodes: BatchExportNodeTransport[]): Promise<PackageWithVariableAssignments[]>;
|
|
5
|
+
assignVariableValues(packageKey: string, variablesAssignments: VariablesAssignments[]): Promise<void>;
|
|
5
6
|
}
|
|
6
7
|
export declare const variableService: VariableService;
|
|
7
8
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@celonis/content-cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.6",
|
|
4
4
|
"description": "CLI Tool to help manage content in Celonis EMS",
|
|
5
5
|
"main": "content-cli.js",
|
|
6
6
|
"bin": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"semver": "^7.3.2",
|
|
23
23
|
"valid-url": "^1.0.9",
|
|
24
24
|
"winston": "^3.1.0",
|
|
25
|
-
"yaml": "
|
|
25
|
+
"yaml": "2.0.0-8"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/adm-zip": "^0.4.34",
|
package/services/file-service.js
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
(function (factory) {
|
|
2
11
|
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
12
|
var v = factory(require, exports);
|
|
4
13
|
if (v !== undefined) module.exports = v;
|
|
5
14
|
}
|
|
6
15
|
else if (typeof define === "function" && define.amd) {
|
|
7
|
-
define(["require", "exports", "fs", "path", "
|
|
16
|
+
define(["require", "exports", "fs", "path", "../util/logger", "../util/yaml"], factory);
|
|
8
17
|
}
|
|
9
18
|
})(function (require, exports) {
|
|
10
19
|
"use strict";
|
|
11
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
21
|
const fs = require("fs");
|
|
13
22
|
const path = require("path");
|
|
14
|
-
const YAML = require("yaml");
|
|
15
23
|
const logger_1 = require("../util/logger");
|
|
24
|
+
const yaml_1 = require("../util/yaml");
|
|
16
25
|
class FileService {
|
|
17
26
|
writeToFileWithGivenName(data, filename) {
|
|
18
27
|
fs.writeFileSync(path.resolve(process.cwd(), filename), this.getSerializedFileContent(data), {
|
|
@@ -23,9 +32,15 @@
|
|
|
23
32
|
fs.mkdirSync(path.resolve(process.cwd(), dirName));
|
|
24
33
|
}
|
|
25
34
|
readManifestFile(importedFileName) {
|
|
26
|
-
const manifest =
|
|
35
|
+
const manifest = yaml_1.parse(fs.readFileSync(path.resolve(importedFileName + "/manifest.yml"), { encoding: "utf-8" }));
|
|
27
36
|
return Promise.all(manifest);
|
|
28
37
|
}
|
|
38
|
+
readFileToJson(fileName) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
const fileContent = this.readFile(fileName);
|
|
41
|
+
return JSON.parse(fileContent);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
29
44
|
readFile(filename) {
|
|
30
45
|
if (!fs.existsSync(path.resolve(process.cwd(), filename))) {
|
|
31
46
|
logger_1.logger.error(new logger_1.FatalError(`The provided file '${filename}' does not exit`));
|
|
@@ -13,7 +13,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
13
13
|
if (v !== undefined) module.exports = v;
|
|
14
14
|
}
|
|
15
15
|
else if (typeof define === "function" && define.amd) {
|
|
16
|
-
define(["require", "exports", "../../util/logger", "../../api/package-api", "uuid", "../file-service", "./datamodel-service", "../../api/node-api", "../../api/package-dependencies-api", "./variable-service", "./space-service", "
|
|
16
|
+
define(["require", "exports", "../../util/logger", "../../api/package-api", "uuid", "../file-service", "./datamodel-service", "../../api/node-api", "../../api/package-dependencies-api", "./variable-service", "./space-service", "fs", "adm-zip", "path", "os", "../../util/semantic-versioning", "../../util/yaml"], factory);
|
|
17
17
|
}
|
|
18
18
|
})(function (require, exports) {
|
|
19
19
|
"use strict";
|
|
@@ -27,11 +27,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
27
27
|
const package_dependencies_api_1 = require("../../api/package-dependencies-api");
|
|
28
28
|
const variable_service_1 = require("./variable-service");
|
|
29
29
|
const space_service_1 = require("./space-service");
|
|
30
|
-
const YAML = require("yaml");
|
|
31
30
|
const fs = require("fs");
|
|
32
31
|
const AdmZip = require("adm-zip");
|
|
33
32
|
const path = require("path");
|
|
34
33
|
const os_1 = require("os");
|
|
34
|
+
const semantic_versioning_1 = require("../../util/semantic-versioning");
|
|
35
|
+
const yaml_1 = require("../../util/yaml");
|
|
35
36
|
class PackageService {
|
|
36
37
|
constructor() {
|
|
37
38
|
this.fileDownloadedMessage = "File downloaded successfully. New filename: ";
|
|
@@ -44,10 +45,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
44
45
|
});
|
|
45
46
|
});
|
|
46
47
|
}
|
|
47
|
-
findAndExportListOfAllPackages(includeDependencies) {
|
|
48
|
+
findAndExportListOfAllPackages(includeDependencies, packageKeys) {
|
|
48
49
|
return __awaiter(this, void 0, void 0, function* () {
|
|
49
50
|
const fieldsToInclude = ["key", "name", "changeDate", "activatedDraftId", "spaceId"];
|
|
50
51
|
let nodesListToExport = yield package_api_1.packageApi.findAllPackages();
|
|
52
|
+
if (packageKeys.length > 0) {
|
|
53
|
+
nodesListToExport = nodesListToExport.filter(node => {
|
|
54
|
+
return packageKeys.includes(node.rootNodeKey);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
51
57
|
if (includeDependencies) {
|
|
52
58
|
fieldsToInclude.push("type", "value", "dependencies", "id", "updateAvailable", "version", "poolId", "node", "dataModelId", "dataPool", "datamodels");
|
|
53
59
|
const packagesKeyWithActionFlows = (yield node_api_1.nodeApi.findAllNodesOfType("SCENARIO")).map(node => node.rootNodeKey);
|
|
@@ -74,7 +80,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
74
80
|
this.exportListOfPackages(nodesListToExport, fieldsToInclude);
|
|
75
81
|
});
|
|
76
82
|
}
|
|
77
|
-
batchImportPackages(spaceMappings, exportedPackagesFile) {
|
|
83
|
+
batchImportPackages(spaceMappings, dataModelMappingsFilePath, exportedPackagesFile) {
|
|
78
84
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
85
|
exportedPackagesFile = exportedPackagesFile + (exportedPackagesFile.includes(".zip") ? "" : ".zip");
|
|
80
86
|
const zip = new AdmZip(exportedPackagesFile);
|
|
@@ -82,6 +88,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
82
88
|
yield fs.mkdirSync(importedFilePath);
|
|
83
89
|
yield zip.extractAllTo(importedFilePath);
|
|
84
90
|
const manifestNodes = yield file_service_1.fileService.readManifestFile(importedFilePath);
|
|
91
|
+
let dmTargetIdsBySourceIds;
|
|
92
|
+
if (dataModelMappingsFilePath) {
|
|
93
|
+
const dataModelMappings = yield file_service_1.fileService.readFileToJson(dataModelMappingsFilePath);
|
|
94
|
+
dmTargetIdsBySourceIds = new Map(Object.entries(dataModelMappings.dataModelIdMappings));
|
|
95
|
+
}
|
|
85
96
|
manifestNodes.map(node => node.dependenciesByVersion = new Map(Object.entries(node.dependenciesByVersion)));
|
|
86
97
|
const importedVersionsByNodeKey = new Map();
|
|
87
98
|
const sourceToTargetVersionsByNodeKey = new Map();
|
|
@@ -97,7 +108,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
97
108
|
});
|
|
98
109
|
const draftIdsByPackageKeyAndVersion = new Map();
|
|
99
110
|
for (const node of manifestNodes) {
|
|
100
|
-
yield this.importPackage(node, manifestNodes, sourceToTargetVersionsByNodeKey, customSpacesMap, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
|
|
111
|
+
yield this.importPackage(node, manifestNodes, sourceToTargetVersionsByNodeKey, customSpacesMap, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
|
|
101
112
|
}
|
|
102
113
|
});
|
|
103
114
|
}
|
|
@@ -114,14 +125,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
114
125
|
}
|
|
115
126
|
});
|
|
116
127
|
}
|
|
117
|
-
importPackage(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath) {
|
|
128
|
+
importPackage(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath) {
|
|
118
129
|
var _a;
|
|
119
130
|
return __awaiter(this, void 0, void 0, function* () {
|
|
120
131
|
const importedPackageVersion = (_a = importedVersionsByNodeKey.get(packageToImport.packageKey)) !== null && _a !== void 0 ? _a : [];
|
|
121
|
-
const versionsOfPackage = [...packageToImport.dependenciesByVersion.keys()].sort((k1, k2) =>
|
|
132
|
+
const versionsOfPackage = [...packageToImport.dependenciesByVersion.keys()].sort((k1, k2) => {
|
|
133
|
+
const version1 = new semantic_versioning_1.SemanticVersioning(k1);
|
|
134
|
+
const version2 = new semantic_versioning_1.SemanticVersioning(k1);
|
|
135
|
+
return version1.isGreaterThan(version2) ? 1 : -1;
|
|
136
|
+
}).filter(version => !importedPackageVersion.includes(version));
|
|
122
137
|
for (const version of versionsOfPackage) {
|
|
123
138
|
try {
|
|
124
|
-
yield this.importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, version);
|
|
139
|
+
yield this.importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, version);
|
|
125
140
|
}
|
|
126
141
|
catch (e) {
|
|
127
142
|
logger_1.logger.error(`Problem import package with key: ${packageToImport.packageKey} ${version} ${e}`);
|
|
@@ -129,24 +144,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
129
144
|
}
|
|
130
145
|
});
|
|
131
146
|
}
|
|
132
|
-
|
|
133
|
-
const splitVersion1 = version1.split(".");
|
|
134
|
-
const splitVersion2 = version2.split(".");
|
|
135
|
-
const majorVersion1 = splitVersion1[0];
|
|
136
|
-
const majorVersion2 = splitVersion2[0];
|
|
137
|
-
const minorVersion1 = splitVersion1[1];
|
|
138
|
-
const minorVersion2 = splitVersion2[1];
|
|
139
|
-
const patchVersion1 = splitVersion1[2];
|
|
140
|
-
const patchVersion2 = splitVersion2[2];
|
|
141
|
-
const firstVersionIsGreaterThanFirst = (majorVersion1 > majorVersion2) || (minorVersion1 > minorVersion2) || (patchVersion1 > patchVersion2);
|
|
142
|
-
return firstVersionIsGreaterThanFirst ? 1 : -1;
|
|
143
|
-
}
|
|
144
|
-
importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, versionOfPackageBeingImported) {
|
|
147
|
+
importPackageVersion(packageToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath, versionOfPackageBeingImported) {
|
|
145
148
|
var _a, _b;
|
|
146
149
|
return __awaiter(this, void 0, void 0, function* () {
|
|
147
150
|
if (packageToImport.dependenciesByVersion.get(versionOfPackageBeingImported).length) {
|
|
148
151
|
const dependenciesOfPackageVersion = packageToImport.dependenciesByVersion.get(versionOfPackageBeingImported);
|
|
149
|
-
yield this.importDependencyPackages(dependenciesOfPackageVersion, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
|
|
152
|
+
yield this.importDependencyPackages(dependenciesOfPackageVersion, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
|
|
150
153
|
}
|
|
151
154
|
if (this.checkIfPackageVersionHasBeenImported(packageToImport.packageKey, versionOfPackageBeingImported, importedVersionsByNodeKey)) {
|
|
152
155
|
return;
|
|
@@ -160,6 +163,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
160
163
|
yield package_api_1.packageApi.movePackageToSpace(nodeInTargetTeam.id, targetSpace.id);
|
|
161
164
|
}
|
|
162
165
|
nodeInTargetTeam = yield node_api_1.nodeApi.findOneByKeyAndRootNodeKey(packageToImport.packageKey, packageToImport.packageKey);
|
|
166
|
+
if (this.isLatestVersion(versionOfPackageBeingImported, [...packageToImport.dependenciesByVersion.keys()])) {
|
|
167
|
+
const variableAssignments = packageToImport.variables
|
|
168
|
+
.filter(variable => variable.type === "DATA_MODEL").map(variable => {
|
|
169
|
+
variable.value = dmTargetIdsBySourceIds.get(variable.value.toString());
|
|
170
|
+
return variable;
|
|
171
|
+
});
|
|
172
|
+
yield variable_service_1.variableService.assignVariableValues(nodeInTargetTeam.key, variableAssignments);
|
|
173
|
+
}
|
|
163
174
|
draftIdsByPackageKeyAndVersion.set(`${nodeInTargetTeam.key}_${versionOfPackageBeingImported}`, nodeInTargetTeam.workingDraftId);
|
|
164
175
|
yield this.updateDependencyVersions(packageToImport, versionOfPackageBeingImported, sourceToTargetVersionsByNodeKey, draftIdsByPackageKeyAndVersion);
|
|
165
176
|
yield this.publishPackage(packageToImport);
|
|
@@ -174,14 +185,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
174
185
|
logger_1.logger.info(`Imported package with key: ${packageToImport.packageKey} ${versionOfPackageBeingImported} successfully. New version: ${mappedVersion}`);
|
|
175
186
|
});
|
|
176
187
|
}
|
|
177
|
-
|
|
188
|
+
isLatestVersion(packageVersion, allPackageVersions) {
|
|
189
|
+
let isLatestVersion = true;
|
|
190
|
+
for (const version of allPackageVersions) {
|
|
191
|
+
const version1 = new semantic_versioning_1.SemanticVersioning(packageVersion);
|
|
192
|
+
const version2 = new semantic_versioning_1.SemanticVersioning(version);
|
|
193
|
+
if (version2.isGreaterThan(version1)) {
|
|
194
|
+
isLatestVersion = false;
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return isLatestVersion;
|
|
199
|
+
}
|
|
200
|
+
importDependencyPackages(dependenciesToImport, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath) {
|
|
178
201
|
return __awaiter(this, void 0, void 0, function* () {
|
|
179
202
|
for (const dependency of dependenciesToImport) {
|
|
180
203
|
if (this.checkIfPackageVersionHasBeenImported(dependency.key, dependency.version, importedVersionsByNodeKey)) {
|
|
181
204
|
continue;
|
|
182
205
|
}
|
|
183
206
|
const dependentPackage = manifestNodes.find((node) => node.packageKey === dependency.key);
|
|
184
|
-
yield this.importPackage(dependentPackage, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
|
|
207
|
+
yield this.importPackage(dependentPackage, manifestNodes, sourceToTargetVersionsByNodeKey, spaceMappings, dmTargetIdsBySourceIds, importedVersionsByNodeKey, draftIdsByPackageKeyAndVersion, importedFilePath);
|
|
185
208
|
}
|
|
186
209
|
});
|
|
187
210
|
}
|
|
@@ -365,7 +388,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
365
388
|
const manifestNodes = this.exportManifestOfPackages(nodes, versionsByNodeKey);
|
|
366
389
|
const packageZips = yield this.exportPackagesAndAssets(nodes);
|
|
367
390
|
const zip = new AdmZip();
|
|
368
|
-
zip.addFile("manifest.yml", Buffer.from(
|
|
391
|
+
zip.addFile("manifest.yml", Buffer.from(yaml_1.stringify(manifestNodes), "utf8"));
|
|
369
392
|
for (const packageZip of packageZips) {
|
|
370
393
|
zip.addFile(`${packageZip.packageKey}_${packageZip.version}.zip`, packageZip.data);
|
|
371
394
|
}
|
|
@@ -13,18 +13,24 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
13
13
|
if (v !== undefined) module.exports = v;
|
|
14
14
|
}
|
|
15
15
|
else if (typeof define === "function" && define.amd) {
|
|
16
|
-
define(["require", "exports", "../../api/package-api"], factory);
|
|
16
|
+
define(["require", "exports", "../../api/package-api", "../../api/variables-api"], factory);
|
|
17
17
|
}
|
|
18
18
|
})(function (require, exports) {
|
|
19
19
|
"use strict";
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
21
|
const package_api_1 = require("../../api/package-api");
|
|
22
|
+
const variables_api_1 = require("../../api/variables-api");
|
|
22
23
|
class VariableService {
|
|
23
24
|
getVariableAssignmentsForNodes(nodes) {
|
|
24
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
26
|
return yield package_api_1.packageApi.findAllPackagesWithVariableAssignments();
|
|
26
27
|
});
|
|
27
28
|
}
|
|
29
|
+
assignVariableValues(packageKey, variablesAssignments) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
yield variables_api_1.variablesApi.assignVariableValues(packageKey, variablesAssignments);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
28
34
|
}
|
|
29
35
|
exports.variableService = new VariableService();
|
|
30
36
|
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
+
var v = factory(require, exports);
|
|
4
|
+
if (v !== undefined) module.exports = v;
|
|
5
|
+
}
|
|
6
|
+
else if (typeof define === "function" && define.amd) {
|
|
7
|
+
define(["require", "exports"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
class SemanticVersioning {
|
|
13
|
+
constructor(version) {
|
|
14
|
+
this.version = version;
|
|
15
|
+
}
|
|
16
|
+
isGreaterThan(versionToCompare) {
|
|
17
|
+
const splitVersion1 = this.version.split(".");
|
|
18
|
+
const splitVersion2 = versionToCompare.version.split(".");
|
|
19
|
+
const majorVersion1 = splitVersion1[0];
|
|
20
|
+
const majorVersion2 = splitVersion2[0];
|
|
21
|
+
const minorVersion1 = splitVersion1[1];
|
|
22
|
+
const minorVersion2 = splitVersion2[1];
|
|
23
|
+
const patchVersion1 = splitVersion1[2];
|
|
24
|
+
const patchVersion2 = splitVersion2[2];
|
|
25
|
+
return (majorVersion1 > majorVersion2) || (minorVersion1 > minorVersion2) || (patchVersion1 > patchVersion2);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.SemanticVersioning = SemanticVersioning;
|
|
29
|
+
});
|
package/util/yaml.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
+
var v = factory(require, exports);
|
|
4
|
+
if (v !== undefined) module.exports = v;
|
|
5
|
+
}
|
|
6
|
+
else if (typeof define === "function" && define.amd) {
|
|
7
|
+
define(["require", "exports", "yaml"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const YAML = require("yaml");
|
|
13
|
+
function stringify(data) {
|
|
14
|
+
return YAML.stringify(data, { doubleQuotedAsJSON: true, indent: 2, lineWidth: 200 });
|
|
15
|
+
}
|
|
16
|
+
exports.stringify = stringify;
|
|
17
|
+
function parse(data) {
|
|
18
|
+
return YAML.parse(data);
|
|
19
|
+
}
|
|
20
|
+
exports.parse = parse;
|
|
21
|
+
});
|