From 8f7a22acc96fdbcdf74b84409d484c7c735c51ff Mon Sep 17 00:00:00 2001 From: Charles Lyding Date: Wed, 1 Feb 2017 21:32:04 -0500 Subject: [PATCH] refactor(@angular/cli): use check port utility function in serve command --- packages/@angular/cli/commands/serve.ts | 30 ++++--------------- packages/@angular/cli/utilities/check-port.ts | 10 +++---- 2 files changed, 9 insertions(+), 31 deletions(-) diff --git a/packages/@angular/cli/commands/serve.ts b/packages/@angular/cli/commands/serve.ts index f4fcf1e420d1..e9ed7c107943 100644 --- a/packages/@angular/cli/commands/serve.ts +++ b/packages/@angular/cli/commands/serve.ts @@ -1,20 +1,16 @@ -import * as denodeify from 'denodeify'; import { BuildOptions } from '../models/build-options'; import { baseBuildCommandOptions } from './build'; import { CliConfig } from '../models/config'; import { Version } from '../upgrade/version'; import { ServeTaskOptions } from './serve'; +import { checkPort } from '../utilities/check-port'; import { overrideOptions } from '../utilities/override-options'; -const SilentError = require('silent-error'); -const PortFinder = require('portfinder'); const Command = require('../ember-cli/lib/models/command'); -const getPort = denodeify<{ host: string, port: number }, number>(PortFinder.getPort); const config = CliConfig.fromProject() || CliConfig.fromGlobal(); const defaultPort = process.env.PORT || config.get('defaults.serve.port'); const defaultHost = config.get('defaults.serve.host'); -PortFinder.basePort = defaultPort; export interface ServeTaskOptions extends BuildOptions { port?: number; @@ -79,34 +75,18 @@ const ServeCommand = Command.extend({ const ServeTask = require('../tasks/serve').default; Version.assertAngularVersionIs2_3_1OrHigher(this.project.root); + return checkPort(commandOptions.port, commandOptions.host, defaultPort) + .then(port => { + commandOptions.port = port; - return checkExpressPort(commandOptions) - .then((opts: ServeTaskOptions) => { const serve = new ServeTask({ ui: this.ui, project: this.project, }); - return serve.run(opts); + return serve.run(commandOptions); }); } }); -function checkExpressPort(commandOptions: ServeTaskOptions) { - return getPort({ port: commandOptions.port, host: commandOptions.host }) - .then((foundPort: number) => { - - if (commandOptions.port !== foundPort && commandOptions.port !== 0) { - throw new SilentError( - `Port ${commandOptions.port} is already in use. Use '--port' to specify a different port.` - ); - } - - // otherwise, our found port is good - commandOptions.port = foundPort; - return commandOptions; - - }); -} - export default ServeCommand; diff --git a/packages/@angular/cli/utilities/check-port.ts b/packages/@angular/cli/utilities/check-port.ts index 91e0b3d986b4..29fa55500481 100644 --- a/packages/@angular/cli/utilities/check-port.ts +++ b/packages/@angular/cli/utilities/check-port.ts @@ -2,14 +2,12 @@ import * as denodeify from 'denodeify'; const SilentError = require('silent-error'); const PortFinder = require('portfinder'); -const getPort = denodeify(PortFinder.getPort); +const getPort = denodeify<{host: string, port: number}, number>(PortFinder.getPort); -PortFinder.basePort = 49152; - - -export function checkPort(port: number, host: string) { +export function checkPort(port: number, host: string, basePort = 49152): Promise { + PortFinder.basePort = basePort; return getPort({ port, host }) - .then((foundPort: number) => { + .then(foundPort => { // If the port isn't available and we weren't looking for any port, throw error. if (port !== foundPort && port !== 0) {