Skip to content

Commit

Permalink
fix: revert api to loadModuleConfig
Browse files Browse the repository at this point in the history
  • Loading branch information
gxkl committed Apr 18, 2024
1 parent c959bdd commit 643b5e7
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 101 deletions.
93 changes: 18 additions & 75 deletions core/common-util/src/ModuleConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,6 @@ export class ModuleConfigUtil {
ModuleConfigUtil.configNames = configNames;
}

public static moduleYamlPath(modulePath: string, env?: string): string {
if (env) {
return path.join(modulePath, `module.${env}.yml`);
}
return path.join(modulePath, 'module.yml');
}

public static moduleJsonPath(modulePath: string, env?: string): string {
if (env) {
return path.join(modulePath, `module.${env}.json`);
}
return path.join(modulePath, 'module.json');
}

public static readModuleReference(baseDir: string, options?: ReadModuleReferenceOptions): readonly ModuleReference[] {
// 1. module.json exits use module.json as module reference
// 1. module.json not exits scan baseDir get package.json to find modules
Expand Down Expand Up @@ -211,12 +197,18 @@ export class ModuleConfigUtil {
return ModuleConfigUtil.getModuleName(pkg);
}

public static async load(moduleDir: string, baseDir?: string): Promise<ModuleConfig> {
public static async loadModuleConfig(moduleDir: string, baseDir?: string, env?: string): Promise<ModuleConfig> {
const modulePath = ModuleConfigUtil.resolveModuleDir(moduleDir, baseDir);
assert(ModuleConfigUtil.configNames, 'should setConfigNames before load module config');
let configNames: string[];
if (env) {
configNames = [ 'module', `module.${env}` ];
} else {
// assert(ModuleConfigUtil.configNames, 'should setConfigNames before load module config');
configNames = ModuleConfigUtil.configNames || [ 'module' ];
}

const target: ModuleConfig = {};
for (const configName of ModuleConfigUtil.configNames) {
for (const configName of configNames) {
let config = await ModuleConfigUtil.#loadOne(modulePath, configName);
// both module.yml and module.default.yml are ok for default config
if (configName === 'module.default' && !config) {
Expand All @@ -230,24 +222,6 @@ export class ModuleConfigUtil {
return target;
}

// @deprecated use load instead
public static async loadModuleConfig(moduleDir: string, baseDir?: string, env?: string): Promise<ModuleConfig | undefined> {
moduleDir = ModuleConfigUtil.resolveModuleDir(moduleDir, baseDir);
let defaultConfig = await ModuleConfigUtil.loadModuleYaml(moduleDir);
if (!defaultConfig) {
defaultConfig = await ModuleConfigUtil.loadModuleJson(moduleDir);
}
let envConfig: ModuleConfig | undefined;
if (env) {
envConfig = await ModuleConfigUtil.loadModuleYaml(moduleDir, env);
if (!envConfig) {
envConfig = await ModuleConfigUtil.loadModuleJson(moduleDir, env);
}
}
extend(true, defaultConfig, envConfig);
return defaultConfig;
}

static async #loadOne(moduleDir: string, configName: string): Promise<ModuleConfig | undefined> {
const yamlConfigPath = path.join(moduleDir, `${configName}.yml`);
let config = await ModuleConfigUtil.#loadYaml(yamlConfigPath);
Expand All @@ -258,11 +232,6 @@ export class ModuleConfigUtil {
return config;
}

private static async loadModuleJson(moduleDir: string, env?: string): Promise<ModuleConfig | undefined> {
const moduleJsonPath = ModuleConfigUtil.moduleJsonPath(moduleDir, env);
return await ModuleConfigUtil.#loadJson(moduleJsonPath);
}

static async #loadJson(moduleJsonPath: string): Promise<ModuleConfig | undefined> {
const moduleJsonPathExists = await FSUtil.fileExists(moduleJsonPath);
if (!moduleJsonPathExists) {
Expand All @@ -273,11 +242,6 @@ export class ModuleConfigUtil {
return moduleJson.config;
}

private static async loadModuleYaml(moduleDir: string, env?: string): Promise<ModuleConfig | undefined> {
const moduleYamlPath = ModuleConfigUtil.moduleYamlPath(moduleDir, env);
return await ModuleConfigUtil.#loadYaml(moduleYamlPath);
}

static async #loadYaml(moduleYamlPath: string): Promise<ModuleConfig | undefined> {
const moduleYamlPathExists = await FSUtil.fileExists(moduleYamlPath);
if (!moduleYamlPathExists) {
Expand All @@ -287,12 +251,18 @@ export class ModuleConfigUtil {
return yaml.safeLoad(moduleYamlContent) as ModuleConfigUtil;
}

public static loadSync(moduleDir: string, baseDir?: string): ModuleConfig {
public static loadModuleConfigSync(moduleDir: string, baseDir?: string, env?: string): ModuleConfig {
const modulePath = ModuleConfigUtil.resolveModuleDir(moduleDir, baseDir);
assert(ModuleConfigUtil.configNames, 'should setConfigNames before load module config');
let configNames: string[];
if (env) {
configNames = [ 'module', `module.${env}` ];
} else {
// assert(ModuleConfigUtil.configNames, 'should setConfigNames before load module config');
configNames = ModuleConfigUtil.configNames || [ 'module' ];
}

const target: ModuleConfig = {};
for (const configName of ModuleConfigUtil.configNames) {
for (const configName of configNames) {
let config = ModuleConfigUtil.#loadOneSync(modulePath, configName);
// both module.yml and module.default.yml are ok for default config
if (configName === 'module.default' && !config) {
Expand All @@ -306,23 +276,6 @@ export class ModuleConfigUtil {
return target;
}

// @deprecated use loadSync instead
public static loadModuleConfigSync(moduleDir: string, baseDir?: string, env?: string): ModuleConfig | undefined {
moduleDir = ModuleConfigUtil.resolveModuleDir(moduleDir, baseDir);
let defaultConfig = ModuleConfigUtil.loadModuleYamlSync(moduleDir);
if (!defaultConfig) {
defaultConfig = ModuleConfigUtil.loadModuleJsonSync(moduleDir);
}
let envConfig: ModuleConfig | undefined;
if (env) {
envConfig = ModuleConfigUtil.loadModuleYamlSync(moduleDir, env);
if (!envConfig) {
envConfig = ModuleConfigUtil.loadModuleJsonSync(moduleDir, env);
}
}
return extend(true, defaultConfig, envConfig);
}

static #loadOneSync(moduleDir: string, configName: string): ModuleConfig | undefined {
const yamlConfigPath = path.join(moduleDir, `${configName}.yml`);
let config = ModuleConfigUtil.#loadYamlSync(yamlConfigPath);
Expand All @@ -333,11 +286,6 @@ export class ModuleConfigUtil {
return config;
}

private static loadModuleJsonSync(moduleDir: string, env?: string): ModuleConfig | undefined {
const moduleJsonPath = ModuleConfigUtil.moduleJsonPath(moduleDir, env);
return ModuleConfigUtil.#loadJsonSync(moduleJsonPath);
}

static #loadJsonSync(moduleJsonPath: string): ModuleConfig | undefined {
const moduleJsonPathExists = fs.existsSync(moduleJsonPath);
if (!moduleJsonPathExists) {
Expand All @@ -348,11 +296,6 @@ export class ModuleConfigUtil {
return moduleJson.config;
}

private static loadModuleYamlSync(moduleDir: string, env?: string): ModuleConfig | undefined {
const moduleYamlPath = ModuleConfigUtil.moduleYamlPath(moduleDir, env);
return ModuleConfigUtil.#loadYamlSync(moduleYamlPath);
}

static #loadYamlSync(moduleYamlPath: string): ModuleConfig | undefined {
const moduleYamlPathExists = fs.existsSync(moduleYamlPath);
if (!moduleYamlPathExists) {
Expand Down
46 changes: 22 additions & 24 deletions core/common-util/test/ModuleConfig.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import { ModuleConfigUtil } from '../src/ModuleConfig';

describe('test/ModuleConfig.test.ts', () => {
describe('load yaml config', () => {
afterEach(() => {
ModuleConfigUtil.setConfigNames(undefined);
});

it('should work', () => {
const config = ModuleConfigUtil.loadModuleConfigSync(path.join(__dirname, './fixtures/modules/foo-yaml'));
assert.deepStrictEqual(config, { mysql: { host: '127.0.0.1' } });
Expand All @@ -13,6 +17,24 @@ describe('test/ModuleConfig.test.ts', () => {
const config = ModuleConfigUtil.loadModuleConfigSync(path.join(__dirname, './fixtures/modules/dev-module-config'), undefined, 'dev');
assert.deepStrictEqual(config, { mysql: { host: '127.0.0.1', port: 11306 } });
});

it('should load with configNames', async () => {
ModuleConfigUtil.setConfigNames([ 'module.default', 'module.dev' ]);
const config = await ModuleConfigUtil.loadModuleConfig(path.join(__dirname, './fixtures/modules/dev-module-config'));
const configSync = ModuleConfigUtil.loadModuleConfigSync(path.join(__dirname, './fixtures/modules/dev-module-config'));
assert.deepStrictEqual(config, { mysql: { host: '127.0.0.1', port: 11306 } });
assert.deepStrictEqual(configSync, { mysql: { host: '127.0.0.1', port: 11306 } });
});

// it('should throw error without initialization', async () => {
// await assert.rejects(async () => {
// await ModuleConfigUtil.loadModuleConfig(path.join(__dirname, './fixtures/modules/dev-module-config'));
// }, /should setConfigNames before load module config/);
//
// assert.throws(() => {
// ModuleConfigUtil.loadModuleConfigSync(path.join(__dirname, './fixtures/modules/dev-module-config'));
// }, /should setConfigNames before load module config/);
// });
});

describe('load module reference', () => {
Expand Down Expand Up @@ -117,28 +139,4 @@ describe('test/ModuleConfig.test.ts', () => {
}]);
});
});

describe('load/loadSync', () => {
beforeEach(() => {
ModuleConfigUtil.setConfigNames(undefined);
});

it('should work', async () => {
ModuleConfigUtil.setConfigNames([ 'module.default', 'module.dev' ]);
const config = await ModuleConfigUtil.load(path.join(__dirname, './fixtures/modules/dev-module-config'));
const configSync = ModuleConfigUtil.loadSync(path.join(__dirname, './fixtures/modules/dev-module-config'));
assert.deepStrictEqual(config, { mysql: { host: '127.0.0.1', port: 11306 } });
assert.deepStrictEqual(configSync, { mysql: { host: '127.0.0.1', port: 11306 } });
});

it('should throw error without initialization', async () => {
await assert.rejects(async () => {
await ModuleConfigUtil.load(path.join(__dirname, './fixtures/modules/dev-module-config'));
}, /should setConfigNames before load module config/);

assert.throws(() => {
ModuleConfigUtil.loadSync(path.join(__dirname, './fixtures/modules/dev-module-config'));
}, /should setConfigNames before load module config/);
});
});
});
2 changes: 1 addition & 1 deletion plugin/config/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export default class App implements IBoot {
this.app.moduleConfigs[moduleName] = {
name: moduleName,
reference: absoluteRef,
config: ModuleConfigUtil.loadSync(absoluteRef.path),
config: ModuleConfigUtil.loadModuleConfigSync(absoluteRef.path),
};
}
}
Expand Down
2 changes: 1 addition & 1 deletion standalone/standalone/src/Runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ export class Runner {
this.moduleConfigs[moduleName] = {
name: moduleName,
reference: absoluteRef,
config: ModuleConfigUtil.loadSync(absoluteRef.path),
config: ModuleConfigUtil.loadModuleConfigSync(absoluteRef.path),
};
}
for (const moduleConfig of Object.values(this.moduleConfigs)) {
Expand Down

0 comments on commit 643b5e7

Please sign in to comment.