From 4003b6f62be4b3390f4ec8f2f388602d08cc4a40 Mon Sep 17 00:00:00 2001 From: Josh Thomas Date: Thu, 18 May 2017 11:39:58 -0500 Subject: [PATCH] chore(): ensure scripts match v4 --- scripts/gulp/gulpfile.ts | 1 + scripts/gulp/tasks/core.ts | 53 +++++++++++++++++++++++++++++++++ scripts/gulp/tasks/demos.dev.ts | 6 ++-- scripts/gulp/tasks/e2e.dev.ts | 8 +++-- scripts/gulp/tasks/e2e.prod.ts | 2 +- scripts/gulp/tasks/release.ts | 1 + scripts/gulp/util.ts | 8 ++++- 7 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 scripts/gulp/tasks/core.ts diff --git a/scripts/gulp/gulpfile.ts b/scripts/gulp/gulpfile.ts index 4c9fd9142b..0b22699cbf 100644 --- a/scripts/gulp/gulpfile.ts +++ b/scripts/gulp/gulpfile.ts @@ -1,5 +1,6 @@ import './tasks/build'; import './tasks/clean'; +import './tasks/core'; import './tasks/default'; import './tasks/demos'; import './tasks/demos.dev'; diff --git a/scripts/gulp/tasks/core.ts b/scripts/gulp/tasks/core.ts new file mode 100644 index 0000000000..75dca6aecc --- /dev/null +++ b/scripts/gulp/tasks/core.ts @@ -0,0 +1,53 @@ +import { PROJECT_ROOT } from '../constants'; +import { task } from 'gulp'; +import { accessSync } from 'fs'; +import { join } from 'path'; + + +task('core', (done) => { + buildAngularBinding(false, done); +}); + +task('core.watch', (done) => { + buildAngularBinding(true, done); +}); + + +function buildAngularBinding(isDevAndWatch: boolean, done: Function) { + let hasRunDone = false; + const cwd = join(PROJECT_ROOT, '../ionic-core'); + const args = [ + 'run', + 'build.angular' + ]; + + if (isDevAndWatch) { + args.push('--', 'dev', 'watch'); + } + + try { + accessSync(cwd); + } catch (e) { + console.log('core directory not found:', cwd); + process.exit(1); + } + + const spawn = require('child_process').spawn; + const ls = spawn('npm', args, { cwd: cwd }); + + ls.stdout.on('data', (data) => { + console.log(data.toString().trim()); + if (!hasRunDone && data.toString().trim().indexOf('compile, done') > -1) { + hasRunDone = true; + done(); + } + }); + + ls.stderr.on('data', (data) => { + console.log(data.toString().trim()); + }); + + ls.on('close', (code) => { + done(); + }); +} diff --git a/scripts/gulp/tasks/demos.dev.ts b/scripts/gulp/tasks/demos.dev.ts index f43f787223..f27c600817 100644 --- a/scripts/gulp/tasks/demos.dev.ts +++ b/scripts/gulp/tasks/demos.dev.ts @@ -19,8 +19,10 @@ task('demos.watch', ['demos.prepare'], (done: Function) => { }); function serveDemo(folderName: any) { - + const testOrDemoName = folderName; const ionicAngularDir = join(PROJECT_ROOT, 'src'); + const coreCompilerFilePath = join(PROJECT_ROOT, 'dist', 'ionic-angular', 'compiler'); + const coreDir = join(PROJECT_ROOT, 'dist', 'ionic-angular'); const srcTestRoot = join(DEMOS_ROOT, 'src', folderName); const distDemoRoot = join(DIST_DEMOS_ROOT, folderName); const includeGlob = [ join(ionicAngularDir, '**', '*.ts'), @@ -40,5 +42,5 @@ function serveDemo(folderName: any) { const appNgModulePath = join(srcTestRoot, 'app', 'app.module.ts'); const distDir = join(distDemoRoot, 'www'); - return runAppScriptsServe(folderName, appEntryPoint, appNgModulePath, ionicAngularDir, distDir, pathToWriteFile, ionicAngularDir, sassConfigPath, copyConfigPath, watchConfigPath); + return runAppScriptsServe(testOrDemoName, appEntryPoint, appNgModulePath, ionicAngularDir, distDir, pathToWriteFile, ionicAngularDir, coreCompilerFilePath, coreDir, sassConfigPath, copyConfigPath, watchConfigPath); } diff --git a/scripts/gulp/tasks/e2e.dev.ts b/scripts/gulp/tasks/e2e.dev.ts index 63e1f86638..da007292dd 100644 --- a/scripts/gulp/tasks/e2e.dev.ts +++ b/scripts/gulp/tasks/e2e.dev.ts @@ -6,7 +6,7 @@ import { task } from 'gulp'; import { ES_2015, PROJECT_ROOT } from '../constants'; import { createTempTsConfig, getFolderInfo, runAppScriptsServe } from '../util'; -task('e2e.watch', ['e2e.prepare'], (done: Function) => { +task('e2e.watch', ['e2e.prepare', 'core.watch'], (done: Function) => { const folderInfo = getFolderInfo(); if (!folderInfo || !folderInfo.componentName || !folderInfo.componentTest) { done(new Error(`Usage: gulp e2e.watch --folder nav/basic`)); @@ -21,8 +21,10 @@ task('e2e.watch', ['e2e.prepare'], (done: Function) => { }); function serveTest(folderInfo: any) { - + const testOrDemoName = folderInfo.componentName + '/' + folderInfo.componentTest; const ionicAngularDir = join(PROJECT_ROOT, 'src'); + const coreCompilerFilePath = join(PROJECT_ROOT, '..', 'ionic-core', 'dist', 'compiler'); + const coreDir = join(PROJECT_ROOT, '..', 'ionic-core', 'dist', 'compiled-ionic-angular'); const srcTestRoot = join(PROJECT_ROOT, 'src', 'components', folderInfo.componentName, 'test', folderInfo.componentTest); const distTestRoot = join(PROJECT_ROOT, 'dist', 'e2e', 'components', folderInfo.componentName, 'test', folderInfo.componentTest); const includeGlob = [ join(ionicAngularDir, '**', '*.ts')]; @@ -47,5 +49,5 @@ function serveTest(folderInfo: any) { const appNgModulePath = join(dirname(appEntryPoint), 'app.module.ts'); const distDir = join(distTestRoot, 'www'); - return runAppScriptsServe(folderInfo.componentName + '/' + folderInfo.componentTest, appEntryPoint, appNgModulePath, ionicAngularDir, distDir, pathToWriteFile, ionicAngularDir, sassConfigPath, copyConfigPath, null); + return runAppScriptsServe(testOrDemoName, appEntryPoint, appNgModulePath, ionicAngularDir, distDir, pathToWriteFile, ionicAngularDir, coreCompilerFilePath, coreDir, sassConfigPath, copyConfigPath, null); } diff --git a/scripts/gulp/tasks/e2e.prod.ts b/scripts/gulp/tasks/e2e.prod.ts index ca0aa5a863..a6d9af39fa 100644 --- a/scripts/gulp/tasks/e2e.prod.ts +++ b/scripts/gulp/tasks/e2e.prod.ts @@ -25,7 +25,7 @@ task('e2e.prepareSass', (done: Function) => { done(); }); -task('e2e.prod', ['e2e.prepare'], (done: Function) => { +task('e2e.prod', ['e2e.prepare', 'core'], (done: Function) => { // okay, first find out all of the e2e tests to run by finding all of the 'main.ts' files filterE2eTestfiles().then((filePaths: string[]) => { if (filePaths && filePaths.length > 0) { diff --git a/scripts/gulp/tasks/release.ts b/scripts/gulp/tasks/release.ts index 165c339ab0..bd1a162800 100644 --- a/scripts/gulp/tasks/release.ts +++ b/scripts/gulp/tasks/release.ts @@ -194,6 +194,7 @@ task('release.copyProdVersion', () => { task('release.prepareReleasePackage', (done: (err: any) => void) => { runSequence('clean', + 'core', 'release.polyfill', 'compile.release', 'release.copyTemplates', diff --git a/scripts/gulp/util.ts b/scripts/gulp/util.ts index 8045708e8d..1d7fc83b12 100644 --- a/scripts/gulp/util.ts +++ b/scripts/gulp/util.ts @@ -56,6 +56,10 @@ export function createTempTsConfig(includeGlob: string[], target: string, module } config.include = includeGlob; + config.exclude = [ + './components/badge/**/*' + ]; + if (overrideCompileOptions) { config.compilerOptions = Object.assign(config.compilerOptions, overrideCompileOptions); } @@ -188,7 +192,7 @@ export function runWebpack(pathToWebpackConfig: string, done: Function) { }); } -export function runAppScriptsServe(testOrDemoName: string, appEntryPoint: string, appNgModulePath: string, srcDir: string, distDir: string, tsConfig: string, ionicAngularDir: string, sassConfigPath: string, copyConfigPath: string, watchConfigPath: string) { +export function runAppScriptsServe(testOrDemoName: string, appEntryPoint: string, appNgModulePath: string, srcDir: string, distDir: string, tsConfig: string, ionicAngularDir: string, coreCompilerFilePath: string, coreDir: string, sassConfigPath: string, copyConfigPath: string, watchConfigPath: string) { console.log('Running ionic-app-scripts serve with', testOrDemoName); const deepLinksDir = dirname(dirname(appNgModulePath)); let scriptArgs = [ @@ -201,6 +205,8 @@ export function runAppScriptsServe(testOrDemoName: string, appEntryPoint: string '--tsconfig', tsConfig, '--readConfigJson', 'false', '--ionicAngularDir', ionicAngularDir, + '--coreCompilerFilePath', coreCompilerFilePath, + '--coreDir', coreDir, '--sass', sassConfigPath, '--copy', copyConfigPath, '--enableLint', 'false',