@sw-tsdk/common 0.1.1-next.23

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 (98) hide show
  1. package/LICENSE +8 -0
  2. package/lib/index.d.ts +4 -0
  3. package/lib/index.js +8 -0
  4. package/lib/index.js.map +1 -0
  5. package/lib/schemas/asset.d.ts +13 -0
  6. package/lib/schemas/asset.js +3 -0
  7. package/lib/schemas/asset.js.map +1 -0
  8. package/lib/schemas/available-output-type.d.ts +7 -0
  9. package/lib/schemas/available-output-type.js +12 -0
  10. package/lib/schemas/available-output-type.js.map +1 -0
  11. package/lib/schemas/family.d.ts +14 -0
  12. package/lib/schemas/family.js +19 -0
  13. package/lib/schemas/family.js.map +1 -0
  14. package/lib/schemas/index.d.ts +7 -0
  15. package/lib/schemas/index.js +11 -0
  16. package/lib/schemas/index.js.map +1 -0
  17. package/lib/schemas/integration.d.ts +39 -0
  18. package/lib/schemas/integration.js +50 -0
  19. package/lib/schemas/integration.js.map +1 -0
  20. package/lib/schemas/os-support.d.ts +4 -0
  21. package/lib/schemas/os-support.js +3 -0
  22. package/lib/schemas/os-support.js.map +1 -0
  23. package/lib/schemas/package.d.ts +26 -0
  24. package/lib/schemas/package.js +3 -0
  25. package/lib/schemas/package.js.map +1 -0
  26. package/lib/schemas/python-version.d.ts +4 -0
  27. package/lib/schemas/python-version.js +9 -0
  28. package/lib/schemas/python-version.js.map +1 -0
  29. package/lib/templates/CHANGELOG.md.t +7 -0
  30. package/lib/templates/INTERNAL_CHANGELOG.md.t +7 -0
  31. package/lib/templates/README.md.t +40 -0
  32. package/lib/templates/asset.json.t +132 -0
  33. package/lib/templates/assetConfig.json.t +3 -0
  34. package/lib/templates/config.json.t +9 -0
  35. package/lib/templates/conftest.py.t +1 -0
  36. package/lib/templates/data_asset.json.t +4 -0
  37. package/lib/templates/dist_requirements.txt.t +3 -0
  38. package/lib/templates/example.py.t +13 -0
  39. package/lib/templates/import.json.t +23 -0
  40. package/lib/templates/init.py.t +17 -0
  41. package/lib/templates/package.json.t +22 -0
  42. package/lib/templates/pre-commit-config.yaml.t +41 -0
  43. package/lib/templates/rest_module_init.t +11 -0
  44. package/lib/templates/setup.py.t +17 -0
  45. package/lib/templates/test_connection.py.t +4 -0
  46. package/lib/templates/test_default.py.t +1 -0
  47. package/lib/templates/test_requirements.txt.t +1 -0
  48. package/lib/types/index.d.ts +1 -0
  49. package/lib/types/index.js +5 -0
  50. package/lib/types/index.js.map +1 -0
  51. package/lib/types/integration.interfaces.d.ts +43 -0
  52. package/lib/types/integration.interfaces.js +19 -0
  53. package/lib/types/integration.interfaces.js.map +1 -0
  54. package/lib/utils/image-processor.d.ts +13 -0
  55. package/lib/utils/image-processor.js +105 -0
  56. package/lib/utils/image-processor.js.map +1 -0
  57. package/lib/utils/index.d.ts +5 -0
  58. package/lib/utils/index.js +9 -0
  59. package/lib/utils/index.js.map +1 -0
  60. package/lib/utils/integration-generator.d.ts +20 -0
  61. package/lib/utils/integration-generator.js +257 -0
  62. package/lib/utils/integration-generator.js.map +1 -0
  63. package/lib/utils/loading-messages.d.ts +3 -0
  64. package/lib/utils/loading-messages.js +263 -0
  65. package/lib/utils/loading-messages.js.map +1 -0
  66. package/lib/utils/task-generator.d.ts +9 -0
  67. package/lib/utils/task-generator.js +113 -0
  68. package/lib/utils/task-generator.js.map +1 -0
  69. package/lib/utils/template-loader.d.ts +4 -0
  70. package/lib/utils/template-loader.js +16 -0
  71. package/lib/utils/template-loader.js.map +1 -0
  72. package/lib/versioning/constants.d.ts +6 -0
  73. package/lib/versioning/constants.js +15 -0
  74. package/lib/versioning/constants.js.map +1 -0
  75. package/lib/versioning/index.d.ts +3 -0
  76. package/lib/versioning/index.js +7 -0
  77. package/lib/versioning/index.js.map +1 -0
  78. package/lib/versioning/presets.d.ts +27 -0
  79. package/lib/versioning/presets.js +86 -0
  80. package/lib/versioning/presets.js.map +1 -0
  81. package/lib/versioning/read-changelog-diff.d.ts +1 -0
  82. package/lib/versioning/read-changelog-diff.js +31 -0
  83. package/lib/versioning/read-changelog-diff.js.map +1 -0
  84. package/lib/versioning/read-existing-changelog.d.ts +1 -0
  85. package/lib/versioning/read-existing-changelog.js +32 -0
  86. package/lib/versioning/read-existing-changelog.js.map +1 -0
  87. package/lib/versioning/recommend-version.d.ts +1 -0
  88. package/lib/versioning/recommend-version.js +76 -0
  89. package/lib/versioning/recommend-version.js.map +1 -0
  90. package/lib/versioning/templates/commit.hbs +9 -0
  91. package/lib/versioning/templates/footer.hbs +0 -0
  92. package/lib/versioning/templates/header.hbs +13 -0
  93. package/lib/versioning/templates/internal-commit.hbs +32 -0
  94. package/lib/versioning/templates/template.hbs +23 -0
  95. package/lib/versioning/update-changelog.d.ts +1 -0
  96. package/lib/versioning/update-changelog.js +85 -0
  97. package/lib/versioning/update-changelog.js.map +1 -0
  98. package/package.json +60 -0
@@ -0,0 +1,11 @@
1
+ from basic_rest_endpoint import BasicRestEndpoint, asset_parser
2
+
3
+ class {{base_class_name}}(BasicRestEndpoint):
4
+
5
+ method = "GET"
6
+ endpoint = ""
7
+
8
+ def __init__(self, context):
9
+ super().__init__(**asset_parser(context.asset))
10
+
11
+ self.configure_status_actions(verbose_errors=context.asset['verbose_errors'])
@@ -0,0 +1,17 @@
1
+ from setuptools import setup
2
+ from json import load
3
+
4
+ def convert(_input):
5
+ if isinstance(_input, dict):
6
+ return {convert(k): convert(v) for k, v in _input.items()}
7
+ elif isinstance(_input, list):
8
+ return [convert(element) for element in _input]
9
+ elif isinstance(_input, bytes):
10
+ return _input.decode()
11
+ else:
12
+ return _input
13
+
14
+ with open("package.json") as config_file:
15
+ config = load(config_file, object_hook=convert)
16
+ config.pop("version_hash")
17
+ setup(**config)
@@ -0,0 +1,4 @@
1
+ from {{{bundleModuleName}}} import {{{baseClassName}}}
2
+ from swimlane_connector_utilities import create_test_conn
3
+
4
+ SwMain = create_test_conn({{{baseClassName}}}, execute_func="execute", custom_test_funcs=[])
@@ -0,0 +1 @@
1
+ from swimlane_integration_testing.test_general_rest import *
@@ -0,0 +1 @@
1
+ swimlane-integration-testing
@@ -0,0 +1 @@
1
+ export * from './integration.interfaces';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./integration.interfaces"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,mEAAwC"}
@@ -0,0 +1,43 @@
1
+ /// <reference types="node" />
2
+ export declare type TemplateTypes = 'asset.json' | 'CHANGELOG.md' | 'dist_requirements.txt' | 'import.json' | 'init.py' | 'INTERNAL_CHANGELOG.md' | 'package.json' | 'README.md' | 'setup.py' | 'test_connection.py' | 'example.py' | 'conftest.py' | 'test_default.py' | 'test_requirements.txt' | 'config.json' | 'data_asset.json' | 'assetConfig.json' | 'pre-commit-config.yaml';
3
+ export declare type CreateIntegrationOptions = {
4
+ vendor: string;
5
+ product: string;
6
+ family: string;
7
+ description: string;
8
+ requirements: string;
9
+ restTemplate: boolean;
10
+ logoPath: string;
11
+ generateExamples: boolean;
12
+ createPytestStructure: boolean;
13
+ supportedSwimlaneVersion?: string;
14
+ author?: string;
15
+ authorEmail?: string;
16
+ url?: string;
17
+ };
18
+ export declare type TaskCreateOptions = {
19
+ name: string;
20
+ description: string;
21
+ };
22
+ export declare class Image {
23
+ private readonly _raw;
24
+ getRaw(): Buffer;
25
+ constructor(raw: Buffer);
26
+ getBase64String(): string;
27
+ getBase64Image(): string;
28
+ }
29
+ export declare type Images = {
30
+ source: Image;
31
+ integration: Image;
32
+ asset: Image;
33
+ };
34
+ export declare type GeneratedOptions = {
35
+ moduleName: string;
36
+ integrationName: string;
37
+ baseClassName: string;
38
+ bundleName: string;
39
+ integrationTitle: string;
40
+ images: Images;
41
+ importsPath: string;
42
+ modulePath: string;
43
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Image = void 0;
4
+ class Image {
5
+ constructor(raw) {
6
+ this._raw = raw;
7
+ }
8
+ getRaw() {
9
+ return this._raw;
10
+ }
11
+ getBase64String() {
12
+ return this._raw.toString('base64');
13
+ }
14
+ getBase64Image() {
15
+ return `data:image/png;base64,${this.getBase64String()}`;
16
+ }
17
+ }
18
+ exports.Image = Image;
19
+ //# sourceMappingURL=integration.interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.interfaces.js","sourceRoot":"","sources":["../../src/types/integration.interfaces.ts"],"names":[],"mappings":";;;AAyCA,MAAa,KAAK;IAOd,YAAY,GAAW;QACrB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;IACjB,CAAC;IAND,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAMD,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACrC,CAAC;IAED,cAAc;QACZ,OAAO,yBAAyB,IAAI,CAAC,eAAe,EAAE,EAAE,CAAA;IAC1D,CAAC;CACJ;AAlBD,sBAkBC"}
@@ -0,0 +1,13 @@
1
+ import { Images } from '../types';
2
+ export declare class ImageProcessor {
3
+ private static sourceSize;
4
+ private static integrationSize;
5
+ private static assetSize;
6
+ private static image;
7
+ static process(path: string): Promise<Images | null>;
8
+ private static pullImage;
9
+ private static checkDocker;
10
+ private static resizeImage;
11
+ private static downloadImage;
12
+ private static moveFile;
13
+ }
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImageProcessor = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const node_path_1 = require("node:path");
6
+ const types_1 = require("../types");
7
+ const node_fs_1 = require("node:fs");
8
+ const axios_1 = tslib_1.__importDefault(require("axios"));
9
+ const temp_1 = tslib_1.__importDefault(require("temp"));
10
+ const file_type_1 = require("file-type");
11
+ const docker_1 = require("@sw-tsdk/docker");
12
+ const node_os_1 = require("node:os");
13
+ const core_1 = require("@sw-tsdk/core");
14
+ class ImageProcessor {
15
+ static async process(path) {
16
+ // get image buffer
17
+ const filePath = path.startsWith('http') ?
18
+ await this.downloadImage(path) :
19
+ await this.moveFile(path);
20
+ const docker = new docker_1.Docker();
21
+ await this.checkDocker(docker);
22
+ await this.pullImage(docker);
23
+ const result = await Promise.all([
24
+ this.resizeImage(docker, filePath, this.sourceSize),
25
+ this.resizeImage(docker, filePath, this.integrationSize),
26
+ this.resizeImage(docker, filePath, this.assetSize),
27
+ ]);
28
+ return {
29
+ source: new types_1.Image(result[0]),
30
+ integration: new types_1.Image(result[1]),
31
+ asset: new types_1.Image(result[2]),
32
+ };
33
+ }
34
+ static async pullImage(docker) {
35
+ await docker.pullImage(this.image);
36
+ }
37
+ static async checkDocker(docker) {
38
+ await docker.ping();
39
+ }
40
+ static async resizeImage(docker, filePath, size) {
41
+ const { w, h } = size;
42
+ const fileInfo = (0, node_path_1.parse)(filePath);
43
+ const { dir: fileDir, base: fileName } = fileInfo;
44
+ const outFile = `logo_${w}_${h}.png`;
45
+ const bindings = [
46
+ `${fileDir}:/tmp`,
47
+ ];
48
+ const commands = [
49
+ 'v1/querystring',
50
+ '--in',
51
+ `/tmp/${fileName}`,
52
+ '--out',
53
+ `/tmp/${outFile}`,
54
+ '--command',
55
+ `width=${w}&height=${h}&mode=pad&format=png&scale=upscalecanvas&bgcolor=transparent`,
56
+ ];
57
+ const createOptions = {
58
+ Cmd: commands,
59
+ HostConfig: {
60
+ AutoRemove: true,
61
+ Binds: bindings,
62
+ },
63
+ };
64
+ const noop = (0, core_1.writableNoopStream)();
65
+ await docker.runImage(ImageProcessor.image, createOptions, noop);
66
+ return node_fs_1.promises.readFile((0, node_path_1.resolve)(fileDir, outFile));
67
+ }
68
+ static async downloadImage(url) {
69
+ const response = await (0, axios_1.default)({
70
+ url,
71
+ method: 'GET',
72
+ responseType: 'arraybuffer',
73
+ });
74
+ const responseBuffer = Buffer.from(response.data, 'binary');
75
+ const type = await (0, file_type_1.fromBuffer)(responseBuffer);
76
+ const directory = (0, node_path_1.join)((0, node_os_1.tmpdir)(), 'sw-tsdk', Date.now().toString());
77
+ try {
78
+ await node_fs_1.promises.mkdir(directory, { recursive: true });
79
+ }
80
+ catch (_a) {
81
+ throw new Error('Could not create temporary directory');
82
+ }
83
+ const fileName = temp_1.default.path({
84
+ dir: directory,
85
+ suffix: `.${type === null || type === void 0 ? void 0 : type.ext}`,
86
+ });
87
+ await node_fs_1.promises.writeFile(fileName, responseBuffer);
88
+ return fileName;
89
+ }
90
+ static async moveFile(path) {
91
+ const type = await (0, file_type_1.fromFile)(path);
92
+ const fileName = temp_1.default.path({ suffix: `.${type === null || type === void 0 ? void 0 : type.ext}` });
93
+ const temporaryPath = (0, node_path_1.resolve)((0, node_os_1.tmpdir)(), 'sw-tsdk', fileName);
94
+ await node_fs_1.promises.copyFile(path, temporaryPath);
95
+ return new Promise(resolve => {
96
+ resolve(temporaryPath);
97
+ });
98
+ }
99
+ }
100
+ exports.ImageProcessor = ImageProcessor;
101
+ ImageProcessor.sourceSize = { w: 240, h: 240 };
102
+ ImageProcessor.integrationSize = { w: 86, h: 86 };
103
+ ImageProcessor.assetSize = { w: 150, h: 100 };
104
+ ImageProcessor.image = 'docker.io/imazen/imageflow_tool';
105
+ //# sourceMappingURL=image-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-processor.js","sourceRoot":"","sources":["../../src/utils/image-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './loading-messages';
2
+ export * from './integration-generator';
3
+ export * from './template-loader';
4
+ export * from './image-processor';
5
+ export * from './task-generator';
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./loading-messages"), exports);
5
+ tslib_1.__exportStar(require("./integration-generator"), exports);
6
+ tslib_1.__exportStar(require("./template-loader"), exports);
7
+ tslib_1.__exportStar(require("./image-processor"), exports);
8
+ tslib_1.__exportStar(require("./task-generator"), exports);
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,6DAAkC;AAClC,kEAAuC;AACvC,4DAAiC;AACjC,4DAAiC;AACjC,2DAAgC"}
@@ -0,0 +1,20 @@
1
+ import type { CreateIntegrationOptions } from '../types';
2
+ export declare class IntegrationGenerator {
3
+ generate(directory: string, createOptions: CreateIntegrationOptions): Promise<void>;
4
+ private static createFolderStructure;
5
+ private static createDirectory;
6
+ private static createFile;
7
+ private static createPackageJson;
8
+ private static createSetupPy;
9
+ private static createReadme;
10
+ private static createChangeLog;
11
+ private static createDistRequirement;
12
+ private static createAssetJson;
13
+ private static createModuleInit;
14
+ private static createTestConnection;
15
+ private static createDataFolder;
16
+ static createPytestStructure(baseDirectory: string): Promise<void>;
17
+ private static createExamples;
18
+ private static importLogo;
19
+ static configurePreCommit(baseDirectory: string, nestedDir?: string): Promise<void>;
20
+ }
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntegrationGenerator = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const node_path_1 = require("node:path");
6
+ const change_case_1 = require("change-case");
7
+ const listr2_1 = require("listr2");
8
+ const core_1 = require("@oclif/core");
9
+ const template_loader_1 = require("./template-loader");
10
+ const image_processor_1 = require("./image-processor");
11
+ const core_2 = require("@sw-tsdk/core");
12
+ const fs_extra_1 = require("fs-extra");
13
+ const slug_1 = tslib_1.__importDefault(require("slug"));
14
+ const node_fs_1 = require("node:fs");
15
+ const node_child_process_1 = require("node:child_process");
16
+ // noinspection JSUnusedGlobalSymbols
17
+ class IntegrationGenerator {
18
+ async generate(directory, createOptions) {
19
+ await (0, fs_extra_1.writeJson)((0, node_path_1.join)(directory, '.createOptions.json'), createOptions);
20
+ // google_maps
21
+ const integrationName = (0, slug_1.default)(`${createOptions.vendor} ${createOptions.product}`, {
22
+ lower: true,
23
+ replacement: '_',
24
+ });
25
+ // sw_google_maps
26
+ const moduleName = integrationName.startsWith('sw_') ? integrationName : `sw_${integrationName}`;
27
+ // GoogleMaps
28
+ const bundleName = (0, change_case_1.pascalCase)(`${createOptions.vendor}_${createOptions.product}`);
29
+ directory = (0, node_path_1.resolve)(directory);
30
+ core_1.CliUx.ux.action.start('Processing logo...');
31
+ const images = await image_processor_1.ImageProcessor.process(createOptions.logoPath);
32
+ if (images === null) {
33
+ throw new Error('Could not process image');
34
+ }
35
+ core_1.CliUx.ux.action.stop();
36
+ const generatedOptions = {
37
+ integrationName: integrationName,
38
+ integrationTitle: (0, change_case_1.capitalCase)(`${createOptions.vendor} ${createOptions.product}`),
39
+ moduleName: moduleName,
40
+ bundleName: bundleName,
41
+ baseClassName: `${bundleName}BaseClass`,
42
+ images: images,
43
+ importsPath: (0, node_path_1.join)(directory, 'imports'),
44
+ modulePath: (0, node_path_1.join)(directory, moduleName),
45
+ };
46
+ core_1.CliUx.ux.action.start('Creating folder structure...');
47
+ await IntegrationGenerator.createFolderStructure(directory, generatedOptions);
48
+ core_1.CliUx.ux.action.stop();
49
+ const tasks = new listr2_1.Listr([], { concurrent: true });
50
+ tasks.add({
51
+ title: 'Adding Logo...',
52
+ task: () => IntegrationGenerator.importLogo(directory, generatedOptions),
53
+ });
54
+ tasks.add({
55
+ title: 'Creating package.json...',
56
+ task: () => IntegrationGenerator.createPackageJson(directory, createOptions, generatedOptions),
57
+ });
58
+ tasks.add({
59
+ title: 'Creating Setup.py...',
60
+ task: () => IntegrationGenerator.createSetupPy(directory),
61
+ });
62
+ tasks.add({
63
+ title: 'Creating README.md...',
64
+ task: () => IntegrationGenerator.createReadme(directory, generatedOptions),
65
+ });
66
+ tasks.add({
67
+ title: 'Creating CHANGELOG.md...',
68
+ task: () => IntegrationGenerator.createChangeLog(directory, 'CHANGELOG.md'),
69
+ });
70
+ tasks.add({
71
+ title: 'Creating INTERNAL_CHANGELOG.md...',
72
+ task: () => IntegrationGenerator.createChangeLog(directory, 'INTERNAL_CHANGELOG.md'),
73
+ });
74
+ tasks.add({
75
+ title: 'Creating dist_requirements.txt...',
76
+ task: () => IntegrationGenerator.createDistRequirement(directory, createOptions),
77
+ });
78
+ tasks.add({
79
+ title: 'Creating Asset.json...',
80
+ task: () => IntegrationGenerator.createAssetJson(createOptions, generatedOptions),
81
+ });
82
+ tasks.add({
83
+ title: 'Creating Module Init...',
84
+ task: () => IntegrationGenerator.createModuleInit(createOptions, generatedOptions),
85
+ });
86
+ tasks.add({
87
+ title: 'Creating Test Connection...',
88
+ task: () => IntegrationGenerator.createTestConnection(generatedOptions),
89
+ });
90
+ tasks.add({
91
+ title: 'Creating Data Folder...',
92
+ task: () => IntegrationGenerator.createDataFolder(directory, generatedOptions),
93
+ });
94
+ tasks.add({
95
+ title: 'Creating pre-commit config...',
96
+ task: () => IntegrationGenerator.configurePreCommit(directory),
97
+ });
98
+ if (createOptions.createPytestStructure) {
99
+ tasks.add({
100
+ title: 'Creating Pytest Structure...',
101
+ task: () => IntegrationGenerator.createPytestStructure(directory),
102
+ });
103
+ }
104
+ if (createOptions.generateExamples) {
105
+ tasks.add({
106
+ title: 'Creating Examples...',
107
+ task: () => IntegrationGenerator.createExamples(createOptions, generatedOptions),
108
+ });
109
+ }
110
+ await tasks.run();
111
+ }
112
+ static async createFolderStructure(baseDirectory, generatedOptions) {
113
+ const directories = [
114
+ generatedOptions.moduleName,
115
+ 'image',
116
+ 'imports',
117
+ 'doc_images',
118
+ 'scripts',
119
+ ];
120
+ const createDirectories = [];
121
+ for (const directory of directories) {
122
+ const fullPath = (0, node_path_1.join)(baseDirectory, directory);
123
+ createDirectories.push(IntegrationGenerator.createDirectory(fullPath));
124
+ }
125
+ await Promise.all(createDirectories);
126
+ }
127
+ static async createDirectory(fullPath) {
128
+ const exists = await (0, core_2.directoryExists)(fullPath);
129
+ if (!exists) {
130
+ await node_fs_1.promises.mkdir(fullPath, { recursive: true });
131
+ }
132
+ }
133
+ static async createFile(baseDirectory, templateType, data, nameOverride = null) {
134
+ const content = await template_loader_1.TemplateLoader.bindTemplate(templateType, data);
135
+ const fullPath = (0, node_path_1.join)(baseDirectory, nameOverride || templateType);
136
+ await node_fs_1.promises.writeFile(fullPath, content);
137
+ }
138
+ static async createPackageJson(baseDirectory, createOptions, generatedOptions) {
139
+ const data = {
140
+ description: createOptions.description,
141
+ vendor: createOptions.vendor,
142
+ product: createOptions.product,
143
+ packages: [generatedOptions.moduleName],
144
+ name: generatedOptions.moduleName,
145
+ author: createOptions.author,
146
+ authorEmail: createOptions.authorEmail,
147
+ url: createOptions.url,
148
+ supportedSwimlaneVersion: createOptions.supportedSwimlaneVersion,
149
+ };
150
+ await IntegrationGenerator.createFile(baseDirectory, 'package.json', data);
151
+ }
152
+ static async createSetupPy(baseDirectory) {
153
+ await IntegrationGenerator.createFile(baseDirectory, 'setup.py', {});
154
+ }
155
+ static async createReadme(baseDirectory, generatedOptions) {
156
+ await IntegrationGenerator.createFile(baseDirectory, 'README.md', { title: generatedOptions.integrationTitle });
157
+ }
158
+ static async createChangeLog(baseDirectory, filename) {
159
+ const now = new Date().toISOString().slice(0, 10);
160
+ await IntegrationGenerator.createFile(baseDirectory, filename, { timestamp: now });
161
+ }
162
+ static async createDistRequirement(baseDirectory, createOptions) {
163
+ const requirements = new Set();
164
+ if (createOptions.restTemplate) {
165
+ requirements.add('basic-rest-endpoint');
166
+ requirements.add('swimlane-connector-utilities');
167
+ }
168
+ for (const requirement of createOptions.requirements.split(',')) {
169
+ requirements.add(requirement);
170
+ }
171
+ await IntegrationGenerator.createFile(baseDirectory, 'dist_requirements.txt', { requirements: requirements });
172
+ }
173
+ static async createAssetJson(createOptions, generatedOptions) {
174
+ const data = {
175
+ description: createOptions.description,
176
+ family: createOptions.family,
177
+ type: generatedOptions.bundleName,
178
+ name: generatedOptions.integrationTitle,
179
+ logo: generatedOptions.images.asset.getBase64Image(),
180
+ };
181
+ await IntegrationGenerator.createFile(generatedOptions.importsPath, 'asset.json', data);
182
+ }
183
+ static async createModuleInit(createOptions, generatedOptions) {
184
+ await IntegrationGenerator.createFile(generatedOptions.modulePath, 'init.py', {
185
+ rest: createOptions.restTemplate,
186
+ baseClassName: generatedOptions.baseClassName,
187
+ }, '__init__.py');
188
+ }
189
+ static async createTestConnection(generatedOptions) {
190
+ await IntegrationGenerator.createFile(generatedOptions.importsPath, 'test_connection.py', {
191
+ bundleModuleName: generatedOptions.moduleName,
192
+ baseClassName: generatedOptions.baseClassName,
193
+ });
194
+ }
195
+ static async createDataFolder(baseDirectory, generatedOptions) {
196
+ const dataDir = (0, node_path_1.join)(baseDirectory, 'data');
197
+ await IntegrationGenerator.createDirectory(dataDir);
198
+ await IntegrationGenerator.createFile(dataDir, 'assetConfig.json', {
199
+ name: generatedOptions.moduleName,
200
+ });
201
+ await IntegrationGenerator.createFile(dataDir, 'data_asset.json', {}, 'asset.json');
202
+ }
203
+ static async createPytestStructure(baseDirectory) {
204
+ const testDir = (0, node_path_1.join)(baseDirectory, 'tests');
205
+ await IntegrationGenerator.createDirectory(testDir);
206
+ await IntegrationGenerator.createFile(testDir, 'conftest.py', {});
207
+ await IntegrationGenerator.createFile(testDir, 'test_default.py', {});
208
+ await IntegrationGenerator.createFile(testDir, 'config.json', {});
209
+ await IntegrationGenerator.createFile(baseDirectory, 'test_requirements.txt', {});
210
+ await node_fs_1.promises.writeFile((0, node_path_1.join)(testDir, 'headers.json'), '{}');
211
+ }
212
+ static async createExamples(createOptions, generatedOptions) {
213
+ await IntegrationGenerator.createFile(generatedOptions.importsPath, 'import.json', {
214
+ description: createOptions.description,
215
+ family: createOptions.family,
216
+ actionType: `${generatedOptions.bundleName}Example`,
217
+ assetDependencyType: generatedOptions.bundleName,
218
+ assetDependencyVersion: '1.0.0',
219
+ name: 'Example',
220
+ scriptFile: `${generatedOptions.integrationName}_example.py`,
221
+ logo: generatedOptions.images.integration.getBase64Image(),
222
+ version: '1.0.0',
223
+ }, `${generatedOptions.integrationName}_example.json`);
224
+ await IntegrationGenerator.createFile(generatedOptions.importsPath, 'example.py', {
225
+ bundleModuleName: generatedOptions.moduleName,
226
+ baseClassName: generatedOptions.baseClassName,
227
+ rest: createOptions.restTemplate,
228
+ }, `${generatedOptions.integrationName}_example.py`);
229
+ }
230
+ static async importLogo(baseDirectory, generatedOptions) {
231
+ await node_fs_1.promises.writeFile((0, node_path_1.join)(baseDirectory, 'image', 'logo.png'), generatedOptions.images.source.getRaw());
232
+ }
233
+ static async configurePreCommit(baseDirectory, nestedDir = '') {
234
+ await IntegrationGenerator.createFile(baseDirectory, 'pre-commit-config.yaml', {}, '.pre-commit-config.yaml');
235
+ const pipCommand = 'python -m pip install pre-commit --disable-pip-version-check';
236
+ const installCommand = 'pre-commit install';
237
+ /*
238
+ Why all this nested dir stuff?
239
+
240
+ the pre-commit module can only run inside a git repository,
241
+ there are times where configurePreCommit is called outside a git
242
+ repository, for example when we're cloning the repo.
243
+ */
244
+ let command = `${pipCommand} && ${installCommand}`;
245
+ // Keep in mind '' is a falsy value in js
246
+ if (nestedDir) {
247
+ command = `cd ${nestedDir} && ${command} && cd -`;
248
+ }
249
+ (0, node_child_process_1.exec)(command, error => {
250
+ if (error) {
251
+ console.error(error);
252
+ }
253
+ });
254
+ }
255
+ }
256
+ exports.IntegrationGenerator = IntegrationGenerator;
257
+ //# sourceMappingURL=integration-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-generator.js","sourceRoot":"","sources":["../../src/utils/integration-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare namespace LoadingMessages {
2
+ function getRandom(pattern: string, args?: Record<string, any>): string;
3
+ }