Skip to content
This repository was archived by the owner on May 1, 2020. It is now read-only.

Commit

Permalink
refactor(tasks): generate context before running any tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
danbucholtz committed Dec 10, 2016
1 parent 3532bdc commit 8ce3a05
Show file tree
Hide file tree
Showing 16 changed files with 46 additions and 55 deletions.
8 changes: 3 additions & 5 deletions src/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { bundle, bundleUpdate } from './bundle';
import { clean } from './clean';
import { copy } from './copy';
import { emit, EventType } from './util/events';
import { generateContext } from './util/config';
import { lint, lintUpdate } from './lint';
import { Logger } from './logger/logger';
import { minifyCss, minifyJs } from './minify';
Expand All @@ -17,7 +16,6 @@ import { transpile, transpileUpdate, transpileDiagnosticsOnly } from './transpil


export function build(context: BuildContext) {
context = generateContext(context);
setContext(context);
const logger = new Logger(`build ${(context.isProd ? 'prod' : 'dev')}`);

Expand All @@ -33,7 +31,7 @@ export function build(context: BuildContext) {
}

function handleDeprecations(error: Error) {
if (error && error.message && error.message.indexOf('ENOENT') >= 0 && error.message.indexOf(process.env.IONIC_APP_ENTRY_POINT_PATH)) {
if (error && error.message && error.message.indexOf('ENOENT') >= 0 && error.message.indexOf(process.env.IONIC_APP_ENTRY_POINT)) {
const error = new BuildError(`"main.dev.ts" and "main.prod.ts" have been deprecated. Please create a new file "main.ts" containing the content of "main.dev.ts", and then delete the deprecated files.
For more information, please see the default Ionic project main.ts file here:
https://github.com/driftyco/ionic2-app-base/tree/master/src/app/main.ts`);
Expand All @@ -55,7 +53,7 @@ function buildWorker(context: BuildContext) {
function validateRequiredFilesExist() {
// for now, just do the entry point
// eventually this could be Promise.all and load a bunch of stuff
return readFileAsync(process.env.IONIC_APP_ENTRY_POINT_PATH);
return readFileAsync(process.env.IONIC_APP_ENTRY_POINT);
}

function buildProject(context: BuildContext) {
Expand All @@ -75,7 +73,7 @@ function buildProject(context: BuildContext) {
const minPromise = (context.runMinifyJs) ? minifyJs(context) : Promise.resolve();
const sassPromise = sass(context)
.then(() => {
return (context.runMinifyCss) ? minifyCss(context) : Promise.resolve()
return (context.runMinifyCss) ? minifyCss(context) : Promise.resolve();
});

return Promise.all([
Expand Down
6 changes: 2 additions & 4 deletions src/bundle.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import { BuildContext, ChangedFile } from './util/interfaces';
import { BuildError, IgnorableError } from './util/errors';
import { generateContext, BUNDLER_ROLLUP } from './util/config';
import { BUNDLER_ROLLUP } from './util/config';
import { rollup, rollupUpdate, getRollupConfig, getOutputDest as rollupGetOutputDest } from './rollup';
import { webpack, webpackUpdate, getWebpackConfig, getOutputDest as webpackGetOutputDest } from './webpack';


export function bundle(context?: BuildContext, configFile?: string) {
context = generateContext(context);

export function bundle(context: BuildContext, configFile?: string) {
return bundleWorker(context, configFile)
.catch((err: Error) => {
throw new BuildError(err);
Expand Down
5 changes: 1 addition & 4 deletions src/clean.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
import { BuildContext } from './util/interfaces';
import { BuildError } from './util/errors';
import { emptyDirSync } from 'fs-extra';
import { generateContext } from './util/config';
import { Logger } from './logger/logger';


export function clean(context?: BuildContext) {
context = generateContext(context);

export function clean(context: BuildContext) {
const logger = new Logger('clean');

try {
Expand Down
5 changes: 2 additions & 3 deletions src/cleancss.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import { join } from 'path';
import { BuildContext, TaskInfo } from './util/interfaces';
import { BuildError } from './util/errors';
import { fillConfigDefaults, generateContext, getUserConfigFile } from './util/config';
import { fillConfigDefaults, getUserConfigFile } from './util/config';
import { Logger } from './logger/logger';
import { readFileAsync, writeFileAsync } from './util/helpers';
import { runWorker } from './worker-client';
import * as cleanCss from 'clean-css';


export function cleancss(context?: BuildContext, configFile?: string) {
context = generateContext(context);
export function cleancss(context: BuildContext, configFile?: string) {
configFile = getUserConfigFile(context, taskInfo, configFile);

const logger = new Logger('cleancss');
Expand Down
26 changes: 19 additions & 7 deletions src/closure.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { execSync } from 'child_process';
import { BuildContext, TaskInfo } from './util/interfaces';
import { generateContext, getUserConfigFile } from './util/config';
import { fillConfigDefaults, getUserConfigFile } from './util/config';
import { Logger } from './logger/logger';
import { runWorker } from './worker-client';


export function closure(context?: BuildContext, configFile?: string) {
context = generateContext(context);
export function closure(context: BuildContext, configFile?: string) {
configFile = getUserConfigFile(context, taskInfo, configFile);

const logger = new Logger('closure');
Expand All @@ -19,7 +18,6 @@ export function closure(context?: BuildContext, configFile?: string) {
});
}


export function closureWorker(context: BuildContext, configFile: string): Promise<any> {
return new Promise((resolve, reject) => {
Logger.warn('Closer Compiler unsupported at this time.');
Expand All @@ -28,11 +26,24 @@ export function closureWorker(context: BuildContext, configFile: string): Promis
}


export function isClosureSupported(context: BuildContext) {
// TODO: check for Java and compiler.jar executable
export function isClosureSupported(context: BuildContext): boolean{
/*const config = getClosureConfig(context, '');
try {
execSync(`${config.pathToJavaExecutable} --version`);
return true;
} catch (ex) {
Logger.debug('[Closure] isClosureSupported: Failed to execute java command');
return false;
}
*/
return false;
}

function getClosureConfig(context: BuildContext, configFile: string): ClosureConfig {
configFile = getUserConfigFile(context, taskInfo, configFile);

return fillConfigDefaults(configFile, taskInfo.defaultConfigFile);
}

const taskInfo: TaskInfo = {
fullArg: '--closure',
Expand All @@ -46,4 +57,5 @@ const taskInfo: TaskInfo = {
export interface ClosureConfig {
// https://developers.google.com/closure/compiler/docs/gettingstarted_app
pathToJavaExecutable: string;
pathToClosureJar: string;
}
4 changes: 3 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export * from './util/config';
export * from './util/helpers';
export * from './util/interfaces';

import { generateContext } from './util/config';
import { getAppScriptsVersion } from './util/helpers';
import { Logger } from './logger/logger';

Expand All @@ -23,7 +24,8 @@ export function run(task: string) {
} catch (e) {}

try {
require(`../dist/${task}`)[task]().catch((err: any) => {
const context = generateContext(null);
require(`../dist/${task}`)[task](context).catch((err: any) => {
errorLog(task, err);
});
} catch (e) {
Expand Down
6 changes: 2 additions & 4 deletions src/lint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { access } from 'fs';
import { BuildContext, ChangedFile, TaskInfo } from './util/interfaces';
import { BuildError } from './util/errors';
import { createProgram, findConfiguration, getFileNames } from 'tslint';
import { generateContext, getUserConfigFile } from './util/config';
import { getUserConfigFile } from './util/config';
import { join } from 'path';
import { Logger } from './logger/logger';
import { printDiagnostics, DiagnosticsType } from './logger/logger-diagnostics';
Expand All @@ -13,9 +13,7 @@ import * as fs from 'fs';
import * as ts from 'typescript';


export function lint(context?: BuildContext, configFile?: string) {
context = generateContext(context);

export function lint(context: BuildContext, configFile?: string) {
return runWorker('lint', 'lintWorker', context, configFile)
.catch(err => {
throw new BuildError(err);
Expand Down
4 changes: 1 addition & 3 deletions src/minify.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import { BuildContext } from './util/interfaces';
import { cleancss } from './cleancss';
import { closure, isClosureSupported } from './closure';
import { generateContext } from './util/config';
import { Logger } from './logger/logger';
import { uglifyjs } from './uglifyjs';


export function minify(context?: BuildContext) {
context = generateContext(context);
export function minify(context: BuildContext) {

const logger = new Logger('minify');

Expand Down
7 changes: 3 additions & 4 deletions src/ngc.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { Logger } from './logger/logger';
import { generateContext, getUserConfigFile} from './util/config';
import { getUserConfigFile} from './util/config';
import { BuildContext, TaskInfo } from './util/interfaces';
import { AotCompiler } from './aot/aot-compiler';

export function ngc(context?: BuildContext, configFile?: string) {
context = generateContext(context);
export function ngc(context: BuildContext, configFile?: string) {
configFile = getUserConfigFile(context, taskInfo, configFile);

const logger = new Logger('ngc');
Expand All @@ -19,7 +18,7 @@ export function ngc(context?: BuildContext, configFile?: string) {
}

export function ngcWorker(context: BuildContext, configFile: string) {
const compiler = new AotCompiler(context, { entryPoint: process.env.IONIC_APP_ENTRY_POINT_PATH, rootDir: context.rootDir, tsConfigPath: process.env.IONIC_TS_CONFIG_PATH });
const compiler = new AotCompiler(context, { entryPoint: process.env.IONIC_APP_ENTRY_POINT, rootDir: context.rootDir, tsConfigPath: process.env.IONIC_TS_CONFIG });
return compiler.compile();
}

Expand Down
3 changes: 1 addition & 2 deletions src/rollup.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import { BuildContext, BuildState, ChangedFile, TaskInfo } from './util/interfaces';
import { BuildError } from './util/errors';
import { fillConfigDefaults, generateContext, getUserConfigFile, replacePathVars } from './util/config';
import { fillConfigDefaults, getUserConfigFile, replacePathVars } from './util/config';
import { ionicRollupResolverPlugin, PLUGIN_NAME } from './rollup/ionic-rollup-resolver-plugin';
import { join, isAbsolute, normalize, sep } from 'path';
import { Logger } from './logger/logger';
import * as rollupBundler from 'rollup';


export function rollup(context: BuildContext, configFile: string) {
context = generateContext(context);
configFile = getUserConfigFile(context, taskInfo, configFile);

const logger = new Logger('rollup');
Expand Down
5 changes: 2 additions & 3 deletions src/sass.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { BuildContext, BuildState, ChangedFile, TaskInfo } from './util/interfac
import { BuildError } from './util/errors';
import { bundle } from './bundle';
import { ensureDirSync, readdirSync, writeFile } from 'fs-extra';
import { fillConfigDefaults, generateContext, getUserConfigFile, replacePathVars } from './util/config';
import { fillConfigDefaults, getUserConfigFile, replacePathVars } from './util/config';
import { Logger } from './logger/logger';
import { runSassDiagnostics } from './logger/logger-sass';
import { printDiagnostics, clearDiagnostics, DiagnosticsType } from './logger/logger-diagnostics';
Expand All @@ -12,8 +12,7 @@ import * as postcss from 'postcss';
import * as autoprefixer from 'autoprefixer';


export function sass(context?: BuildContext, configFile?: string) {
context = generateContext(context);
export function sass(context: BuildContext, configFile?: string) {
configFile = getUserConfigFile(context, taskInfo, configFile);

const logger = new Logger('sass');
Expand Down
5 changes: 2 additions & 3 deletions src/serve.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { BuildContext } from './util/interfaces';
import { generateContext, getConfigValue, hasConfigValue } from './util/config';
import { getConfigValue, hasConfigValue } from './util/config';
import { BuildError } from './util/errors';
import { setContext } from './util/helpers';
import { Logger } from './logger/logger';
Expand All @@ -15,8 +15,7 @@ const LIVE_RELOAD_DEFAULT_PORT = 35729;
const DEV_SERVER_DEFAULT_PORT = 8100;
const DEV_SERVER_DEFAULT_HOST = '0.0.0.0';

export function serve(context?: BuildContext) {
context = generateContext(context);
export function serve(context: BuildContext) {
setContext(context);
const config: ServeConfig = {
httpPort: getHttpServerPort(context),
Expand Down
4 changes: 1 addition & 3 deletions src/transpile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { buildJsSourceMaps } from './bundle';
import { changeExtension } from './util/helpers';
import { EventEmitter } from 'events';
import { fork, ChildProcess } from 'child_process';
import { generateContext } from './util/config';
import { inlineTemplate } from './template';
import { Logger } from './logger/logger';
import { readFileSync } from 'fs';
Expand All @@ -15,8 +14,7 @@ import * as path from 'path';
import * as ts from 'typescript';


export function transpile(context?: BuildContext) {
context = generateContext(context);
export function transpile(context: BuildContext) {

const workerConfig: TranspileWorkerConfig = {
configFile: getTsConfigPath(context),
Expand Down
5 changes: 2 additions & 3 deletions src/uglifyjs.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import { BuildContext, TaskInfo } from './util/interfaces';
import { BuildError } from './util/errors';
import { fillConfigDefaults, generateContext, getUserConfigFile } from './util/config';
import { fillConfigDefaults, getUserConfigFile } from './util/config';
import { join } from 'path';
import { Logger } from './logger/logger';
import { runWorker } from './worker-client';
import { writeFileAsync } from './util/helpers';
import * as uglify from 'uglify-js';


export function uglifyjs(context?: BuildContext, configFile?: string) {
context = generateContext(context);
export function uglifyjs(context: BuildContext, configFile?: string) {
configFile = getUserConfigFile(context, taskInfo, configFile);

const logger = new Logger('uglifyjs');
Expand Down
5 changes: 1 addition & 4 deletions src/watch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { copyUpdate as copyUpdateHandler} from './copy';
import { BuildContext, BuildState, ChangedFile, TaskInfo } from './util/interfaces';
import { BuildError } from './util/errors';
import { canRunTranspileUpdate } from './transpile';
import { fillConfigDefaults, generateContext, getUserConfigFile, replacePathVars } from './util/config';
import { fillConfigDefaults, getUserConfigFile, replacePathVars } from './util/config';
import { extname, join, normalize, resolve as pathResolve } from 'path';
import { Logger } from './logger/logger';
import * as chokidar from 'chokidar';
Expand All @@ -12,9 +12,6 @@ import * as chokidar from 'chokidar';
// https://github.com/paulmillr/chokidar

export function watch(context?: BuildContext, configFile?: string) {

context = generateContext(context);

configFile = getUserConfigFile(context, taskInfo, configFile);

// Override all build options if watch is ran.
Expand Down
3 changes: 1 addition & 2 deletions src/webpack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { BuildContext, BuildState, ChangedFile, TaskInfo } from './util/interfac
import { BuildError, IgnorableError } from './util/errors';
import { emit, EventType } from './util/events';
import { join } from 'path';
import { fillConfigDefaults, generateContext, getUserConfigFile, replacePathVars } from './util/config';
import { fillConfigDefaults, getUserConfigFile, replacePathVars } from './util/config';
import { Logger } from './logger/logger';
import * as webpackApi from 'webpack';

Expand All @@ -24,7 +24,6 @@ const INCREMENTAL_BUILD_SUCCESS = 'incremental_build_success';
let pendingPromises: Promise<void>[] = [];

export function webpack(context: BuildContext, configFile: string) {
context = generateContext(context);
configFile = getUserConfigFile(context, taskInfo, configFile);

const logger = new Logger('webpack');
Expand Down

0 comments on commit 8ce3a05

Please sign in to comment.