From ff3e1acfde8419375df5c5a7d3e537bffab9d232 Mon Sep 17 00:00:00 2001 From: Ayeshas09 Date: Tue, 12 May 2026 10:00:58 +0500 Subject: [PATCH 1/6] fix: sdk publish for ruby and python --- package.json | 2 +- src/actions/sdk/publish.ts | 8 +- .../publish/package-settings-configuration.ts | 92 +++-------- src/types/publish/publishing-profile.ts | 154 +++++++++++++----- 4 files changed, 134 insertions(+), 122 deletions(-) diff --git a/package.json b/package.json index 66ee18f6..eff788b3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@apimatic/cli", "description": "The official CLI for APIMatic.", - "version": "1.1.0-beta.14", + "version": "1.1.0-beta.15", "author": "APIMatic", "bin": { "apimatic": "./bin/run.js" diff --git a/src/actions/sdk/publish.ts b/src/actions/sdk/publish.ts index d62c3e68..58732d64 100644 --- a/src/actions/sdk/publish.ts +++ b/src/actions/sdk/publish.ts @@ -10,7 +10,6 @@ import { ProfileId } from '../../types/publish/profile-id.js'; import { SemVersion } from '../../types/publish/version.js'; import { Language } from '../../types/sdk/generate.js'; import { PublishingProfile } from '../../types/publish/publishing-profile.js'; -import { PackageSettingsConfiguration } from '../../types/publish/package-settings-configuration.js'; import { PackageSettingsContext } from '../../types/package-settings-context.js'; import { TempContext } from '../../types/temp-context.js'; import { ActionResult } from '../action-result.js'; @@ -38,14 +37,13 @@ export class SdkPublishAction { onPublishSdkError: (errorMessage: string) => void ): Promise> => { return await withDirPath(async (tempDirectory) => { - const packageConfiguration = publishingProfile.getPackageConfigurationForLanguage(language); + const packageConfigurationData = publishingProfile.getPackageConfigurationDataForLanguage(language); let packageSettingsDirectory: DirectoryPath | undefined; - if (packageConfiguration !== null && packageConfiguration.isEnabled) { - const packageSettingsConfiguration = PackageSettingsConfiguration.create(language, packageConfiguration); + if (packageConfigurationData) { packageSettingsDirectory = tempDirectory.join('package-settings'); const packageSettingsContext = new PackageSettingsContext(packageSettingsDirectory); - await packageSettingsContext.writeConfiguration(packageSettingsConfiguration, language); + await packageSettingsContext.writeConfiguration(packageConfigurationData, language); } const sdkGenerateAction = new GenerateAction(this.configDir, this.commandMetadata); diff --git a/src/types/publish/package-settings-configuration.ts b/src/types/publish/package-settings-configuration.ts index c5c2bd32..532ec9af 100644 --- a/src/types/publish/package-settings-configuration.ts +++ b/src/types/publish/package-settings-configuration.ts @@ -1,22 +1,15 @@ -import { Language } from '../sdk/generate.js'; import { - BaseConfigurationItem, - CSharpConfigurationItem, - JavaConfigurationItem, JavaDeveloper, JavaDistributionManagement, JavaScm, - KeyValueItem, PhpAuthor, - PhpConfigurationItem, PhpSupport, PythonConfigurationItem, PythonPerson, RubyConfigurationItem, TsBugs, TsPerson, - TsRepository, - TypeScriptConfigurationItem + TsRepository } from '../publish-api/publishing-profile-item.js'; interface CSharpPackageConfiguration { @@ -62,7 +55,12 @@ interface PythonPackageConfiguration { maintainers: PythonPerson[]; keywords: string[]; classifiers: string[]; - urls: KeyValueItem[]; + urls: Record; +} + +export function createPythonConfiguration(item: PythonConfigurationItem): PythonPackageConfiguration { + const { name, description, authors, maintainers, keywords, classifiers, urls } = item; + return { name, description, authors, maintainers, keywords, classifiers, urls: Object.fromEntries(urls.map(({ key, value }) => [key, value])) }; } interface RubyPackageConfiguration { @@ -72,11 +70,16 @@ interface RubyPackageConfiguration { description: string | null; email: string[]; homepage: string | null; - metadata: KeyValueItem[]; + metadata: Record; postInstallMessage: string | null; requirements: string[]; } +export function createRubyConfiguration(item: RubyConfigurationItem): RubyPackageConfiguration { + const { name, authors, summary, description, email, homepage, metadata, postInstallMessage, requirements } = item; + return { name, authors, summary, description, email, homepage, metadata: Object.fromEntries(metadata.map(({ key, value }) => [key, value])), postInstallMessage, requirements }; +} + interface TypeScriptPackageConfiguration { name: string; author: TsPerson; @@ -88,72 +91,15 @@ interface TypeScriptPackageConfiguration { repository: TsRepository; } +interface GoPackageConfiguration { + packageName: string; +} + export type PackageConfigurationData = | CSharpPackageConfiguration | JavaPackageConfiguration | PhpPackageConfiguration | PythonPackageConfiguration | RubyPackageConfiguration - | TypeScriptPackageConfiguration; - -export class PackageSettingsConfiguration { - public static create(language: Language, config: BaseConfigurationItem): PackageConfigurationData { - switch (language) { - case Language.CSHARP: { - const { - packageId, - authors, - description, - title, - packageTags, - repositoryUrl, - repositoryType, - packageProjectUrl, - packageIcon, - packageReleaseNotes, - copyright - } = config as CSharpConfigurationItem; - return { - packageId, - authors, - description, - title, - packageTags, - repositoryUrl, - repositoryType, - packageProjectUrl, - packageIcon, - packageReleaseNotes, - copyright - }; - } - case Language.JAVA: { - const { groupId, artifactId, name, description, url, developers, distributionManagement, scm } = - config as JavaConfigurationItem; - return { groupId, artifactId, name, description, url, developers, distributionManagement, scm }; - } - case Language.PHP: { - const { vendorName, projectName, description, type, keywords, homepage, authors, support } = - config as PhpConfigurationItem; - return { vendorName, projectName, description, type, keywords, homepage, authors, support }; - } - case Language.PYTHON: { - const { name, description, authors, maintainers, keywords, classifiers, urls } = - config as PythonConfigurationItem; - return { name, description, authors, maintainers, keywords, classifiers, urls }; - } - case Language.RUBY: { - const { name, authors, summary, description, email, homepage, metadata, postInstallMessage, requirements } = - config as RubyConfigurationItem; - return { name, authors, summary, description, email, homepage, metadata, postInstallMessage, requirements }; - } - case Language.TYPESCRIPT: { - const { name, author, description, contributors, bugs, keywords, homepage, repository } = - config as TypeScriptConfigurationItem; - return { name, author, description, contributors, bugs, keywords, homepage, repository }; - } - case Language.GO: - return {} as PackageConfigurationData; - } - } -} + | TypeScriptPackageConfiguration + | GoPackageConfiguration; diff --git a/src/types/publish/publishing-profile.ts b/src/types/publish/publishing-profile.ts index 88c081cc..a88f59b5 100644 --- a/src/types/publish/publishing-profile.ts +++ b/src/types/publish/publishing-profile.ts @@ -1,18 +1,64 @@ import { Language } from '../sdk/generate.js'; import { - BaseConfigurationItem, + CSharpConfigurationItem, + GitConfigurationItem, + GoConfigurationItem, + JavaConfigurationItem, LanguagePublishingConfig, + PhpConfigurationItem, PublishingProfileItem, PublishingProfileSummaryGroup, PublishingProfileWithLanguagesGroup, - PublishType + PublishType, + PythonConfigurationItem, + RubyConfigurationItem, + TypeScriptConfigurationItem } from '../publish-api/publishing-profile-item.js'; +import { + PackageConfigurationData, + createPythonConfiguration, + createRubyConfiguration + } from './package-settings-configuration.js'; export class PublishingProfile { - private readonly item: PublishingProfileItem; + private readonly id: string; + private readonly name: string; + private readonly apiGroupId: string; + private readonly apiGroupName: string; + private readonly cSharpConfiguration: CSharpConfigurationItem | null; + private readonly goConfiguration: GoConfigurationItem | null; + private readonly javaConfiguration: JavaConfigurationItem | null; + private readonly phpConfiguration: PhpConfigurationItem | null; + private readonly pythonConfiguration: PythonConfigurationItem | null; + private readonly rubyConfiguration: RubyConfigurationItem | null; + private readonly typeScriptConfiguration: TypeScriptConfigurationItem | null; + private readonly cSharpGitConfiguration: GitConfigurationItem | null; + private readonly goGitConfiguration: GitConfigurationItem | null; + private readonly javaGitConfiguration: GitConfigurationItem | null; + private readonly phpGitConfiguration: GitConfigurationItem | null; + private readonly pythonGitConfiguration: GitConfigurationItem | null; + private readonly rubyGitConfiguration: GitConfigurationItem | null; + private readonly typeScriptGitConfiguration: GitConfigurationItem | null; private constructor(item: PublishingProfileItem) { - this.item = item; + this.id = item.id; + this.name = item.name; + this.apiGroupId = item.apiGroupId; + this.apiGroupName = item.apiGroupName; + this.cSharpConfiguration = item.cSharpConfiguration; + this.goConfiguration = item.goConfiguration; + this.javaConfiguration = item.javaConfiguration; + this.phpConfiguration = item.phpConfiguration; + this.pythonConfiguration = item.pythonConfiguration; + this.rubyConfiguration = item.rubyConfiguration; + this.typeScriptConfiguration = item.typeScriptConfiguration; + this.cSharpGitConfiguration = item.cSharpGitConfiguration; + this.goGitConfiguration = item.goGitConfiguration; + this.javaGitConfiguration = item.javaGitConfiguration; + this.phpGitConfiguration = item.phpGitConfiguration; + this.pythonGitConfiguration = item.pythonGitConfiguration; + this.rubyGitConfiguration = item.rubyGitConfiguration; + this.typeScriptGitConfiguration = item.typeScriptGitConfiguration; } public static create(item: PublishingProfileItem): PublishingProfile { @@ -20,7 +66,7 @@ export class PublishingProfile { } public toString(): string { - return this.item.name; + return this.name; } public hasEnabledLanguages(): boolean { @@ -55,65 +101,87 @@ export class PublishingProfile { public toPublishingProfileSummaryGroup(): PublishingProfileSummaryGroup { return { - apiGroupName: this.item.apiGroupName, - profiles: [{ name: this.item.name, id: this.item.id, enabledLanguages: this.getEnabledLanguages() }] + apiGroupName: this.apiGroupName, + profiles: [{ name: this.name, id: this.id, enabledLanguages: this.getEnabledLanguages() }] }; } public toPublishingProfileWithLanguagesGroup(): PublishingProfileWithLanguagesGroup { return { - apiGroupName: this.item.apiGroupName, - profiles: [{ profile: this.item, enabledLanguages: this.getEnabledLanguages() }] + apiGroupName: this.apiGroupName, + profiles: [ + { + profile: { + id: this.id, + name: this.name, + apiGroupId: this.apiGroupId, + apiGroupName: this.apiGroupName, + cSharpConfiguration: this.cSharpConfiguration, + goConfiguration: this.goConfiguration, + javaConfiguration: this.javaConfiguration, + phpConfiguration: this.phpConfiguration, + pythonConfiguration: this.pythonConfiguration, + rubyConfiguration: this.rubyConfiguration, + typeScriptConfiguration: this.typeScriptConfiguration, + cSharpGitConfiguration: this.cSharpGitConfiguration, + goGitConfiguration: this.goGitConfiguration, + javaGitConfiguration: this.javaGitConfiguration, + phpGitConfiguration: this.phpGitConfiguration, + pythonGitConfiguration: this.pythonGitConfiguration, + rubyGitConfiguration: this.rubyGitConfiguration, + typeScriptGitConfiguration: this.typeScriptGitConfiguration + }, + enabledLanguages: this.getEnabledLanguages() + } + ] }; } - public getPackageConfigurationForLanguage(language: Language): BaseConfigurationItem | null { + public getPackageConfigurationDataForLanguage(language: Language): PackageConfigurationData | undefined { switch (language) { case Language.CSHARP: - return this.item.cSharpConfiguration; + return this.cSharpConfiguration && this.cSharpConfiguration.isEnabled + ? this.cSharpConfiguration + : undefined; case Language.JAVA: - return this.item.javaConfiguration; - case Language.GO: - return this.item.goConfiguration; - case Language.RUBY: - return this.item.rubyConfiguration; + return this.javaConfiguration && this.javaConfiguration.isEnabled + ? this.javaConfiguration + : undefined; case Language.PHP: - return this.item.phpConfiguration; + return this.phpConfiguration && this.phpConfiguration.isEnabled + ? this.phpConfiguration + : undefined; case Language.PYTHON: - return this.item.pythonConfiguration; + return this.pythonConfiguration?.isEnabled + ? createPythonConfiguration(this.pythonConfiguration) + : undefined; + case Language.RUBY: + return this.rubyConfiguration?.isEnabled + ? createRubyConfiguration(this.rubyConfiguration) + : undefined; case Language.TYPESCRIPT: - return this.item.typeScriptConfiguration; + return this.typeScriptConfiguration && this.typeScriptConfiguration.isEnabled + ? this.typeScriptConfiguration + : undefined; + case Language.GO: + return this.goConfiguration && this.goConfiguration.isEnabled + ? this.goConfiguration + : undefined; } } private getLanguageConfigs(): LanguagePublishingConfig[] { return [ - { - language: Language.CSHARP, - packageConfig: this.item.cSharpConfiguration, - gitConfig: this.item.cSharpGitConfiguration - }, - { - language: Language.JAVA, - packageConfig: this.item.javaConfiguration, - gitConfig: this.item.javaGitConfiguration - }, - { language: Language.GO, packageConfig: this.item.goConfiguration, gitConfig: this.item.goGitConfiguration }, - { language: Language.PHP, packageConfig: this.item.phpConfiguration, gitConfig: this.item.phpGitConfiguration }, - { - language: Language.PYTHON, - packageConfig: this.item.pythonConfiguration, - gitConfig: this.item.pythonGitConfiguration - }, - { - language: Language.RUBY, - packageConfig: this.item.rubyConfiguration, - gitConfig: this.item.rubyGitConfiguration - }, + { language: Language.CSHARP, packageConfig: this.cSharpConfiguration, gitConfig: this.cSharpGitConfiguration }, + { language: Language.JAVA, packageConfig: this.javaConfiguration, gitConfig: this.javaGitConfiguration }, + { language: Language.GO, packageConfig: this.goConfiguration, gitConfig: this.goGitConfiguration }, + { language: Language.PHP, packageConfig: this.phpConfiguration, gitConfig: this.phpGitConfiguration }, + { language: Language.PYTHON, packageConfig: this.pythonConfiguration, gitConfig: this.pythonGitConfiguration }, + { language: Language.RUBY, packageConfig: this.rubyConfiguration, gitConfig: this.rubyGitConfiguration }, { language: Language.TYPESCRIPT, - packageConfig: this.item.typeScriptConfiguration, - gitConfig: this.item.typeScriptGitConfiguration + packageConfig: this.typeScriptConfiguration, + gitConfig: this.typeScriptGitConfiguration } ]; } From 6bb695607c6e39bbd0fcb21580d91efb70ad87e8 Mon Sep 17 00:00:00 2001 From: Ayeshas09 Date: Tue, 12 May 2026 10:18:11 +0500 Subject: [PATCH 2/6] minor refactor --- .../publish/package-settings-configuration.ts | 12 --- src/types/publish/publishing-profile.ts | 87 +++++++++++++++---- 2 files changed, 71 insertions(+), 28 deletions(-) diff --git a/src/types/publish/package-settings-configuration.ts b/src/types/publish/package-settings-configuration.ts index 532ec9af..44e5699a 100644 --- a/src/types/publish/package-settings-configuration.ts +++ b/src/types/publish/package-settings-configuration.ts @@ -4,9 +4,7 @@ import { JavaScm, PhpAuthor, PhpSupport, - PythonConfigurationItem, PythonPerson, - RubyConfigurationItem, TsBugs, TsPerson, TsRepository @@ -58,11 +56,6 @@ interface PythonPackageConfiguration { urls: Record; } -export function createPythonConfiguration(item: PythonConfigurationItem): PythonPackageConfiguration { - const { name, description, authors, maintainers, keywords, classifiers, urls } = item; - return { name, description, authors, maintainers, keywords, classifiers, urls: Object.fromEntries(urls.map(({ key, value }) => [key, value])) }; -} - interface RubyPackageConfiguration { name: string; authors: string[]; @@ -75,11 +68,6 @@ interface RubyPackageConfiguration { requirements: string[]; } -export function createRubyConfiguration(item: RubyConfigurationItem): RubyPackageConfiguration { - const { name, authors, summary, description, email, homepage, metadata, postInstallMessage, requirements } = item; - return { name, authors, summary, description, email, homepage, metadata: Object.fromEntries(metadata.map(({ key, value }) => [key, value])), postInstallMessage, requirements }; -} - interface TypeScriptPackageConfiguration { name: string; author: TsPerson; diff --git a/src/types/publish/publishing-profile.ts b/src/types/publish/publishing-profile.ts index a88f59b5..595b5bf7 100644 --- a/src/types/publish/publishing-profile.ts +++ b/src/types/publish/publishing-profile.ts @@ -14,11 +14,7 @@ import { RubyConfigurationItem, TypeScriptConfigurationItem } from '../publish-api/publishing-profile-item.js'; -import { - PackageConfigurationData, - createPythonConfiguration, - createRubyConfiguration - } from './package-settings-configuration.js'; +import { PackageConfigurationData } from './package-settings-configuration.js'; export class PublishingProfile { private readonly id: string; @@ -141,31 +137,90 @@ export class PublishingProfile { switch (language) { case Language.CSHARP: return this.cSharpConfiguration && this.cSharpConfiguration.isEnabled - ? this.cSharpConfiguration + ? { + packageId: this.cSharpConfiguration.packageId, + authors: this.cSharpConfiguration.authors, + description: this.cSharpConfiguration.description, + title: this.cSharpConfiguration.title, + packageTags: this.cSharpConfiguration.packageTags, + repositoryUrl: this.cSharpConfiguration.repositoryUrl, + repositoryType: this.cSharpConfiguration.repositoryType, + packageProjectUrl: this.cSharpConfiguration.packageProjectUrl, + packageIcon: this.cSharpConfiguration.packageIcon, + packageReleaseNotes: this.cSharpConfiguration.packageReleaseNotes, + copyright: this.cSharpConfiguration.copyright + } : undefined; case Language.JAVA: return this.javaConfiguration && this.javaConfiguration.isEnabled - ? this.javaConfiguration + ? { + groupId: this.javaConfiguration.groupId, + artifactId: this.javaConfiguration.artifactId, + name: this.javaConfiguration.name, + description: this.javaConfiguration.description, + url: this.javaConfiguration.url, + developers: this.javaConfiguration.developers, + distributionManagement: this.javaConfiguration.distributionManagement, + scm: this.javaConfiguration.scm + } : undefined; case Language.PHP: return this.phpConfiguration && this.phpConfiguration.isEnabled - ? this.phpConfiguration + ? { + vendorName: this.phpConfiguration.vendorName, + projectName: this.phpConfiguration.projectName, + description: this.phpConfiguration.description, + type: this.phpConfiguration.type, + keywords: this.phpConfiguration.keywords, + homepage: this.phpConfiguration.homepage, + authors: this.phpConfiguration.authors, + support: this.phpConfiguration.support + } : undefined; case Language.PYTHON: - return this.pythonConfiguration?.isEnabled - ? createPythonConfiguration(this.pythonConfiguration) - : undefined; + return this.pythonConfiguration && this.pythonConfiguration.isEnabled + ? { + name: this.pythonConfiguration.name, + description: this.pythonConfiguration.description, + authors: this.pythonConfiguration.authors, + maintainers: this.pythonConfiguration.maintainers, + keywords: this.pythonConfiguration.keywords, + classifiers: this.pythonConfiguration.classifiers, + urls: Object.fromEntries(this.pythonConfiguration.urls.map(({ key, value }) => [key, value])) + } + : undefined; case Language.RUBY: - return this.rubyConfiguration?.isEnabled - ? createRubyConfiguration(this.rubyConfiguration) - : undefined; + return this.rubyConfiguration && this.rubyConfiguration.isEnabled + ? { + name: this.rubyConfiguration.name, + authors: this.rubyConfiguration.authors, + summary: this.rubyConfiguration.summary, + description: this.rubyConfiguration.description, + email: this.rubyConfiguration.email, + homepage: this.rubyConfiguration.homepage, + metadata: Object.fromEntries(this.rubyConfiguration.metadata.map(({ key, value }) => [key, value])), + postInstallMessage: this.rubyConfiguration.postInstallMessage, + requirements: this.rubyConfiguration.requirements + } + : undefined; case Language.TYPESCRIPT: return this.typeScriptConfiguration && this.typeScriptConfiguration.isEnabled - ? this.typeScriptConfiguration + ? { + name: this.typeScriptConfiguration.name, + author: this.typeScriptConfiguration.author, + description: this.typeScriptConfiguration.description, + contributors: this.typeScriptConfiguration.contributors, + bugs: this.typeScriptConfiguration.bugs, + homepage: this.typeScriptConfiguration.homepage, + repository: this.typeScriptConfiguration.repository, + keywords: this.typeScriptConfiguration.keywords + } : undefined; case Language.GO: return this.goConfiguration && this.goConfiguration.isEnabled - ? this.goConfiguration + ? { + packageName: this.goConfiguration.packageName + } : undefined; } } From e5bdc28a329c40aa71d86185c5b6a8393b42ab3c Mon Sep 17 00:00:00 2001 From: Ayeshas09 Date: Tue, 12 May 2026 12:12:10 +0500 Subject: [PATCH 3/6] refactor PublishingProfile --- .../publish-api/publishing-profile-item.ts | 39 ++- src/types/publish/publishing-profile.ts | 316 ++++++++---------- 2 files changed, 161 insertions(+), 194 deletions(-) diff --git a/src/types/publish-api/publishing-profile-item.ts b/src/types/publish-api/publishing-profile-item.ts index 4c271c67..51c273bd 100644 --- a/src/types/publish-api/publishing-profile-item.ts +++ b/src/types/publish-api/publishing-profile-item.ts @@ -10,17 +10,16 @@ export interface KeyValueItem { value: string; } -export interface BaseConfigurationItem { +export interface GitConfigurationItem { isEnabled: boolean; credentialsId: string; -} - -export interface GitConfigurationItem extends BaseConfigurationItem { repositoryName: string; branch: string; } -export interface CSharpConfigurationItem extends BaseConfigurationItem { +export interface CSharpConfigurationItem { + isEnabled: boolean; + credentialsId: string; packageId: string; authors: string | null; description: string | null; @@ -34,7 +33,9 @@ export interface CSharpConfigurationItem extends BaseConfigurationItem { copyright: string | null; } -export interface GoConfigurationItem extends BaseConfigurationItem { +export interface GoConfigurationItem { + isEnabled: boolean; + credentialsId: string; packageName: string; } @@ -61,7 +62,9 @@ export interface JavaScm { url: string; } -export interface JavaConfigurationItem extends BaseConfigurationItem { +export interface JavaConfigurationItem { + isEnabled: boolean; + credentialsId: string; groupId: string; artifactId: string; name: string; @@ -91,7 +94,9 @@ export interface PhpSupport { rss: string | null; } -export interface PhpConfigurationItem extends BaseConfigurationItem { +export interface PhpConfigurationItem { + isEnabled: boolean; + credentialsId: string; gitCredentialsId: string; repositoryName: string; branchName: string; @@ -111,7 +116,9 @@ export interface PythonPerson { name: string | null; } -export interface PythonConfigurationItem extends BaseConfigurationItem { +export interface PythonConfigurationItem { + isEnabled: boolean; + credentialsId: string; name: string; description: string | null; authors: PythonPerson[]; @@ -121,7 +128,9 @@ export interface PythonConfigurationItem extends BaseConfigurationItem { urls: KeyValueItem[]; } -export interface RubyConfigurationItem extends BaseConfigurationItem { +export interface RubyConfigurationItem { + isEnabled: boolean; + credentialsId: string; name: string; authors: string[]; summary: string; @@ -150,7 +159,9 @@ export interface TsRepository { directory: string | null; } -export interface TypeScriptConfigurationItem extends BaseConfigurationItem { +export interface TypeScriptConfigurationItem { + isEnabled: boolean; + credentialsId: string; name: string; author: TsPerson; description: string | null; @@ -182,12 +193,6 @@ export interface PublishingProfileItem { typeScriptGitConfiguration: GitConfigurationItem | null; } -export interface LanguagePublishingConfig { - language: Language; - packageConfig: BaseConfigurationItem | null; - gitConfig: BaseConfigurationItem | null; -} - export interface PublishingProfileWithLanguages { profile: PublishingProfileItem; enabledLanguages: Language[]; diff --git a/src/types/publish/publishing-profile.ts b/src/types/publish/publishing-profile.ts index 595b5bf7..d9ea2a07 100644 --- a/src/types/publish/publishing-profile.ts +++ b/src/types/publish/publishing-profile.ts @@ -4,57 +4,50 @@ import { GitConfigurationItem, GoConfigurationItem, JavaConfigurationItem, - LanguagePublishingConfig, PhpConfigurationItem, PublishingProfileItem, PublishingProfileSummaryGroup, PublishingProfileWithLanguagesGroup, - PublishType, PythonConfigurationItem, RubyConfigurationItem, - TypeScriptConfigurationItem + TypeScriptConfigurationItem, + PublishType, } from '../publish-api/publishing-profile-item.js'; import { PackageConfigurationData } from './package-settings-configuration.js'; export class PublishingProfile { - private readonly id: string; - private readonly name: string; - private readonly apiGroupId: string; - private readonly apiGroupName: string; - private readonly cSharpConfiguration: CSharpConfigurationItem | null; - private readonly goConfiguration: GoConfigurationItem | null; - private readonly javaConfiguration: JavaConfigurationItem | null; - private readonly phpConfiguration: PhpConfigurationItem | null; - private readonly pythonConfiguration: PythonConfigurationItem | null; - private readonly rubyConfiguration: RubyConfigurationItem | null; - private readonly typeScriptConfiguration: TypeScriptConfigurationItem | null; - private readonly cSharpGitConfiguration: GitConfigurationItem | null; - private readonly goGitConfiguration: GitConfigurationItem | null; - private readonly javaGitConfiguration: GitConfigurationItem | null; - private readonly phpGitConfiguration: GitConfigurationItem | null; - private readonly pythonGitConfiguration: GitConfigurationItem | null; - private readonly rubyGitConfiguration: GitConfigurationItem | null; - private readonly typeScriptGitConfiguration: GitConfigurationItem | null; - - private constructor(item: PublishingProfileItem) { - this.id = item.id; - this.name = item.name; - this.apiGroupId = item.apiGroupId; - this.apiGroupName = item.apiGroupName; - this.cSharpConfiguration = item.cSharpConfiguration; - this.goConfiguration = item.goConfiguration; - this.javaConfiguration = item.javaConfiguration; - this.phpConfiguration = item.phpConfiguration; - this.pythonConfiguration = item.pythonConfiguration; - this.rubyConfiguration = item.rubyConfiguration; - this.typeScriptConfiguration = item.typeScriptConfiguration; - this.cSharpGitConfiguration = item.cSharpGitConfiguration; - this.goGitConfiguration = item.goGitConfiguration; - this.javaGitConfiguration = item.javaGitConfiguration; - this.phpGitConfiguration = item.phpGitConfiguration; - this.pythonGitConfiguration = item.pythonGitConfiguration; - this.rubyGitConfiguration = item.rubyGitConfiguration; - this.typeScriptGitConfiguration = item.typeScriptGitConfiguration; + private readonly profile: PublishingProfileItem; + private readonly languageConfigs: Partial>; + private readonly gitConfigs: Partial>; + + private constructor(profile: PublishingProfileItem) { + this.profile = profile; + this.languageConfigs = Object.fromEntries( + ( + [ + [Language.CSHARP, PublishingProfile.createCSharpConfiguration(profile.cSharpConfiguration)], + [Language.GO, PublishingProfile.createGoConfiguration(profile.goConfiguration)], + [Language.JAVA, PublishingProfile.createJavaConfiguration(profile.javaConfiguration)], + [Language.PHP, PublishingProfile.createPhpConfiguration(profile.phpConfiguration)], + [Language.PYTHON, PublishingProfile.createPythonConfiguration(profile.pythonConfiguration)], + [Language.RUBY, PublishingProfile.createRubyConfiguration(profile.rubyConfiguration)], + [Language.TYPESCRIPT, PublishingProfile.createTypeScriptConfiguration(profile.typeScriptConfiguration)] + ] as [Language, PackageConfigurationData | undefined][] + ).filter(([, config]) => config !== undefined) + ); + this.gitConfigs = Object.fromEntries( + ( + [ + [Language.CSHARP, profile.cSharpGitConfiguration], + [Language.GO, profile.goGitConfiguration], + [Language.JAVA, profile.javaGitConfiguration], + [Language.PHP, profile.phpGitConfiguration], + [Language.PYTHON, profile.pythonGitConfiguration], + [Language.RUBY, profile.rubyGitConfiguration], + [Language.TYPESCRIPT, profile.typeScriptGitConfiguration] + ] as [Language, GitConfigurationItem | null][] + ).filter(([, config]) => config?.isEnabled) + ); } public static create(item: PublishingProfileItem): PublishingProfile { @@ -62,31 +55,25 @@ export class PublishingProfile { } public toString(): string { - return this.name; + return this.profile.name; } public hasEnabledLanguages(): boolean { - const languageConfigs = this.getLanguageConfigs(); - return languageConfigs.some(({ packageConfig, gitConfig }) => packageConfig?.isEnabled || gitConfig?.isEnabled); + return Object.keys(this.languageConfigs).length > 0 || Object.keys(this.gitConfigs).length > 0; } public isLanguageEnabled(language: Language): boolean { - const { packageConfig, gitConfig } = this.getLanguageConfig(language); - return packageConfig?.isEnabled === true || gitConfig?.isEnabled === true; + return language in this.languageConfigs || language in this.gitConfigs; } public getEnabledLanguages(): Language[] { - const languageConfigs = this.getLanguageConfigs(); - return languageConfigs - .filter(({ packageConfig, gitConfig }) => packageConfig?.isEnabled || gitConfig?.isEnabled) - .map(({ language }) => language); - } + return [...new Set([...Object.keys(this.languageConfigs), ...Object.keys(this.gitConfigs)])] as Language[]; +} public getPublishTypesForLanguage(language: Language): PublishType[] { - const { packageConfig, gitConfig } = this.getLanguageConfig(language); const types: PublishType[] = []; - if (gitConfig?.isEnabled === true) types.push(PublishType.SourceCodePublishing); - if (packageConfig?.isEnabled === true) types.push(PublishType.PackagePublishing); + if (language in this.gitConfigs) types.push(PublishType.SourceCodePublishing); + if (language in this.languageConfigs) types.push(PublishType.PackagePublishing); return types; } @@ -97,36 +84,17 @@ export class PublishingProfile { public toPublishingProfileSummaryGroup(): PublishingProfileSummaryGroup { return { - apiGroupName: this.apiGroupName, - profiles: [{ name: this.name, id: this.id, enabledLanguages: this.getEnabledLanguages() }] + apiGroupName: this.profile.apiGroupName, + profiles: [{ name: this.profile.name, id: this.profile.id, enabledLanguages: this.getEnabledLanguages() }] }; } public toPublishingProfileWithLanguagesGroup(): PublishingProfileWithLanguagesGroup { return { - apiGroupName: this.apiGroupName, + apiGroupName: this.profile.apiGroupName, profiles: [ { - profile: { - id: this.id, - name: this.name, - apiGroupId: this.apiGroupId, - apiGroupName: this.apiGroupName, - cSharpConfiguration: this.cSharpConfiguration, - goConfiguration: this.goConfiguration, - javaConfiguration: this.javaConfiguration, - phpConfiguration: this.phpConfiguration, - pythonConfiguration: this.pythonConfiguration, - rubyConfiguration: this.rubyConfiguration, - typeScriptConfiguration: this.typeScriptConfiguration, - cSharpGitConfiguration: this.cSharpGitConfiguration, - goGitConfiguration: this.goGitConfiguration, - javaGitConfiguration: this.javaGitConfiguration, - phpGitConfiguration: this.phpGitConfiguration, - pythonGitConfiguration: this.pythonGitConfiguration, - rubyGitConfiguration: this.rubyGitConfiguration, - typeScriptGitConfiguration: this.typeScriptGitConfiguration - }, + profile: this.profile, enabledLanguages: this.getEnabledLanguages() } ] @@ -134,114 +102,108 @@ export class PublishingProfile { } public getPackageConfigurationDataForLanguage(language: Language): PackageConfigurationData | undefined { - switch (language) { - case Language.CSHARP: - return this.cSharpConfiguration && this.cSharpConfiguration.isEnabled - ? { - packageId: this.cSharpConfiguration.packageId, - authors: this.cSharpConfiguration.authors, - description: this.cSharpConfiguration.description, - title: this.cSharpConfiguration.title, - packageTags: this.cSharpConfiguration.packageTags, - repositoryUrl: this.cSharpConfiguration.repositoryUrl, - repositoryType: this.cSharpConfiguration.repositoryType, - packageProjectUrl: this.cSharpConfiguration.packageProjectUrl, - packageIcon: this.cSharpConfiguration.packageIcon, - packageReleaseNotes: this.cSharpConfiguration.packageReleaseNotes, - copyright: this.cSharpConfiguration.copyright + return this.languageConfigs[language]; + } + + private static createCSharpConfiguration(config: CSharpConfigurationItem | null): PackageConfigurationData | undefined { + return config?.isEnabled + ? { + packageId: config.packageId, + authors: config.authors, + description: config.description, + title: config.title, + packageTags: config.packageTags, + repositoryUrl: config.repositoryUrl, + repositoryType: config.repositoryType, + packageProjectUrl: config.packageProjectUrl, + packageIcon: config.packageIcon, + packageReleaseNotes: config.packageReleaseNotes, + copyright: config.copyright } - : undefined; - case Language.JAVA: - return this.javaConfiguration && this.javaConfiguration.isEnabled - ? { - groupId: this.javaConfiguration.groupId, - artifactId: this.javaConfiguration.artifactId, - name: this.javaConfiguration.name, - description: this.javaConfiguration.description, - url: this.javaConfiguration.url, - developers: this.javaConfiguration.developers, - distributionManagement: this.javaConfiguration.distributionManagement, - scm: this.javaConfiguration.scm - } - : undefined; - case Language.PHP: - return this.phpConfiguration && this.phpConfiguration.isEnabled - ? { - vendorName: this.phpConfiguration.vendorName, - projectName: this.phpConfiguration.projectName, - description: this.phpConfiguration.description, - type: this.phpConfiguration.type, - keywords: this.phpConfiguration.keywords, - homepage: this.phpConfiguration.homepage, - authors: this.phpConfiguration.authors, - support: this.phpConfiguration.support - } - : undefined; - case Language.PYTHON: - return this.pythonConfiguration && this.pythonConfiguration.isEnabled - ? { - name: this.pythonConfiguration.name, - description: this.pythonConfiguration.description, - authors: this.pythonConfiguration.authors, - maintainers: this.pythonConfiguration.maintainers, - keywords: this.pythonConfiguration.keywords, - classifiers: this.pythonConfiguration.classifiers, - urls: Object.fromEntries(this.pythonConfiguration.urls.map(({ key, value }) => [key, value])) + : undefined; + } + + private static createJavaConfiguration(config: JavaConfigurationItem | null): PackageConfigurationData | undefined { + return config?.isEnabled + ? { + groupId: config.groupId, + artifactId: config.artifactId, + name: config.name, + description: config.description, + url: config.url, + developers: config.developers, + distributionManagement: config.distributionManagement, + scm: config.scm } - : undefined; - case Language.RUBY: - return this.rubyConfiguration && this.rubyConfiguration.isEnabled - ? { - name: this.rubyConfiguration.name, - authors: this.rubyConfiguration.authors, - summary: this.rubyConfiguration.summary, - description: this.rubyConfiguration.description, - email: this.rubyConfiguration.email, - homepage: this.rubyConfiguration.homepage, - metadata: Object.fromEntries(this.rubyConfiguration.metadata.map(({ key, value }) => [key, value])), - postInstallMessage: this.rubyConfiguration.postInstallMessage, - requirements: this.rubyConfiguration.requirements + : undefined; + } + + private static createPhpConfiguration(config: PhpConfigurationItem | null): PackageConfigurationData | undefined { + return config?.isEnabled + ? { + vendorName: config.vendorName, + projectName: config.projectName, + description: config.description, + type: config.type, + keywords: config.keywords, + homepage: config.homepage, + authors: config.authors, + support: config.support } - : undefined; - case Language.TYPESCRIPT: - return this.typeScriptConfiguration && this.typeScriptConfiguration.isEnabled - ? { - name: this.typeScriptConfiguration.name, - author: this.typeScriptConfiguration.author, - description: this.typeScriptConfiguration.description, - contributors: this.typeScriptConfiguration.contributors, - bugs: this.typeScriptConfiguration.bugs, - homepage: this.typeScriptConfiguration.homepage, - repository: this.typeScriptConfiguration.repository, - keywords: this.typeScriptConfiguration.keywords + : undefined; + } + + private static createPythonConfiguration(config: PythonConfigurationItem | null): PackageConfigurationData | undefined { + return config?.isEnabled + ? { + name: config.name, + description: config.description, + authors: config.authors, + maintainers: config.maintainers, + keywords: config.keywords, + classifiers: config.classifiers, + urls: Object.fromEntries(config.urls.map(({ key, value }) => [key, value])) } - : undefined; - case Language.GO: - return this.goConfiguration && this.goConfiguration.isEnabled - ? { - packageName: this.goConfiguration.packageName + : undefined; + } + + private static createRubyConfiguration(config: RubyConfigurationItem | null): PackageConfigurationData | undefined { + return config?.isEnabled + ? { + name: config.name, + authors: config.authors, + summary: config.summary, + description: config.description, + email: config.email, + homepage: config.homepage, + metadata: Object.fromEntries(config.metadata.map(({ key, value }) => [key, value])), + postInstallMessage: config.postInstallMessage, + requirements: config.requirements } - : undefined; - } + : undefined; } - private getLanguageConfigs(): LanguagePublishingConfig[] { - return [ - { language: Language.CSHARP, packageConfig: this.cSharpConfiguration, gitConfig: this.cSharpGitConfiguration }, - { language: Language.JAVA, packageConfig: this.javaConfiguration, gitConfig: this.javaGitConfiguration }, - { language: Language.GO, packageConfig: this.goConfiguration, gitConfig: this.goGitConfiguration }, - { language: Language.PHP, packageConfig: this.phpConfiguration, gitConfig: this.phpGitConfiguration }, - { language: Language.PYTHON, packageConfig: this.pythonConfiguration, gitConfig: this.pythonGitConfiguration }, - { language: Language.RUBY, packageConfig: this.rubyConfiguration, gitConfig: this.rubyGitConfiguration }, - { - language: Language.TYPESCRIPT, - packageConfig: this.typeScriptConfiguration, - gitConfig: this.typeScriptGitConfiguration - } - ]; + private static createTypeScriptConfiguration(config: TypeScriptConfigurationItem | null): PackageConfigurationData | undefined { + return config?.isEnabled + ? { + name: config.name, + author: config.author, + description: config.description, + contributors: config.contributors, + bugs: config.bugs, + homepage: config.homepage, + keywords: config.keywords, + repository: config.repository, + } + : undefined; } - private getLanguageConfig(language: Language): LanguagePublishingConfig { - return this.getLanguageConfigs().find((lc) => lc.language === language)!; + private static createGoConfiguration(config: GoConfigurationItem | null): PackageConfigurationData | undefined { + return config?.isEnabled + ? { + packageName: config.packageName + } + : undefined; } + } From dca210fa684bbd22a482d6c4f04798e670c2d98c Mon Sep 17 00:00:00 2001 From: Ayeshas09 Date: Tue, 12 May 2026 12:39:42 +0500 Subject: [PATCH 4/6] refactor --- .../publish/package-settings-configuration.ts | 14 +++++----- src/types/publish/publishing-profile.ts | 27 ++++++++++++------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/types/publish/package-settings-configuration.ts b/src/types/publish/package-settings-configuration.ts index 44e5699a..1d1465f6 100644 --- a/src/types/publish/package-settings-configuration.ts +++ b/src/types/publish/package-settings-configuration.ts @@ -10,7 +10,7 @@ import { TsRepository } from '../publish-api/publishing-profile-item.js'; -interface CSharpPackageConfiguration { +export interface CSharpPackageConfiguration { packageId: string; authors: string | null; description: string | null; @@ -24,7 +24,7 @@ interface CSharpPackageConfiguration { copyright: string | null; } -interface JavaPackageConfiguration { +export interface JavaPackageConfiguration { groupId: string; artifactId: string; name: string; @@ -35,7 +35,7 @@ interface JavaPackageConfiguration { scm: JavaScm; } -interface PhpPackageConfiguration { +export interface PhpPackageConfiguration { vendorName: string; projectName: string; description: string; @@ -46,7 +46,7 @@ interface PhpPackageConfiguration { support: PhpSupport; } -interface PythonPackageConfiguration { +export interface PythonPackageConfiguration { name: string; description: string | null; authors: PythonPerson[]; @@ -56,7 +56,7 @@ interface PythonPackageConfiguration { urls: Record; } -interface RubyPackageConfiguration { +export interface RubyPackageConfiguration { name: string; authors: string[]; summary: string; @@ -68,7 +68,7 @@ interface RubyPackageConfiguration { requirements: string[]; } -interface TypeScriptPackageConfiguration { +export interface TypeScriptPackageConfiguration { name: string; author: TsPerson; description: string | null; @@ -79,7 +79,7 @@ interface TypeScriptPackageConfiguration { repository: TsRepository; } -interface GoPackageConfiguration { +export interface GoPackageConfiguration { packageName: string; } diff --git a/src/types/publish/publishing-profile.ts b/src/types/publish/publishing-profile.ts index d9ea2a07..31e9d5cf 100644 --- a/src/types/publish/publishing-profile.ts +++ b/src/types/publish/publishing-profile.ts @@ -13,7 +13,16 @@ import { TypeScriptConfigurationItem, PublishType, } from '../publish-api/publishing-profile-item.js'; -import { PackageConfigurationData } from './package-settings-configuration.js'; +import { + CSharpPackageConfiguration, + GoPackageConfiguration, + JavaPackageConfiguration, + PackageConfigurationData, + PhpPackageConfiguration, + PythonPackageConfiguration, + RubyPackageConfiguration, + TypeScriptPackageConfiguration +} from './package-settings-configuration.js'; export class PublishingProfile { private readonly profile: PublishingProfileItem; @@ -33,7 +42,7 @@ export class PublishingProfile { [Language.RUBY, PublishingProfile.createRubyConfiguration(profile.rubyConfiguration)], [Language.TYPESCRIPT, PublishingProfile.createTypeScriptConfiguration(profile.typeScriptConfiguration)] ] as [Language, PackageConfigurationData | undefined][] - ).filter(([, config]) => config !== undefined) + ).filter(([, data]) => data !== undefined) ); this.gitConfigs = Object.fromEntries( ( @@ -105,7 +114,7 @@ export class PublishingProfile { return this.languageConfigs[language]; } - private static createCSharpConfiguration(config: CSharpConfigurationItem | null): PackageConfigurationData | undefined { + private static createCSharpConfiguration(config: CSharpConfigurationItem | null): CSharpPackageConfiguration | undefined { return config?.isEnabled ? { packageId: config.packageId, @@ -123,7 +132,7 @@ export class PublishingProfile { : undefined; } - private static createJavaConfiguration(config: JavaConfigurationItem | null): PackageConfigurationData | undefined { + private static createJavaConfiguration(config: JavaConfigurationItem | null): JavaPackageConfiguration | undefined { return config?.isEnabled ? { groupId: config.groupId, @@ -138,7 +147,7 @@ export class PublishingProfile { : undefined; } - private static createPhpConfiguration(config: PhpConfigurationItem | null): PackageConfigurationData | undefined { + private static createPhpConfiguration(config: PhpConfigurationItem | null): PhpPackageConfiguration | undefined { return config?.isEnabled ? { vendorName: config.vendorName, @@ -153,7 +162,7 @@ export class PublishingProfile { : undefined; } - private static createPythonConfiguration(config: PythonConfigurationItem | null): PackageConfigurationData | undefined { + private static createPythonConfiguration(config: PythonConfigurationItem | null): PythonPackageConfiguration | undefined { return config?.isEnabled ? { name: config.name, @@ -167,7 +176,7 @@ export class PublishingProfile { : undefined; } - private static createRubyConfiguration(config: RubyConfigurationItem | null): PackageConfigurationData | undefined { + private static createRubyConfiguration(config: RubyConfigurationItem | null): RubyPackageConfiguration | undefined { return config?.isEnabled ? { name: config.name, @@ -183,7 +192,7 @@ export class PublishingProfile { : undefined; } - private static createTypeScriptConfiguration(config: TypeScriptConfigurationItem | null): PackageConfigurationData | undefined { + private static createTypeScriptConfiguration(config: TypeScriptConfigurationItem | null): TypeScriptPackageConfiguration | undefined { return config?.isEnabled ? { name: config.name, @@ -198,7 +207,7 @@ export class PublishingProfile { : undefined; } - private static createGoConfiguration(config: GoConfigurationItem | null): PackageConfigurationData | undefined { + private static createGoConfiguration(config: GoConfigurationItem | null): GoPackageConfiguration | undefined { return config?.isEnabled ? { packageName: config.packageName From 679e60ff9f525776dfbde481b09a00d599de854a Mon Sep 17 00:00:00 2001 From: saeedjamshaid Date: Tue, 12 May 2026 13:34:36 +0500 Subject: [PATCH 5/6] refactor: hoist isEnabled check to language config map Co-Authored-By: Claude Opus 4.7 --- src/types/publish/publishing-profile.ts | 70 ++++++++++--------------- 1 file changed, 28 insertions(+), 42 deletions(-) diff --git a/src/types/publish/publishing-profile.ts b/src/types/publish/publishing-profile.ts index 31e9d5cf..71a95864 100644 --- a/src/types/publish/publishing-profile.ts +++ b/src/types/publish/publishing-profile.ts @@ -34,13 +34,13 @@ export class PublishingProfile { this.languageConfigs = Object.fromEntries( ( [ - [Language.CSHARP, PublishingProfile.createCSharpConfiguration(profile.cSharpConfiguration)], - [Language.GO, PublishingProfile.createGoConfiguration(profile.goConfiguration)], - [Language.JAVA, PublishingProfile.createJavaConfiguration(profile.javaConfiguration)], - [Language.PHP, PublishingProfile.createPhpConfiguration(profile.phpConfiguration)], - [Language.PYTHON, PublishingProfile.createPythonConfiguration(profile.pythonConfiguration)], - [Language.RUBY, PublishingProfile.createRubyConfiguration(profile.rubyConfiguration)], - [Language.TYPESCRIPT, PublishingProfile.createTypeScriptConfiguration(profile.typeScriptConfiguration)] + [Language.CSHARP, profile.cSharpConfiguration?.isEnabled ? PublishingProfile.createCSharpConfiguration(profile.cSharpConfiguration) : undefined], + [Language.GO, profile.goConfiguration?.isEnabled ? PublishingProfile.createGoConfiguration(profile.goConfiguration) : undefined], + [Language.JAVA, profile.javaConfiguration?.isEnabled ? PublishingProfile.createJavaConfiguration(profile.javaConfiguration) : undefined], + [Language.PHP, profile.phpConfiguration?.isEnabled ? PublishingProfile.createPhpConfiguration(profile.phpConfiguration) : undefined], + [Language.PYTHON, profile.pythonConfiguration?.isEnabled ? PublishingProfile.createPythonConfiguration(profile.pythonConfiguration) : undefined], + [Language.RUBY, profile.rubyConfiguration?.isEnabled ? PublishingProfile.createRubyConfiguration(profile.rubyConfiguration) : undefined], + [Language.TYPESCRIPT, profile.typeScriptConfiguration?.isEnabled ? PublishingProfile.createTypeScriptConfiguration(profile.typeScriptConfiguration) : undefined] ] as [Language, PackageConfigurationData | undefined][] ).filter(([, data]) => data !== undefined) ); @@ -114,9 +114,8 @@ export class PublishingProfile { return this.languageConfigs[language]; } - private static createCSharpConfiguration(config: CSharpConfigurationItem | null): CSharpPackageConfiguration | undefined { - return config?.isEnabled - ? { + private static createCSharpConfiguration(config: CSharpConfigurationItem): CSharpPackageConfiguration { + return { packageId: config.packageId, authors: config.authors, description: config.description, @@ -128,13 +127,11 @@ export class PublishingProfile { packageIcon: config.packageIcon, packageReleaseNotes: config.packageReleaseNotes, copyright: config.copyright - } - : undefined; + }; } - private static createJavaConfiguration(config: JavaConfigurationItem | null): JavaPackageConfiguration | undefined { - return config?.isEnabled - ? { + private static createJavaConfiguration(config: JavaConfigurationItem): JavaPackageConfiguration { + return { groupId: config.groupId, artifactId: config.artifactId, name: config.name, @@ -143,13 +140,11 @@ export class PublishingProfile { developers: config.developers, distributionManagement: config.distributionManagement, scm: config.scm - } - : undefined; + }; } - private static createPhpConfiguration(config: PhpConfigurationItem | null): PhpPackageConfiguration | undefined { - return config?.isEnabled - ? { + private static createPhpConfiguration(config: PhpConfigurationItem): PhpPackageConfiguration { + return { vendorName: config.vendorName, projectName: config.projectName, description: config.description, @@ -158,13 +153,11 @@ export class PublishingProfile { homepage: config.homepage, authors: config.authors, support: config.support - } - : undefined; + }; } - private static createPythonConfiguration(config: PythonConfigurationItem | null): PythonPackageConfiguration | undefined { - return config?.isEnabled - ? { + private static createPythonConfiguration(config: PythonConfigurationItem): PythonPackageConfiguration { + return { name: config.name, description: config.description, authors: config.authors, @@ -172,13 +165,11 @@ export class PublishingProfile { keywords: config.keywords, classifiers: config.classifiers, urls: Object.fromEntries(config.urls.map(({ key, value }) => [key, value])) - } - : undefined; + }; } - private static createRubyConfiguration(config: RubyConfigurationItem | null): RubyPackageConfiguration | undefined { - return config?.isEnabled - ? { + private static createRubyConfiguration(config: RubyConfigurationItem) : RubyPackageConfiguration { + return { name: config.name, authors: config.authors, summary: config.summary, @@ -188,13 +179,11 @@ export class PublishingProfile { metadata: Object.fromEntries(config.metadata.map(({ key, value }) => [key, value])), postInstallMessage: config.postInstallMessage, requirements: config.requirements - } - : undefined; + }; } - private static createTypeScriptConfiguration(config: TypeScriptConfigurationItem | null): TypeScriptPackageConfiguration | undefined { - return config?.isEnabled - ? { + private static createTypeScriptConfiguration(config: TypeScriptConfigurationItem): TypeScriptPackageConfiguration { + return { name: config.name, author: config.author, description: config.description, @@ -203,16 +192,13 @@ export class PublishingProfile { homepage: config.homepage, keywords: config.keywords, repository: config.repository, - } - : undefined; + }; } - private static createGoConfiguration(config: GoConfigurationItem | null): GoPackageConfiguration | undefined { - return config?.isEnabled - ? { + private static createGoConfiguration(config: GoConfigurationItem): GoPackageConfiguration { + return { packageName: config.packageName - } - : undefined; + }; } } From a202a4afb478626738362def5985184974d4df12 Mon Sep 17 00:00:00 2001 From: Ayeshas09 Date: Tue, 12 May 2026 13:45:47 +0500 Subject: [PATCH 6/6] refactor gitConfig creation in publishing profile --- .../publish/package-settings-configuration.ts | 7 ++++++ src/types/publish/publishing-profile.ts | 23 +++++++++---------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/types/publish/package-settings-configuration.ts b/src/types/publish/package-settings-configuration.ts index 1d1465f6..35550b6b 100644 --- a/src/types/publish/package-settings-configuration.ts +++ b/src/types/publish/package-settings-configuration.ts @@ -10,6 +10,13 @@ import { TsRepository } from '../publish-api/publishing-profile-item.js'; +export interface GitConfiguration { + isEnabled: boolean; + credentialsId: string; + repositoryName: string; + branch: string; +} + export interface CSharpPackageConfiguration { packageId: string; authors: string | null; diff --git a/src/types/publish/publishing-profile.ts b/src/types/publish/publishing-profile.ts index 71a95864..7f1398d7 100644 --- a/src/types/publish/publishing-profile.ts +++ b/src/types/publish/publishing-profile.ts @@ -1,7 +1,6 @@ import { Language } from '../sdk/generate.js'; import { CSharpConfigurationItem, - GitConfigurationItem, GoConfigurationItem, JavaConfigurationItem, PhpConfigurationItem, @@ -15,6 +14,7 @@ import { } from '../publish-api/publishing-profile-item.js'; import { CSharpPackageConfiguration, + GitConfiguration, GoPackageConfiguration, JavaPackageConfiguration, PackageConfigurationData, @@ -27,7 +27,7 @@ import { export class PublishingProfile { private readonly profile: PublishingProfileItem; private readonly languageConfigs: Partial>; - private readonly gitConfigs: Partial>; + private readonly gitConfigs: Partial>; private constructor(profile: PublishingProfileItem) { this.profile = profile; @@ -47,15 +47,15 @@ export class PublishingProfile { this.gitConfigs = Object.fromEntries( ( [ - [Language.CSHARP, profile.cSharpGitConfiguration], - [Language.GO, profile.goGitConfiguration], - [Language.JAVA, profile.javaGitConfiguration], - [Language.PHP, profile.phpGitConfiguration], - [Language.PYTHON, profile.pythonGitConfiguration], - [Language.RUBY, profile.rubyGitConfiguration], - [Language.TYPESCRIPT, profile.typeScriptGitConfiguration] - ] as [Language, GitConfigurationItem | null][] - ).filter(([, config]) => config?.isEnabled) + [Language.CSHARP, profile.cSharpGitConfiguration?.isEnabled ? profile.cSharpGitConfiguration : undefined], + [Language.GO, profile.goGitConfiguration?.isEnabled ? profile.goGitConfiguration : undefined], + [Language.JAVA, profile.javaGitConfiguration?.isEnabled ? profile.javaGitConfiguration : undefined], + [Language.PHP, profile.phpGitConfiguration?.isEnabled ? profile.phpGitConfiguration : undefined], + [Language.PYTHON, profile.pythonGitConfiguration?.isEnabled ? profile.pythonGitConfiguration : undefined], + [Language.RUBY, profile.rubyGitConfiguration?.isEnabled ? profile.rubyGitConfiguration : undefined], + [Language.TYPESCRIPT, profile.typeScriptGitConfiguration?.isEnabled ? profile.typeScriptGitConfiguration : undefined] + ] as [Language, GitConfiguration | undefined][] + ).filter(([, config]) => config !== undefined) ); } @@ -200,5 +200,4 @@ export class PublishingProfile { packageName: config.packageName }; } - }