Skip to content

Commit 7bd8c64

Browse files
authored
Merge pull request #20 from Anshukumar123975/main
CI/CD Integration & Dynamic Loader Enhancement
2 parents f110208 + e2773a9 commit 7bd8c64

File tree

8 files changed

+56
-10
lines changed

8 files changed

+56
-10
lines changed

.env-example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Sample .env file:
2+
PARSER_PATH='@accordproject/concerto-cto'
3+
MODELFILE_PATH='@accordproject/concerto-core'
4+
MODELMANAGER_PATH='@accordproject/concerto-core'

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
node_modules
2-
package-lock.json
2+
package-lock.json
3+
.env

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"@accordproject/concerto-core": "^3.21.0",
1717
"@accordproject/concerto-cto": "^3.22.0",
1818
"child_process": "^1.0.2",
19+
"dotenv": "^17.0.1",
1920
"fs": "^0.0.1-security",
2021
"inquirer": "^12.6.3",
2122
"path": "^0.12.7",

semantic/features/support/C#/Semantic.Support.CSharp/obj/Debug/net6.0/Semantic.Support.CSharp.AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
[assembly: System.Reflection.AssemblyCompanyAttribute("Semantic.Support.CSharp")]
1414
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
1515
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
16-
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+069d3994476d298ecb67f9eee824952d7af16260")]
16+
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+3a565f9047bb3b3eb26525cedffd7946ff5b481c")]
1717
[assembly: System.Reflection.AssemblyProductAttribute("Semantic.Support.CSharp")]
1818
[assembly: System.Reflection.AssemblyTitleAttribute("Semantic.Support.CSharp")]
1919
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
728d0b1b0d333a3b88a57dc69ea86f43dc0b627052d6c700db51c82470e30ee7
1+
0bfa4995d66ed028f4cae65820b76d35749d7a869837ab73a1460169f77b1736

semantic/features/support/Javascript/steps.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
1-
import { Given, When, Then } from '@cucumber/cucumber';
1+
import { Given, When, Then, Before } from '@cucumber/cucumber';
22
import { loadCTO } from './utils/loadCTO.ts';
3-
import { Parser } from '@accordproject/concerto-cto';
4-
import { ModelFile } from '@accordproject/concerto-core';
3+
import { loadDependencies } from './utils/dynamicLoader.ts';
54
import assert from 'assert';
65

6+
let Parser: any;
7+
let ModelFile: any;
8+
9+
Before(async function () {
10+
await this.initialize();
11+
const deps = await loadDependencies();
12+
Parser = deps.Parser;
13+
ModelFile = deps.ModelFile;
14+
});
15+
716
Given('I load the following models:', function (dataTable) {
817
for (const row of dataTable.hashes()) {
918
const modelContent = loadCTO(row.model_file);
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import * as dotenv from 'dotenv';
2+
dotenv.config();
3+
4+
export async function loadDependencies() {
5+
const parserPath = process.env.PARSER_PATH || '@accordproject/concerto-cto';
6+
const modelFilePath = process.env.MODELFILE_PATH || '@accordproject/concerto-core';
7+
const modelManagerPath = process.env.MODELMANAGER_PATH || '@accordproject/concerto-core';
8+
9+
try {
10+
const parserModule = await import(parserPath);
11+
const modelFileModule = await import(modelFilePath);
12+
const modelManagerModule = await import(modelManagerPath);
13+
14+
if (!parserModule.Parser || !modelFileModule.ModelFile || !modelManagerModule.ModelManager) {
15+
throw new Error('Failed to load Parser, ModelFile, or ModelManager. Check paths or exports.');
16+
}
17+
18+
return {
19+
Parser: parserModule.Parser,
20+
ModelFile: modelFileModule.ModelFile,
21+
ModelManager: modelManagerModule.ModelManager
22+
};
23+
} catch (err) {
24+
console.error('Failed to dynamically load dependencies:', err);
25+
process.exit(1);
26+
}
27+
}
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1-
import { ModelManager } from '@accordproject/concerto-core';
2-
31
import { setWorldConstructor, IWorldOptions } from '@cucumber/cucumber';
2+
import { loadDependencies } from './utils/dynamicLoader.ts';
43

54
export class CustomWorld {
6-
public modelManager: ModelManager;
5+
public modelManager: any;
76
public error: Error | null;
87

98
constructor(options: IWorldOptions) {
10-
this.modelManager = new ModelManager({ enableMapType: true });
119
this.error = null;
1210
}
11+
12+
async initialize() {
13+
const deps = await loadDependencies();
14+
const ModelManager = deps.ModelManager;
15+
this.modelManager = new ModelManager({ enableMapType: true });
16+
}
1317
}
1418

1519
setWorldConstructor(CustomWorld);

0 commit comments

Comments
 (0)