From a81a0f9b03e8c330b7f635217e7bf50a177f5b38 Mon Sep 17 00:00:00 2001 From: Ben Word Date: Sun, 29 Jan 2017 16:49:44 -0700 Subject: [PATCH] Add option to configure Browsersync --- CHANGELOG.md | 4 ++++ README.md | 1 + composer.json | 3 ++- src/lib/Sage/PostCreateProject.php | 24 +++++++++++++++++++++++- 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cb379b..239da67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +### HEAD +* Add option to configure Browsersync ([#1822](https://github.com/roots/sage/pull/1822)) +* Add support for HTML injection ([#1817](https://github.com/roots/sage/pull/1817)) + ### 9.0.0-beta.2: January 19th, 2016 * Fix Browersync ([#1815](https://github.com/roots/sage/pull/1815)) * Add option to select CSS framework, add Foundation as an option ([#1813](https://github.com/roots/sage/pull/1813)) diff --git a/README.md b/README.md index 1a956a9..e32a892 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ During theme installation you will have the options to: * Update theme headers (theme name, description, author, etc.) * Select a CSS framework (Bootstrap, Foundation, none) * Add Font Awesome +* Configure Browsersync (path to theme, local development URL) ## Theme structure diff --git a/composer.json b/composer.json index 7c4b334..9ce192d 100644 --- a/composer.json +++ b/composer.json @@ -44,7 +44,8 @@ "post-create-project-cmd": [ "Roots\\Sage\\PostCreateProject::updateHeaders", "Roots\\Sage\\PostCreateProject::selectFramework", - "Roots\\Sage\\PostCreateProject::addFontAwesome" + "Roots\\Sage\\PostCreateProject::addFontAwesome", + "Roots\\Sage\\PostCreateProject::configureBrowsersync" ] } } diff --git a/src/lib/Sage/PostCreateProject.php b/src/lib/Sage/PostCreateProject.php index 7ff9b52..495b0f4 100755 --- a/src/lib/Sage/PostCreateProject.php +++ b/src/lib/Sage/PostCreateProject.php @@ -91,12 +91,34 @@ class PostCreateProject $package['dependencies'] = $dependencies; $package = str_replace(' ', ' ', json_encode($package, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n"); file_put_contents('package.json', $package); - + $import_dep_str = '// Import npm dependencies' . "\n"; file_put_contents('assets/styles/main.scss', str_replace($import_dep_str, $import_dep_str . '@import "~font-awesome/scss/font-awesome";' . "\n", file_get_contents('assets/styles/main.scss'))); file_put_contents('assets/styles/common/_variables.scss', "\n" . '$fa-font-path: \'~font-awesome/fonts\';' . "\n", FILE_APPEND); } } } + + public static function configureBrowsersync(Event $event) + { + $io = $event->getIO(); + + if ($io->isInteractive()) { + $io->write('Configure Browsersync. Press enter key for default.'); + + $browsersync_settings_default = [ + 'publicPath' => '/app/themes/'.basename(getcwd()), + 'devUrl' => 'http://example.dev' + ]; + + $browsersync_settings = [ + 'publicPath' => $io->ask('Path to theme directory (eg. /wp-content/themes/sage) ['.$browsersync_settings_default['publicPath'].']: ', $browsersync_settings_default['publicPath']), + 'devUrl' => $io->ask('Local development URL of WP site ['.$browsersync_settings_default['devUrl'].']: ', $browsersync_settings_default['devUrl']) + ]; + + file_put_contents('assets/config.json', str_replace('/app/themes/sage', $browsersync_settings['publicPath'], file_get_contents('assets/config.json'))); + file_put_contents('assets/config.json', str_replace($browsersync_settings_default['devUrl'], $browsersync_settings['devUrl'], file_get_contents('assets/config.json'))); + } + } // @codingStandardsIgnoreEnd }