Skip to content

Commit

Permalink
added support for script flags
Browse files Browse the repository at this point in the history
  • Loading branch information
ajaymathur committed Feb 5, 2018
1 parent fe6a7c0 commit e95b1f3
Show file tree
Hide file tree
Showing 10 changed files with 110 additions and 68 deletions.
40 changes: 29 additions & 11 deletions src/cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const commandMap = {
ADD: { add: true },
AUTOCLEAN: { autoclean: true },
BIN: { bin: true },
BUILD: { build: true },
CACHE: { cache: true },
CACHE_CLEAN: { clean: true },
CACHE_DIR: { dir: true },
Expand Down Expand Up @@ -100,11 +101,16 @@ const commandMap = {
WORKSPACES_UPGRADE: { upgrade: true, up: true }
};

function runCommandFromCli(args: options.Args, flags: options.Flags, pureArgs) {
let flagsArgs = flagHelpers.identifyFlags(pureArgs);
let { additionalArgs, updatedFlags } = flagHelpers.extractPossibleArgs(flags);
function runCommandFromCli(args: options.Args, flags: options.Flags) {
const {
additionalArgs,
scriptFlags,
updatedFlags
} = flagHelpers.getArgsBooleanFlagsScriptFlags(flags);

args = args.concat(additionalArgs);
flags = updatedFlags;

let [command, ...commandArgs] = args;
let [subCommand, ...subCommandArgs] = commandArgs;

Expand All @@ -114,6 +120,10 @@ function runCommandFromCli(args: options.Args, flags: options.Flags, pureArgs) {
return commands.autoclean(commands.toAutocleanOptions(commandArgs, flags));
} else if (commandMap.BIN[command]) {
return commands.bin(commands.toBinOptions(commandArgs, flags));
} else if (commandMap.BUILD[command]) {
return commands.build(
commands.toBuildOptions(commandArgs, flags, scriptFlags)
);
} else if (commandMap.CACHE[command]) {
if (commandMap.CACHE_CLEAN[subCommand]) {
return commands.cacheClean(
Expand All @@ -132,7 +142,9 @@ function runCommandFromCli(args: options.Args, flags: options.Flags, pureArgs) {
);
}
} else if (commandMap.CHECK[command]) {
return commands.check(commands.toCheckOptions(commandArgs, flags));
return commands.check(
commands.toCheckOptions(commandArgs, flags, scriptFlags)
);
} else if (commandMap.CONFIG[command]) {
if (commandMap.CONFIG_DELETE[subCommand]) {
return commands.configDelete(
Expand Down Expand Up @@ -161,11 +173,13 @@ function runCommandFromCli(args: options.Args, flags: options.Flags, pureArgs) {
} else if (commandMap.CREATE[command]) {
return commands.create(commands.toCreateOptions(commandArgs, flags));
} else if (commandMap.DOC[command]) {
return commands.doc(commands.toDocOptions(commandArgs, flags));
return commands.doc(commands.toDocOptions(commandArgs, flags, scriptFlags));
} else if (commandMap.EXEC[command]) {
return commands.exec(commands.toExecOptions(commandArgs, flags));
} else if (commandMap.FORMAT[command]) {
return commands.format(commands.toFormatOptions(commandArgs, flags));
return commands.format(
commands.toFormatOptions(commandArgs, flags, scriptFlags)
);
} else if (commandMap.GENERATE[command]) {
return commands.generate(commands.toGenerateOptions(commandArgs, flags));
} else if (commandMap.GLOBAL[command]) {
Expand Down Expand Up @@ -219,7 +233,9 @@ function runCommandFromCli(args: options.Args, flags: options.Flags, pureArgs) {
} else if (commandMap.LINK[command]) {
return commands.link(commands.toLinkOptions(commandArgs, flags));
} else if (commandMap.LINT[command]) {
return commands.lint(commands.toLintOptions(commandArgs, flags));
return commands.lint(
commands.toLintOptions(commandArgs, flags, scriptFlags)
);
} else if (commandMap.LIST[command]) {
return commands.list(commands.toListOptions(commandArgs, flags));
} else if (commandMap.LOGIN[command]) {
Expand Down Expand Up @@ -288,7 +304,7 @@ function runCommandFromCli(args: options.Args, flags: options.Flags, pureArgs) {
} else if (commandMap.REMOVE[command]) {
return commands.remove(commands.toRemoveOptions(commandArgs, flags));
} else if (commandMap.RUN[command]) {
return commands.run(commands.toRunOptions(commandArgs, flags));
return commands.run(commands.toRunOptions(commandArgs, flags, scriptFlags));
} else if (commandMap.TAG[command]) {
if (commandMap.TAG_ADD[subCommand]) {
return commands.tagAdd(commands.toTagAddOptions(subCommandArgs, flags));
Expand Down Expand Up @@ -326,7 +342,9 @@ function runCommandFromCli(args: options.Args, flags: options.Flags, pureArgs) {
);
}
} else if (commandMap.TEST[command]) {
return commands.test(commands.toTestOptions(commandArgs, flags));
return commands.test(
commands.toTestOptions(commandArgs, flags, scriptFlags)
);
} else if (commandMap.UNLINK[command]) {
return commands.unlink(commands.toUnlinkOptions(commandArgs, flags));
} else if (commandMap.UPGRADE[command]) {
Expand Down Expand Up @@ -404,7 +422,7 @@ function runCommandFromCli(args: options.Args, flags: options.Flags, pureArgs) {
);
}
} else {
return commands.run(commands.toRunOptions(args, flags));
return commands.run(commands.toRunOptions(args, flags, scriptFlags));
}

throw new BoltError(`You must specify a valid command`);
Expand All @@ -430,7 +448,7 @@ export default async function cli(argv: Array<string>, exit: boolean = false) {
processes.handleSignals();

try {
await runCommandFromCli(input, flags, argv);
await runCommandFromCli(input, flags);
} catch (err) {
if (err instanceof BoltError) {
logger.error(err.message);
Expand Down
12 changes: 8 additions & 4 deletions src/commands/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,27 @@ import { run } from './run';

export type BuildOptions = {|
cwd?: string,
args: options.Args
args: options.Args,
scriptFlags: Array<string>
|};

export function toBuildOptions(
args: options.Args,
flags: options.Flags
flags: options.Flags,
scriptFlags: Array<string>
): BuildOptions {
return {
cwd: options.string(flags.cwd, 'cwd'),
args: args
args: args,
scriptFlags
};
}

export async function build(opts: BuildOptions) {
await run({
cwd: opts.cwd,
script: 'build',
scriptArgs: opts.args
scriptArgs: opts.args,
scriptFlags: opts.scriptFlags
});
}
12 changes: 8 additions & 4 deletions src/commands/check.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,27 @@ import { run } from './run';

export type CheckOptions = {|
cwd?: string,
args: options.Args
args: options.Args,
scriptFlags: Array<string>
|};

export function toCheckOptions(
args: options.Args,
flags: options.Flags
flags: options.Flags,
scriptFlags: Array<string>
): CheckOptions {
return {
cwd: options.string(flags.cwd, 'cwd'),
args: args
args: args,
scriptFlags
};
}

export async function check(opts: CheckOptions) {
await run({
cwd: opts.cwd,
script: 'check',
scriptArgs: opts.args
scriptArgs: opts.args,
scriptFlags: opts.scriptFlags
});
}
12 changes: 8 additions & 4 deletions src/commands/doc.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,27 @@ import { run } from './run';

export type DocOptions = {|
cwd?: string,
args: options.Args
args: options.Args,
scriptFlags: Array<string>
|};

export function toDocOptions(
args: options.Args,
flags: options.Flags
flags: options.Flags,
scriptFlags: Array<string>
): DocOptions {
return {
cwd: options.string(flags.cwd, 'cwd'),
args: args
args: args,
scriptFlags
};
}

export async function doc(opts: DocOptions) {
await run({
cwd: opts.cwd,
script: 'doc',
scriptArgs: opts.args
scriptArgs: opts.args,
scriptFlags: opts.scriptFlags
});
}
12 changes: 8 additions & 4 deletions src/commands/format.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,27 @@ import { run } from './run';

export type FormatOptions = {|
cwd?: string,
args: options.Args
args: options.Args,
scriptFlags: Array<string>
|};

export function toFormatOptions(
args: options.Args,
flags: options.Flags
flags: options.Flags,
scriptFlags: Array<string>
): FormatOptions {
return {
cwd: options.string(flags.cwd, 'cwd'),
args: args
args: args,
scriptFlags
};
}

export async function format(opts: FormatOptions) {
await run({
cwd: opts.cwd,
script: 'format',
scriptArgs: opts.args
scriptArgs: opts.args,
scriptFlags: opts.scriptFlags
});
}
12 changes: 8 additions & 4 deletions src/commands/lint.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,27 @@ import { run } from './run';

export type LintOptions = {|
cwd?: string,
args: options.Args
args: options.Args,
scriptFlags: Array<string>
|};

export function toLintOptions(
args: options.Args,
flags: options.Flags
flags: options.Flags,
scriptFlags: Array<string>
): LintOptions {
return {
cwd: options.string(flags.cwd, 'cwd'),
args: args
args: args,
scriptFlags
};
}

export async function lint(opts: LintOptions) {
await run({
cwd: opts.cwd,
script: 'lint',
scriptArgs: opts.args
scriptArgs: opts.args,
scriptFlags: opts.scriptFlags
});
}
11 changes: 7 additions & 4 deletions src/commands/run.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,21 @@ import { BoltError } from '../utils/errors';
export type RunOptions = {|
cwd?: string,
script: string,
scriptArgs: options.Args
scriptArgs: options.Args,
scriptFlags: Array<string>
|};

export function toRunOptions(
args: options.Args,
flags: options.Flags
flags: options.Flags,
scriptFlags: Array<string>
): RunOptions {
let [script, ...scriptArgs] = args;
return {
cwd: options.string(flags.cwd, 'cwd'),
script,
scriptArgs
scriptArgs,
scriptFlags
};
}

Expand All @@ -30,7 +33,7 @@ export async function run(opts: RunOptions) {

if (script) {
logger.cmd(script, opts.scriptArgs);
await yarn.run(pkg, opts.script, opts.scriptArgs);
await yarn.run(pkg, opts.script, opts.scriptArgs, opts.scriptFlags);
} else {
throw new BoltError(
`Package at "${pkg.dir}" does not have a script named "${opts.script}"`
Expand Down
12 changes: 8 additions & 4 deletions src/commands/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,27 @@ import { run } from './run';

export type TestOptions = {|
cwd?: string,
args: options.Args
args: options.Args,
scriptFlags: Array<string>
|};

export function toTestOptions(
args: options.Args,
flags: options.Flags
flags: options.Flags,
scriptFlags: Array<string>
): TestOptions {
return {
cwd: options.string(flags.cwd, 'cwd'),
args: args
args: args,
scriptFlags
};
}

export async function test(opts: TestOptions) {
await run({
cwd: opts.cwd,
script: 'test',
scriptArgs: opts.args
scriptArgs: opts.args,
scriptFlags: opts.scriptFlags
});
}
Loading

0 comments on commit e95b1f3

Please sign in to comment.