Skip to content
Merged
8 changes: 8 additions & 0 deletions workspaces/extensions/.changeset/twelve-geese-buy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@red-hat-developer-hub/backstage-plugin-extensions-backend': minor
'@red-hat-developer-hub/backstage-plugin-extensions-common': minor
'@red-hat-developer-hub/backstage-plugin-extensions': minor
'@red-hat-developer-hub/extensions-cli': minor
---

Replaced `disabled` field with `enabled` in plugin configuration
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ export interface DynamicPluginsConfig {

export interface DynamicPluginConfig {
package: string;
disabled: boolean;
enabled?: boolean;
disabled?: boolean;
pluginConfig: JsonObject;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
plugins:
- package: ''
disabled: true
enabled: false
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
plugins:
- package: ./dynamic-plugins/dist/package11-backend-dynamic
disabled: true
enabled: false
- package: ./dynamic-plugins/dist/package12
disabled: true
enabled: false
pluginConfig:
dynamicPlugins:
frontend:
Expand All @@ -11,4 +11,4 @@ plugins:
- path: /package12
importName: Package12Page
- package: ./dynamic-plugins/dist/package21-backend-dynamic
disabled: true
enabled: false
Original file line number Diff line number Diff line change
Expand Up @@ -127,18 +127,18 @@ export const mockPackages = [

export const mockDynamicPackage11 = {
package: mockPackages[0].spec.dynamicArtifact,
disabled: true,
enabled: false,
};

export const mockDynamicPackage12 = {
package: mockPackages[1].spec.dynamicArtifact,
disabled: true,
enabled: false,
pluginConfig: mockPackages[1].spec.appConfigExamples?.at(0)?.content,
};

export const mockDynamicPackage21 = {
package: mockPackages[2].spec.dynamicArtifact,
disabled: true,
enabled: false,
};

export const mockDynamicPlugin1 = [mockDynamicPackage11, mockDynamicPackage12];
Expand All @@ -161,8 +161,8 @@ export const mockFileInstallationStorage = {
}),
updatePackage: jest.fn(),
updatePackages: jest.fn(),
setPackageDisabled: jest.fn(),
setPackagesDisabled: jest.fn(),
setPackageEnabled: jest.fn(),
setPackagesEnabled: jest.fn(),
} as unknown as jest.Mocked<FileInstallationStorage>;

export const mockInstallationDataService = {
Expand All @@ -171,8 +171,8 @@ export const mockInstallationDataService = {
getInitializationError: jest.fn().mockReturnValue(undefined),
updatePackageConfig: jest.fn(),
updatePluginConfig: jest.fn(),
setPackageDisabled: jest.fn(),
setPluginDisabled: jest.fn(),
setPackageEnabled: jest.fn(),
setPluginEnabled: jest.fn(),
} as unknown as jest.Mocked<InstallationDataService>;

export const mockExtensionsApi = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ describe('FileInstallationStorage', () => {
);
const updatedPackage = {
...mockDynamicPackage21,
disabled: false,
enabled: true,
};
const fileInstallationStorage = new FileInstallationStorage(
configFileName,
Expand Down Expand Up @@ -186,7 +186,7 @@ describe('FileInstallationStorage', () => {
);
const newPackage = {
package: newPackageName,
disabled: true,
enabled: false,
};
const fileInstallationStorage = new FileInstallationStorage(
configFileName,
Expand Down Expand Up @@ -248,12 +248,12 @@ describe('FileInstallationStorage', () => {
);
const addedPackage = {
package: './dynamic-plugins/dist/package11-backend-module-dynamic',
disabled: true,
enabled: false,
};
const updatedPlugin = [
{
...mockDynamicPackage11,
disabled: false,
enabled: true,
pluginConfig: {
plugin1: {
setting: true,
Expand All @@ -262,7 +262,7 @@ describe('FileInstallationStorage', () => {
},
{
...mockDynamicPackage12,
disabled: false,
enabled: true,
pluginConfig: {
dynamicPlugins: {
frontend: {
Expand Down Expand Up @@ -310,7 +310,7 @@ describe('FileInstallationStorage', () => {
const newPlugin = [
{
package: newPackageName,
disabled: true,
enabled: false,
},
];
const fileInstallationStorage = new FileInstallationStorage(
Expand Down Expand Up @@ -352,7 +352,7 @@ describe('FileInstallationStorage', () => {
});
});

describe('setPackageDisabled', () => {
describe('setPackageEnabled', () => {
afterEach(() => {
fs.writeFileSync(
resolve(__dirname, '../../__fixtures__/data/validPluginsConfig.yaml'),
Expand All @@ -366,7 +366,7 @@ describe('FileInstallationStorage', () => {
);
});

it('should add new package with disabled status', () => {
it('should add new package with enabled status', () => {
const configFileName = resolve(
__dirname,
'../../__fixtures__/data/validPluginsConfig.yaml',
Expand All @@ -376,19 +376,19 @@ describe('FileInstallationStorage', () => {
);
fileInstallationStorage.initialize();

fileInstallationStorage.setPackageDisabled(newPackageName, false);
fileInstallationStorage.setPackageEnabled(newPackageName, true);

const updatedCatalogInfoYaml = fs.readFileSync(configFileName, 'utf8');
const configYaml = parse(updatedCatalogInfoYaml);
expect(configYaml.plugins).toEqual([
mockDynamicPackage11,
mockDynamicPackage12,
mockDynamicPackage21,
{ package: newPackageName, disabled: false },
{ package: newPackageName, enabled: true },
]);
});

it('should update existing package with disabled status', () => {
it('should update existing package with enabled status', () => {
const configFileName = resolve(
__dirname,
'../../__fixtures__/data/validPluginsConfig.yaml',
Expand All @@ -398,22 +398,22 @@ describe('FileInstallationStorage', () => {
);
fileInstallationStorage.initialize();

fileInstallationStorage.setPackageDisabled(
fileInstallationStorage.setPackageEnabled(
mockDynamicPackage12.package,
false,
true,
);

const updatedCatalogInfoYaml = fs.readFileSync(configFileName, 'utf8');
const configYaml = parse(updatedCatalogInfoYaml);
expect(configYaml.plugins).toEqual([
mockDynamicPackage11,
{ ...mockDynamicPackage12, disabled: false },
{ ...mockDynamicPackage12, enabled: true },
mockDynamicPackage21,
]);
});
});

describe('setPackagesDisabled', () => {
describe('setPackagesEnabled', () => {
afterEach(() => {
fs.writeFileSync(
resolve(__dirname, '../../__fixtures__/data/validPluginsConfig.yaml'),
Expand All @@ -427,29 +427,29 @@ describe('FileInstallationStorage', () => {
);
});

it('should set disabled for existing plugin in the config', () => {
it('should set enabled for existing plugin in the config', () => {
const configFileName = resolve(
__dirname,
'../../__fixtures__/data/validPluginsConfig.yaml',
);
const updatedPlugin = [
{
...mockDynamicPackage11,
disabled: false,
enabled: true,
},
{
...mockDynamicPackage12,
disabled: false,
enabled: true,
},
];
const fileInstallationStorage = new FileInstallationStorage(
configFileName,
);
fileInstallationStorage.initialize();

fileInstallationStorage.setPackagesDisabled(
fileInstallationStorage.setPackagesEnabled(
new Set([mockDynamicPackage11.package, mockDynamicPackage12.package]),
false,
true,
);

const updatedCatalogInfoYaml = fs.readFileSync(configFileName, 'utf8');
Expand All @@ -460,25 +460,25 @@ describe('FileInstallationStorage', () => {
]);
});

it('should set disabled for new plugin in the config', () => {
it('should set enabled for new plugin in the config', () => {
const configFileName = resolve(
__dirname,
'../../__fixtures__/data/validPluginsConfig.yaml',
);
const newPlugin = [
{
package: newPackageName,
disabled: false,
enabled: true,
},
];
const fileInstallationStorage = new FileInstallationStorage(
configFileName,
);
fileInstallationStorage.initialize();

fileInstallationStorage.setPackagesDisabled(
fileInstallationStorage.setPackagesEnabled(
new Set([newPackageName]),
false,
true,
);

const updatedCatalogInfoYaml = fs.readFileSync(configFileName, 'utf8');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ export interface InstallationStorage {
updatePackage(packageName: string, newConfig: string): void;
getPackages(packageNames: Set<string>): string | undefined;
updatePackages(packageNames: Set<string>, newConfig: string): void;
setPackageDisabled(packageName: string, disabled: boolean): void;
setPackagesDisabled(packageNames: Set<string>, disabled: boolean): void;
setPackageEnabled(packageName: string, enabled: boolean): void;
setPackagesEnabled(packageNames: Set<string>, enabled: boolean): void;
}

export class FileInstallationStorage implements InstallationStorage {
Expand Down Expand Up @@ -133,18 +133,19 @@ export class FileInstallationStorage implements InstallationStorage {
this.save();
}

setPackageDisabled(packageName: string, disabled: boolean) {
setPackageEnabled(packageName: string, enabled: boolean) {
let pkg = this.getPackageYamlMap(packageName);
if (!pkg) {
pkg = new YAMLMap<string, JsonValue>();
pkg.set('package', packageName);
this.packages.add(pkg);
}
pkg.set('disabled', disabled);
pkg.set('enabled', enabled);
pkg.delete('disabled');
this.save();
}

setPackagesDisabled(packageNames: Set<string>, disabled: boolean) {
setPackagesEnabled(packageNames: Set<string>, enabled: boolean) {
const packages = this.config.get('plugins') as YAMLSeq<
YAMLMap<string, JsonValue>
>;
Expand All @@ -159,7 +160,8 @@ export class FileInstallationStorage implements InstallationStorage {
item.set('package', packageName);
packages.add(item);
}
item.set('disabled', disabled);
item.set('enabled', enabled);
item.delete('disabled');
}

this.save();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ describe('InstallationDataService', () => {
});

it('should update package', () => {
const newConfig = stringify({ ...mockDynamicPackage11, disabled: false });
const newConfig = stringify({ ...mockDynamicPackage11, enabled: true });
installationDataService.updatePackageConfig(
mockDynamicPackage11.package,
newConfig,
Expand Down Expand Up @@ -237,7 +237,7 @@ describe('InstallationDataService', () => {
});
});

describe('setPackageDisabled', () => {
describe('setPackageEnabled', () => {
beforeEach(() => {
installationDataService = InstallationDataService.fromConfig({
config: validConfig,
Expand All @@ -246,19 +246,19 @@ describe('InstallationDataService', () => {
});
});

it('should set package with disabled', async () => {
installationDataService.setPackageDisabled(
it('should set package enabled', async () => {
installationDataService.setPackageEnabled(
mockDynamicPackage11.package,
false,
);

expect(
mockFileInstallationStorage.setPackageDisabled,
mockFileInstallationStorage.setPackageEnabled,
).toHaveBeenCalledWith(mockDynamicPackage11.package, false);
});
});

describe('setPluginDisabled', () => {
describe('setPluginEnabled', () => {
beforeEach(() => {
installationDataService = InstallationDataService.fromConfig({
config: validConfig,
Expand All @@ -267,15 +267,13 @@ describe('InstallationDataService', () => {
});
});

it('should set plugin disabled', async () => {
await installationDataService.setPluginDisabled(plugin, true);
it('should set plugin enabled', async () => {
await installationDataService.setPluginEnabled(plugin, true);

expect(
mockFileInstallationStorage.setPackagesDisabled,
).toHaveBeenCalled();
expect(mockFileInstallationStorage.setPackagesEnabled).toHaveBeenCalled();

expect(
mockFileInstallationStorage.setPackagesDisabled,
mockFileInstallationStorage.setPackagesEnabled,
).toHaveBeenCalledWith(
new Set([
mockPackages[0].spec.dynamicArtifact,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,15 +167,12 @@ export class InstallationDataService {
this.installationStorage.updatePackages(dynamicArtifacts, newConfig);
}

setPackageDisabled(packageDynamicArtifact: string, disabled: boolean) {
this.installationStorage.setPackageDisabled(
packageDynamicArtifact,
disabled,
);
setPackageEnabled(packageDynamicArtifact: string, enabled: boolean) {
this.installationStorage.setPackageEnabled(packageDynamicArtifact, enabled);
}

async setPluginDisabled(plugin: ExtensionsPlugin, disabled: boolean) {
async setPluginEnabled(plugin: ExtensionsPlugin, enabled: boolean) {
const dynamicArtifacts = await this.getPluginDynamicArtifacts(plugin);
this.installationStorage.setPackagesDisabled(dynamicArtifacts, disabled);
this.installationStorage.setPackagesEnabled(dynamicArtifacts, enabled);
}
}
Loading
Loading