Skip to content

Commit

Permalink
feat: first config types
Browse files Browse the repository at this point in the history
  • Loading branch information
Diego Ferreiro Val committed Jun 15, 2019
1 parent b21bfa3 commit f71b412
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 13 deletions.
12 changes: 7 additions & 5 deletions packages/@best/cli/src/cli/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import { getConfigs, BestCliOptions } from '@best/config';
import { preRunMessager, errorMessager } from '@best/messager';
import { runBest } from '../run_best';
import { runCompare } from '../run_compare';
import { Stream } from 'stream';
import { ProjectConfigs, ProjectConfig } from '@best/config/build/types';

export function buildArgs(maybeArgv?: string[]): BestCliOptions {
const parsedArgs = yargs(maybeArgv || process.argv.slice(2))
Expand Down Expand Up @@ -48,21 +50,21 @@ export async function run(maybeArgv?: string[], project?: string) {
}

export async function runCLI(argsCLI: BestCliOptions, projects: string[]) {
const outputStream: any = process.stdout;
let rawConfigs;
const outputStream: Stream = process.stdout;
let projectConfigs: ProjectConfigs;
let results;

try {
preRunMessager.print('Looking for Best configurations...', outputStream);
rawConfigs = await getConfigs(projects, argsCLI);
projectConfigs = await getConfigs(projects, argsCLI);
} finally {
preRunMessager.clear(outputStream);
}

const { globalConfig, configs } = rawConfigs;
const { globalConfig, configs } = projectConfigs;

if (argsCLI.clearCache) {
configs.forEach((config :any) => {
configs.forEach((config : ProjectConfig) => {
rimraf.sync(config.cacheDirectory);
process.stdout.write(`Cleared ${config.cacheDirectory}\n`);
});
Expand Down
10 changes: 5 additions & 5 deletions packages/@best/config/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { resolveConfigPath, readConfigAndSetRootDir, ensureNoDuplicateConfigs } from './utils/resolve-config';
import { getGitInfo, GitInfo } from './utils/git';
import { normalizeConfig, normalizeRegexPattern, normalizeRootDirPattern } from './utils/normalize';
import { BestCliOptions, DefaultProjectOptions, GlobalConfig, ProjectConfig, FrozenProjectConfig, FrozenGlobalConfig } from './types';
import { BestCliOptions, DefaultProjectOptions, FrozenProjectConfig, FrozenGlobalConfig, ProjectConfigs } from './types';
export { BestCliOptions };

function generateProjectConfigs(options: DefaultProjectOptions, isRoot: boolean, gitInfo?: GitInfo): { projectConfig: FrozenProjectConfig, globalConfig: FrozenGlobalConfig | undefined } {
Expand All @@ -20,7 +20,7 @@ function generateProjectConfigs(options: DefaultProjectOptions, isRoot: boolean,
rootProjectName: options.projectName,
nonFlagArgs: options.nonFlagArgs,
gitInfo: gitInfo,
// outputMetricPattern: normalizeRegexPattern(options.outputMetricNames),
outputMetricPattern: normalizeRegexPattern(options.outputMetricNames),
// outputTotals: options.outputTotals,
// outputHistograms: options.outputHistograms,
// outputHistogramPattern: normalizeRegexPattern(options.outputHistogramNames),
Expand All @@ -31,7 +31,7 @@ function generateProjectConfigs(options: DefaultProjectOptions, isRoot: boolean,
});
}

const projectConfig: ProjectConfig = Object.freeze({
const projectConfig: FrozenProjectConfig = Object.freeze({
cache: options.cache,
cacheDirectory: options.cacheDirectory,
useHttp: options.useHttp,
Expand Down Expand Up @@ -60,7 +60,7 @@ function generateProjectConfigs(options: DefaultProjectOptions, isRoot: boolean,
return { globalConfig, projectConfig };
}

export async function readConfig(cliOptions: BestCliOptions, packageRoot: string, parentConfigPath?: string): Promise<{ configPath: string, globalConfig?: GlobalConfig, projectConfig: ProjectConfig }> {
export async function readConfig(cliOptions: BestCliOptions, packageRoot: string, parentConfigPath?: string): Promise<{ configPath: string, globalConfig?: FrozenGlobalConfig, projectConfig: FrozenProjectConfig }> {
const configPath = resolveConfigPath(cliOptions.config ? cliOptions.config : packageRoot, process.cwd());
const rawOptions = readConfigAndSetRootDir(configPath);
const options = normalizeConfig(rawOptions, cliOptions);
Expand All @@ -80,7 +80,7 @@ export async function readConfig(cliOptions: BestCliOptions, packageRoot: string
return { configPath, globalConfig, projectConfig };
}

export async function getConfigs(projectsFromCLIArgs: string[], cliOptions: BestCliOptions): Promise<{ globalConfig: FrozenGlobalConfig, configs: FrozenProjectConfig[] }> {
export async function getConfigs(projectsFromCLIArgs: string[], cliOptions: BestCliOptions): Promise<ProjectConfigs> {
let globalConfig: FrozenGlobalConfig | undefined;
let configs: FrozenProjectConfig[] = [];
let projects: string[] = [];
Expand Down
8 changes: 7 additions & 1 deletion packages/@best/config/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,14 @@ export interface GlobalConfig {
}

export interface ProjectConfig {

cacheDirectory: string;
}

export type FrozenGlobalConfig = Readonly<GlobalConfig>;
export type FrozenProjectConfig = Readonly<ProjectConfig>;


export interface ProjectConfigs {
globalConfig: FrozenGlobalConfig,
configs: FrozenProjectConfig[]
}
4 changes: 2 additions & 2 deletions packages/@best/config/src/utils/normalize.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,11 @@ export function normalizeRootDirPattern(str: string, rootDir: string) {
return str.replace(/<rootDir>/g, rootDir);
}

export function normalizeRegexPattern(names: any) {
export function normalizeRegexPattern(names: string | string[] | RegExp) {
if (typeof names === 'string') {
names = names.split(',');
}
if (names instanceof Array) {
if (Array.isArray(names)) {
names = names.map(name => name.replace(/\*/g, '.*'));
names = new RegExp(`^(${names.join('|')})$`);
}
Expand Down

0 comments on commit f71b412

Please sign in to comment.