Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion nx.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,5 +75,6 @@
"inputs": ["default", "tests", "^default"],
"outputs": ["{projectRoot}/coverage/**"]
}
}
},
"analytics": false
}
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "@ci-dokumentor/source",
"version": "0.2.1",
"license": "MIT",
"packageManager": "pnpm@10.32.1",
"scripts": {
"build": "nx run-many --target=build --all --parallel --exclude=@ci-dokumentor/source",
"lint": "nx run-many --target=lint --all --parallel --exclude=@ci-dokumentor/source",
Expand Down
2 changes: 1 addition & 1 deletion packages/cicd/github-actions/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"@ci-dokumentor/repository-github": "workspace:*",
"feather-icons": "^4.29.2",
"yaml": "^2.8.2",
"inversify": "^7.11.0"
"inversify": "^8.1.0"
},
"devDependencies": {
"@types/feather-icons": "^4.29.4"
Expand Down
95 changes: 40 additions & 55 deletions packages/cicd/github-actions/src/container.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import { Container as InversifyContainer } from 'inversify';
import { initContainer as gitInitContainer } from '@ci-dokumentor/repository-git';
import { initContainer as githubInitContainer } from '@ci-dokumentor/repository-github';
import { GitHubActionsParser } from './github-actions-parser.js';
import {
GitHubActionsGeneratorAdapter,
GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER
import {
GitHubActionsGeneratorAdapter,
GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER
} from './github-actions-generator.adapter.js';

// Section generators
Expand Down Expand Up @@ -42,107 +42,92 @@ export function resetContainer(): void {
export function initContainer(
baseContainer: Container | undefined = undefined
): Container {
if (baseContainer) {
// When a base container is provided, always use it and set it as our singleton
container = baseContainer;
} else if (container) {
// Only return existing singleton if no base container is provided
return container;
} else {
container = new InversifyContainer() as Container;
}
const targetContainer = baseContainer ?? (container ??= new InversifyContainer() as Container);

// Return early if already bound
if (container.isBound(GitHubActionsParser)) {
return container;
// Return early if this package has already been initialized in this container.
if (targetContainer.isCurrentBound(GitHubActionsParser)) {
return targetContainer;
}

// Bind GitHub Actions specific services only
// Bind parser
container.bind(GitHubActionsParser).toSelf().inSingletonScope();
targetContainer.bind(GitHubActionsParser).toSelf().inSingletonScope();

// Bind generator
container.bind(GitHubActionsGeneratorAdapter).toSelf().inSingletonScope();
container
targetContainer.bind(GitHubActionsGeneratorAdapter).toSelf().inSingletonScope();
targetContainer
.bind(GENERATOR_ADAPTER_IDENTIFIER)
.to(GitHubActionsGeneratorAdapter);
.toService(GitHubActionsGeneratorAdapter);

// Bind section generators
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(HeaderSectionGenerator);
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(BadgesSectionGenerator);
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(OverviewSectionGenerator);
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(UsageSectionGenerator);
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(InputsSectionGenerator);
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(SecretsSectionGenerator);
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(OutputsSectionGenerator);
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(ExamplesSectionGenerator);
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(ContributingSectionGenerator);
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(SecuritySectionGenerator);
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(LicenseSectionGenerator);
container
targetContainer
.bind(GITHUB_ACTIONS_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(GeneratedSectionGenerator);

// Bind migration adapters to the container
container.bind(ActionDocsMigrationAdapter).toSelf().inSingletonScope();
container
targetContainer.bind(ActionDocsMigrationAdapter).toSelf().inSingletonScope();
targetContainer
.bind(MIGRATION_ADAPTER_IDENTIFIER)
.to(ActionDocsMigrationAdapter);
.toService(ActionDocsMigrationAdapter);

container.bind(AutoDocMigrationAdapter).toSelf().inSingletonScope();
container
targetContainer.bind(AutoDocMigrationAdapter).toSelf().inSingletonScope();
targetContainer
.bind(MIGRATION_ADAPTER_IDENTIFIER)
.to(AutoDocMigrationAdapter);
.toService(AutoDocMigrationAdapter);

container.bind(ActdocsMigrationAdapter).toSelf().inSingletonScope();
container
targetContainer.bind(ActdocsMigrationAdapter).toSelf().inSingletonScope();
targetContainer
.bind(MIGRATION_ADAPTER_IDENTIFIER)
.to(ActdocsMigrationAdapter);
.toService(ActdocsMigrationAdapter);

container.bind(GitHubActionReadmeGeneratorMigrationAdapter).toSelf().inSingletonScope();
container
targetContainer.bind(GitHubActionReadmeGeneratorMigrationAdapter).toSelf().inSingletonScope();
targetContainer
.bind(MIGRATION_ADAPTER_IDENTIFIER)
.to(GitHubActionReadmeGeneratorMigrationAdapter);
.toService(GitHubActionReadmeGeneratorMigrationAdapter);

return container;
return targetContainer;
}

/**
* Initialize a test container for GitHub Actions package.
* This initializes all the proper packages needed for GitHub Actions testing.
*/
export function initTestContainer(): Container {
// Initialize core container first
const baseContainer = coreInitContainer();

// Initialize git repository package
gitInitContainer(baseContainer);

// Initialize github repository package
githubInitContainer(baseContainer);

// Initialize this package
return initContainer(baseContainer);
let testContainer = coreInitContainer();
testContainer = gitInitContainer(testContainer);
testContainer = githubInitContainer(testContainer);
return initContainer(testContainer);
}
2 changes: 1 addition & 1 deletion packages/cicd/gitlab-ci/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@
"@ci-dokumentor/repository-git": "workspace:*",
"@ci-dokumentor/repository-gitlab": "workspace:*",
"yaml": "^2.8.2",
"inversify": "^7.11.0"
"inversify": "^8.1.0"
}
}
57 changes: 21 additions & 36 deletions packages/cicd/gitlab-ci/src/container.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import { Container as InversifyContainer } from 'inversify';
import { initContainer as gitInitContainer } from '@ci-dokumentor/repository-git';
import { initContainer as gitlabInitContainer } from '@ci-dokumentor/repository-gitlab';
import { GitLabCIParser } from './gitlab-ci-parser.js';
import {
GitLabCIGeneratorAdapter,
GITLAB_CI_SECTION_GENERATOR_ADAPTER_IDENTIFIER
import {
GitLabCIGeneratorAdapter,
GITLAB_CI_SECTION_GENERATOR_ADAPTER_IDENTIFIER
} from './gitlab-ci-generator.adapter.js';

// Section generators
Expand All @@ -28,65 +28,50 @@ export function resetContainer(): void {
export function initContainer(
baseContainer: Container | undefined = undefined
): Container {
if (baseContainer) {
// When a base container is provided, always use it and set it as our singleton
container = baseContainer;
} else if (container) {
// Only return existing singleton if no base container is provided
return container;
} else {
container = new InversifyContainer() as Container;
}
const targetContainer = baseContainer ?? (container ??= new InversifyContainer() as Container);

// Return early if already bound
if (container.isBound(GitLabCIParser)) {
return container;
// Return early if this package has already been initialized in this container.
if (targetContainer.isCurrentBound(GitLabCIParser)) {
return targetContainer;
}

// Bind GitLab CI specific services only
// Bind parser
container.bind(GitLabCIParser).toSelf().inSingletonScope();
targetContainer.bind(GitLabCIParser).toSelf().inSingletonScope();

// Bind generator
container.bind(GitLabCIGeneratorAdapter).toSelf().inSingletonScope();
container
targetContainer.bind(GitLabCIGeneratorAdapter).toSelf().inSingletonScope();
targetContainer
.bind(GENERATOR_ADAPTER_IDENTIFIER)
.to(GitLabCIGeneratorAdapter);
.toService(GitLabCIGeneratorAdapter);

// Bind section generators
container
targetContainer
.bind(GITLAB_CI_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(HeaderSectionGenerator);
container
targetContainer
.bind(GITLAB_CI_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(OverviewSectionGenerator);
container
targetContainer
.bind(GITLAB_CI_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(UsageSectionGenerator);
container
targetContainer
.bind(GITLAB_CI_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(InputsSectionGenerator);
container
targetContainer
.bind(GITLAB_CI_SECTION_GENERATOR_ADAPTER_IDENTIFIER)
.to(GeneratedSectionGenerator);

return container;
return targetContainer;
}

/**
* Initialize a test container for GitLab CI package.
* This initializes all the proper packages needed for GitLab CI testing.
*/
export function initTestContainer(): Container {
// Initialize core container first
const baseContainer = coreInitContainer();

// Initialize git repository package
gitInitContainer(baseContainer);

// Initialize gitlab repository package
gitlabInitContainer(baseContainer);

// Initialize this package
return initContainer(baseContainer);
let testContainer = coreInitContainer();
testContainer = gitInitContainer(testContainer);
testContainer = gitlabInitContainer(testContainer);
return initContainer(testContainer);
}
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
},
"dependencies": {
"commander": "^14.0.3",
"inversify": "^7.11.0",
"inversify": "^8.1.0",
"reflect-metadata": "^0.2.2"
},
"devDependencies": {
Expand Down
Loading
Loading