Skip to content

Commit ef1142e

Browse files
committed
feat: Refactored all references to property to "parameter"
1 parent fea518c commit ef1142e

File tree

9 files changed

+71
-69
lines changed

9 files changed

+71
-69
lines changed

src/orchestrators/import.ts

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import { DependencyMap, PluginManager } from '../plugins/plugin-manager.js';
88
import { Reporter } from '../ui/reporters/reporter.js';
99
import { InitializeOrchestrator } from './initialize.js';
1010

11-
export type RequiredProperties = Map<string, RequiredProperty[]>;
12-
export type UserSuppliedProperties = Map<string, Record<string, unknown>>;
11+
export type RequiredParameters = Map<string, RequiredParameter[]>;
12+
export type UserSuppliedParameters = Map<string, Record<string, unknown>>;
1313
export type ImportResult = { result: ResourceConfig[], errors: string[] }
1414

1515
export interface ImportArgs {
@@ -18,9 +18,9 @@ export interface ImportArgs {
1818
secureMode?: boolean;
1919
}
2020

21-
export interface RequiredProperty {
22-
propertyName: string;
23-
propertyType: string;
21+
export interface RequiredParameter {
22+
parameterName: string;
23+
parameterType: string;
2424
plugin: string;
2525
}
2626

@@ -44,8 +44,8 @@ export class ImportOrchestrator {
4444

4545
const requiredParameters = await ImportOrchestrator.getRequiredParameters(typeIds, pluginManager);
4646

47-
const userSuppliedProperties = await reporter.askRequiredPropertiesForImport(requiredParameters);
48-
const importResult = await ImportOrchestrator.getImportedConfigs(pluginManager, typeIds, userSuppliedProperties)
47+
const userSuppliedParameters = await reporter.askRequiredParametersForImport(requiredParameters);
48+
const importResult = await ImportOrchestrator.getImportedConfigs(pluginManager, typeIds, userSuppliedParameters)
4949

5050
ctx.processFinished(ProcessName.IMPORT)
5151
reporter.displayImportResult(importResult);
@@ -54,10 +54,10 @@ export class ImportOrchestrator {
5454
static async getRequiredParameters(
5555
typeIds: string[],
5656
pluginManager: PluginManager
57-
): Promise<RequiredProperties> {
57+
): Promise<RequiredParameters> {
5858
ctx.subprocessStarted(SubProcessName.GET_REQUIRED_PARAMETERS);
5959

60-
const allRequiredProperties = new Map<string, RequiredProperty[]>();
60+
const allRequiredParameters = new Map<string, RequiredParameter[]>();
6161
for (const type of typeIds) {
6262
const resourceInfo = await pluginManager.getResourceInfo(type);
6363

@@ -66,36 +66,36 @@ export class ImportOrchestrator {
6666
continue;
6767
}
6868

69-
const requiredPropertyNames = resourceInfo.import?.requiredParameters;
70-
if (!requiredPropertyNames || requiredPropertyNames.length === 0) {
69+
const requiredParameterNames = resourceInfo.import?.requiredParameters;
70+
if (!requiredParameterNames || requiredParameterNames.length === 0) {
7171
continue;
7272
}
7373

74-
requiredPropertyNames
74+
requiredParameterNames
7575
.forEach((name) => {
76-
if (!allRequiredProperties.has(type)) {
77-
allRequiredProperties.set(type, []);
76+
if (!allRequiredParameters.has(type)) {
77+
allRequiredParameters.set(type, []);
7878
}
7979

80-
const propertyInfo = (schema.properties as any)[name];
80+
const schemaInfo = (schema.properties as any)[name];
8181

82-
allRequiredProperties.get(type)!.push({
83-
propertyName: name,
84-
propertyType: propertyInfo.type ?? null,
82+
allRequiredParameters.get(type)!.push({
83+
parameterName: name,
84+
parameterType: schemaInfo.type ?? null,
8585
plugin: resourceInfo.plugin
8686
})
8787
});
8888
}
8989

9090
ctx.subprocessFinished(SubProcessName.GET_REQUIRED_PARAMETERS);
9191

92-
return allRequiredProperties;
92+
return allRequiredParameters;
9393
}
9494

9595
static async getImportedConfigs(
9696
pluginManager: PluginManager,
9797
typeIds: string[],
98-
userSuppliedProperties: UserSuppliedProperties
98+
userSuppliedParameters: UserSuppliedParameters
9999
): Promise<ImportResult> {
100100
const importedConfigs = [];
101101
const errors = [];
@@ -105,7 +105,7 @@ export class ImportOrchestrator {
105105
try {
106106
const config: ResourceJson = {
107107
core: { type },
108-
parameters: userSuppliedProperties.get(type) ?? {},
108+
parameters: userSuppliedParameters.get(type) ?? {},
109109
};
110110

111111
const response = await pluginManager.importResource(config);

src/ui/components/default-component.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { EventEmitter } from 'node:events';
55
import React, { useLayoutEffect, useState } from 'react';
66

77
import { Plan } from '../../entities/plan.js';
8-
import { ImportResult, RequiredProperties } from '../../orchestrators/import.js';
8+
import { ImportResult, RequiredParameters } from '../../orchestrators/import.js';
99
import { RenderEvent, RenderState } from '../reporters/reporter.js';
1010
import { ImportResultComponent } from './import/import-result.js';
1111
import { ImportParametersForm } from './import/index.js';
@@ -24,7 +24,7 @@ export function DefaultComponent(props: {
2424
const [hideProgress, setHideProgress] = useState(false);
2525
const [plan, setPlan] = useState(null as Plan | null);
2626
const [showSudoPrompt, setShowPromptSudo] = useState(false);
27-
const [requiredPropertiesForImport, setRequiredPropertiesForImport] = useState<RequiredProperties | null>(null);
27+
const [requiredParametersForImport, setRequiredParametersForImport] = useState<RequiredParameters | null>(null);
2828
const [showImportParametersPrompt, setShowImportParametersPrompt] = useState(false);
2929
const [importResult, setImportResult] = useState<ImportResult | null>(null);
3030
const [sudoAttemptCount, setSudoAttemptCount] = useState(0);
@@ -81,15 +81,15 @@ export function DefaultComponent(props: {
8181
setSudoAttemptCount(0);
8282
});
8383

84-
emitter.on(RenderEvent.PROMPT_IMPORT_PARAMETERS, (requiredProperties) => {
84+
emitter.on(RenderEvent.PROMPT_IMPORT_PARAMETERS, (requiredParameters) => {
8585
setHideProgress(true);
86-
setRequiredPropertiesForImport(requiredProperties);
86+
setRequiredParametersForImport(requiredParameters);
8787
setShowImportParametersPrompt(true);
8888
})
8989

9090
emitter.on(RenderEvent.PROMPT_IMPORT_PARAMETERS_RESULT, () => {
9191
setHideProgress(false);
92-
setRequiredPropertiesForImport(null);
92+
setRequiredParametersForImport(null);
9393
setShowImportParametersPrompt(false);
9494
})
9595
}, []);
@@ -137,10 +137,10 @@ export function DefaultComponent(props: {
137137
)
138138
}
139139
{
140-
showImportParametersPrompt && requiredPropertiesForImport && (
140+
showImportParametersPrompt && requiredParametersForImport && (
141141
<ImportParametersForm onSubmit={(result) => {
142142
emitter.emit(RenderEvent.PROMPT_IMPORT_PARAMETERS_RESULT, result)
143-
}} requiredProperties={requiredPropertiesForImport}/>
143+
}} requiredParameters={requiredParametersForImport}/>
144144
)
145145
}
146146
{

src/ui/components/import/index.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
import { Form, FormProps } from 'ink-form';
22
import React from 'react';
33

4-
import { RequiredProperties } from '../../../orchestrators/import.js';
4+
import { RequiredParameters } from '../../../orchestrators/import.js';
55

66
export function ImportParametersForm(
7-
props: { requiredProperties: RequiredProperties, onSubmit?: (result: object) => void }
7+
props: { requiredParameters: RequiredParameters, onSubmit?: (result: object) => void }
88
) {
9-
const { requiredProperties, onSubmit } = props;
9+
const { requiredParameters, onSubmit } = props;
1010

1111
const form: FormProps = {
1212
form: {
1313
title: 'Import: Additional information is required for the following resources',
14-
sections: [...requiredProperties.entries()].map(([resourceName, v]) => ({
14+
sections: [...requiredParameters.entries()].map(([resourceName, v]) => ({
1515
title: `${resourceName}`,
1616
description: `Specify the following parameters for '${resourceName}'`,
17-
fields: v.map((resourceProperties) => ({
18-
type: resourceProperties.propertyType,
19-
name: `${resourceName}.${resourceProperties.propertyName}`,
20-
label: `'${resourceProperties.propertyName}' parameter value`,
17+
fields: v.map((resourceParameters) => ({
18+
type: resourceParameters.parameterType,
19+
name: `${resourceName}.${resourceParameters.parameterName}`,
20+
label: `'${resourceParameters.parameterName}' parameter value`,
2121
required: true,
2222
})),
2323
})),

src/ui/reporters/debug-reporter.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import readline from 'node:readline';
55

66
import { Plan } from '../../entities/plan.js';
77
import { Event, ctx } from '../../events/context.js';
8-
import { ImportResult, RequiredProperties, UserSuppliedProperties } from '../../orchestrators/import.js';
8+
import { ImportResult, RequiredParameters, UserSuppliedParameters } from '../../orchestrators/import.js';
99
import { SudoUtils } from '../../utils/sudo.js';
1010
import { Reporter } from './reporter.js';
1111

@@ -27,7 +27,7 @@ export class DebugReporter implements Reporter {
2727
ctx.on(Event.SUB_PROCESS_FINISH, (name) => debug(name))
2828
}
2929

30-
async askRequiredPropertiesForImport(requiredParameters: RequiredProperties): Promise<UserSuppliedProperties> {
30+
async askRequiredParametersForImport(requiredParameters: RequiredParameters): Promise<UserSuppliedParameters> {
3131
if (requiredParameters.size > 0 || [...requiredParameters.values()].reduce(
3232
(total, arr) => arr.length + total, 0
3333
)) {
@@ -36,21 +36,21 @@ export class DebugReporter implements Reporter {
3636

3737
const parameterInput = new Map<string, Record<string, unknown>>();
3838

39-
for (const [type, requiredProperties] of requiredParameters.entries()) {
40-
if (requiredProperties.length > 0) {
39+
for (const [type, requiredParameter] of requiredParameters.entries()) {
40+
if (requiredParameter.length > 0) {
4141
console.log(`Resource: "${type}" requires additional information:`)
4242
}
4343

44-
for (const property of requiredProperties) {
44+
for (const parameter of requiredParameter) {
4545
const response = await new Promise((resolve) => {
46-
this.rl.question(`${property.propertyName} [${property.propertyType}]: `, (answer) => resolve(answer));
46+
this.rl.question(`${parameter.parameterName} [${parameter.parameterType}]: `, (answer) => resolve(answer));
4747
});
4848

4949
if (!parameterInput.has(type)) {
5050
parameterInput.set(type, {});
5151
}
5252

53-
parameterInput.get(type)![property.propertyName] = response;
53+
parameterInput.get(type)![parameter.parameterName] = response;
5454
}
5555
}
5656

src/ui/reporters/default-reporter.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import React from 'react';
66

77
import { Plan } from '../../entities/plan.js';
88
import { Event, ProcessName, SubProcessName, ctx } from '../../events/context.js';
9-
import { ImportResult, RequiredProperties, UserSuppliedProperties } from '../../orchestrators/import.js';
9+
import { ImportResult, RequiredParameters, UserSuppliedParameters } from '../../orchestrators/import.js';
1010
import { SudoUtils } from '../../utils/sudo.js';
1111
import { DefaultComponent } from '../components/default-component.js';
1212
import { ProgressState, ProgressStatus } from '../components/progress/progress-display.js';
@@ -42,7 +42,7 @@ export class DefaultReporter implements Reporter {
4242
ctx.on(Event.SUB_PROCESS_FINISH, (name, additionalName) => this.onSubprocessFinishEvent(name, additionalName))
4343
}
4444

45-
async askRequiredPropertiesForImport(requiredParameters: RequiredProperties): Promise<UserSuppliedProperties> {
45+
async askRequiredParametersForImport(requiredParameters: RequiredParameters): Promise<UserSuppliedParameters> {
4646
if (requiredParameters.size === 0) {
4747
return new Map();
4848
}
@@ -51,8 +51,8 @@ export class DefaultReporter implements Reporter {
5151

5252
return new Promise((resolve) => {
5353
this.renderEmitter.once(RenderEvent.PROMPT_IMPORT_PARAMETERS_RESULT, (result: object) => {
54-
const userSuppliedProperties = this.extractUserSuppliedParametersFromResult(result);
55-
resolve(userSuppliedProperties);
54+
const userSuppliedParameters = this.extractUserSuppliedParametersFromResult(result);
55+
resolve(userSuppliedParameters);
5656
});
5757
})
5858
}

src/ui/reporters/plain-reporter.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import readline from 'node:readline';
44

55
import { Plan } from '../../entities/plan.js';
66
import { Event, ctx } from '../../events/context.js';
7-
import { ImportResult, RequiredProperties, UserSuppliedProperties } from '../../orchestrators/import.js';
7+
import { ImportResult, RequiredParameters, UserSuppliedParameters } from '../../orchestrators/import.js';
88
import { SudoUtils } from '../../utils/sudo.js';
99
import { prettyFormatPlan } from '../plan-pretty-printer.js';
1010
import { Reporter } from './reporter.js';
@@ -20,9 +20,9 @@ export class PlainReporter implements Reporter {
2020
ctx.on(Event.SUB_PROCESS_FINISH, (name) => console.log(name))
2121
}
2222

23-
async askRequiredPropertiesForImport(
24-
requiredParameters: RequiredProperties
25-
): Promise<UserSuppliedProperties> {
23+
async askRequiredParametersForImport(
24+
requiredParameters: RequiredParameters
25+
): Promise<UserSuppliedParameters> {
2626
if (requiredParameters.size > 0 || [...requiredParameters.values()].reduce(
2727
(total, arr) => arr.length + total, 0
2828
)) {
@@ -31,21 +31,21 @@ export class PlainReporter implements Reporter {
3131

3232
const parameterInput = new Map<string, Record<string, unknown>>();
3333

34-
for (const [type, requiredProperties] of requiredParameters.entries()) {
35-
if (requiredProperties.length > 0) {
34+
for (const [type, requiredParameter] of requiredParameters.entries()) {
35+
if (requiredParameter.length > 0) {
3636
console.log(`Resource: "${type}" requires additional information:`)
3737
}
3838

39-
for (const property of requiredProperties) {
39+
for (const parameter of requiredParameter) {
4040
const response = await new Promise((resolve) => {
41-
this.rl.question(`${property.propertyName} [${property.propertyType}]: `, (answer) => resolve(answer));
41+
this.rl.question(`${parameter.parameterName} [${parameter.parameterType}]: `, (answer) => resolve(answer));
4242
});
4343

4444
if (!parameterInput.has(type)) {
4545
parameterInput.set(type, {});
4646
}
4747

48-
parameterInput.get(type)![property.propertyName] = response;
48+
parameterInput.get(type)![parameter.parameterName] = response;
4949
}
5050
}
5151

src/ui/reporters/reporter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { SudoRequestData , SudoRequestResponseData } from 'codify-schemas';
22

33
import { Plan } from '../../entities/plan.js';
4-
import { ImportResult, RequiredProperties, UserSuppliedProperties } from '../../orchestrators/import.js';
4+
import { ImportResult, RequiredParameters, UserSuppliedParameters } from '../../orchestrators/import.js';
55
import { DebugReporter } from './debug-reporter.js';
66
import { DefaultReporter } from './default-reporter.js';
77
import { PlainReporter } from './plain-reporter.js';
@@ -48,7 +48,7 @@ export interface Reporter {
4848

4949
promptSudo(pluginName: string, data: SudoRequestData, secureMode: boolean): Promise<SudoRequestResponseData>;
5050

51-
askRequiredPropertiesForImport(requiredParameters: RequiredProperties): Promise<UserSuppliedProperties>;
51+
askRequiredParametersForImport(requiredParameters: RequiredParameters): Promise<UserSuppliedParameters>;
5252

5353
displayImportResult(importResult: ImportResult): void;
5454
}

test/orchestrator/import/import.test.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,17 @@ vi.mock('../../../src/plugins/plugin.js', async () => {
4444
describe('Import orchestrator tests', () => {
4545
it('Can import a resource', async () => {
4646
const reporter = new MockReporter({
47-
askRequiredPropertiesForImport: (requiredParameters) => {
47+
askRequiredParametersForImport: (requiredParameters) => {
4848
expect(requiredParameters.get('mock')?.length).to.eq(2);
4949
expect(requiredParameters.get('mock')).toEqual(expect.arrayContaining([
5050
expect.objectContaining({
51-
propertyName: 'propA',
52-
propertyType: 'string',
51+
parameterName: 'propA',
52+
parameterType: 'string',
5353
plugin: 'default'
5454
}),
5555
expect.objectContaining({
56-
propertyName: 'propB',
57-
propertyType: 'number',
56+
parameterName: 'propB',
57+
parameterType: 'number',
5858
plugin: 'default'
5959
})
6060
]))
@@ -75,6 +75,7 @@ describe('Import orchestrator tests', () => {
7575
}
7676
});
7777

78+
const askRequiredParametersSpy = vi.spyOn(reporter, 'askRequiredParametersForImport');
7879
const displayImportResultSpy = vi.spyOn(reporter, 'displayImportResult');
7980

8081
MockOs.create('mock', {
@@ -91,7 +92,8 @@ describe('Import orchestrator tests', () => {
9192
reporter,
9293
);
9394

94-
expect(displayImportResultSpy).to.be.toHaveBeenCalledOnce();
95+
expect(askRequiredParametersSpy).toHaveBeenCalledOnce();
96+
expect(displayImportResultSpy).toHaveBeenCalledOnce();
9597
});
9698

9799
afterEach(() => {

test/orchestrator/mocks/reporter.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { SpawnStatus, SudoRequestData, SudoRequestResponseData } from 'codify-schemas';
22

33
import { Plan } from '../../../src/entities/plan.js';
4-
import { ImportResult, RequiredProperties, UserSuppliedProperties } from '../../../src/orchestrators/import.js';
4+
import { ImportResult, RequiredParameters, UserSuppliedParameters } from '../../../src/orchestrators/import.js';
55
import { prettyFormatPlan } from '../../../src/ui/plan-pretty-printer.js';
66
import { Reporter } from '../../../src/ui/reporters/reporter.js';
77

@@ -10,7 +10,7 @@ export interface MockReporterConfig {
1010
validateApplyComplete?: (message: string[]) => Promise<void> | void;
1111
validateImport?: (result: ImportResult) => Promise<void> | void;
1212
promptApplyConfirmation?: () => boolean;
13-
askRequiredPropertiesForImport?: (requiredParameters: RequiredProperties) => Promise<UserSuppliedProperties> | UserSuppliedProperties;
13+
askRequiredParametersForImport?: (requiredParameters: RequiredParameters) => Promise<UserSuppliedParameters> | UserSuppliedParameters;
1414
displayImportResult?: (importResult: ImportResult) => Promise<void> | void;
1515
}
1616

@@ -42,9 +42,9 @@ export class MockReporter implements Reporter {
4242
}
4343
}
4444

45-
async askRequiredPropertiesForImport(requiredParameters: RequiredProperties): Promise<UserSuppliedProperties> {
46-
if (this.config?.askRequiredPropertiesForImport) {
47-
return this.config.askRequiredPropertiesForImport(requiredParameters);
45+
async askRequiredParametersForImport(requiredParameters: RequiredParameters): Promise<UserSuppliedParameters> {
46+
if (this.config?.askRequiredParametersForImport) {
47+
return this.config.askRequiredParametersForImport(requiredParameters);
4848
}
4949

5050
const result = new Map<string, Record<string, string>>();

0 commit comments

Comments
 (0)