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
8 changes: 3 additions & 5 deletions src/actions/sdk/publish.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -38,14 +37,13 @@ export class SdkPublishAction {
onPublishSdkError: (errorMessage: string) => void
): Promise<ActionResult<PublishingInfo>> => {
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);
Expand Down
39 changes: 22 additions & 17 deletions src/types/publish-api/publishing-profile-item.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
}

Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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[];
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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[];
Expand Down
103 changes: 22 additions & 81 deletions src/types/publish/package-settings-configuration.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
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 {
export interface GitConfiguration {
isEnabled: boolean;
credentialsId: string;
repositoryName: string;
branch: string;
}

export interface CSharpPackageConfiguration {
packageId: string;
authors: string | null;
description: string | null;
Expand All @@ -33,7 +31,7 @@ interface CSharpPackageConfiguration {
copyright: string | null;
}

interface JavaPackageConfiguration {
export interface JavaPackageConfiguration {
groupId: string;
artifactId: string;
name: string;
Expand All @@ -44,7 +42,7 @@ interface JavaPackageConfiguration {
scm: JavaScm;
}

interface PhpPackageConfiguration {
export interface PhpPackageConfiguration {
vendorName: string;
projectName: string;
description: string;
Expand All @@ -55,29 +53,29 @@ interface PhpPackageConfiguration {
support: PhpSupport;
}

interface PythonPackageConfiguration {
export interface PythonPackageConfiguration {
name: string;
description: string | null;
authors: PythonPerson[];
maintainers: PythonPerson[];
keywords: string[];
classifiers: string[];
urls: KeyValueItem[];
urls: Record<string, string>;
}

interface RubyPackageConfiguration {
export interface RubyPackageConfiguration {
name: string;
authors: string[];
summary: string;
description: string | null;
email: string[];
homepage: string | null;
metadata: KeyValueItem[];
metadata: Record<string, string>;
postInstallMessage: string | null;
requirements: string[];
}

interface TypeScriptPackageConfiguration {
export interface TypeScriptPackageConfiguration {
name: string;
author: TsPerson;
description: string | null;
Expand All @@ -88,72 +86,15 @@ interface TypeScriptPackageConfiguration {
repository: TsRepository;
}

export 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;
Loading
Loading