diff --git a/core/lib/patternlab.js b/core/lib/patternlab.js index 80785662c..cfdc88c0c 100644 --- a/core/lib/patternlab.js +++ b/core/lib/patternlab.js @@ -1,5 +1,5 @@ /* - * patternlab-node - v2.7.2 - 2017 + * patternlab-node - v2.8.0 - 2017 * * Brian Muenzenmeyer, Geoff Pursell, Raphael Okon, tburny and the web community. * Licensed under the MIT license. @@ -99,6 +99,8 @@ function checkConfiguration(patternlab) { * Finds and calls the main method of any found plugins. * @param patternlab - global data store */ + +//todo, move this to plugin_manager function initializePlugins(patternlab) { if (!patternlab.config.plugins) { return; } @@ -178,6 +180,10 @@ var patternlab_engine = function (config) { console.log(patternlab.package.version); } + function getSupportedTemplateExtensions(){ + return patternlab.engines.getSupportedFileExtensions(); + } + function help() { console.log(''); @@ -627,6 +633,9 @@ var patternlab_engine = function (config) { }, installplugin: function (pluginName) { installPlugin(pluginName); + }, + getSupportedTemplateExtensions: function () { + return getSupportedTemplateExtensions(); } }; }; diff --git a/core/lib/plugin_manager.js b/core/lib/plugin_manager.js index 136cc7324..3cac4fd69 100644 --- a/core/lib/plugin_manager.js +++ b/core/lib/plugin_manager.js @@ -42,10 +42,23 @@ var plugin_manager = function (config, configPath) { if (!diskConfig.plugins) { diskConfig.plugins = {}; } - diskConfig.plugins[pluginName] = { - enabled: true, - initialized: false - }; + + if (!diskConfig.plugins[pluginName]) { + diskConfig.plugins[pluginName] = { + enabled: true, + initialized: false + }; + } + + const pluginPathConfig = path.resolve(pluginPath, 'config.json'); + try { + var pluginConfigJSON = require(pluginPathConfig); + if (!diskConfig.plugins[pluginName].options) { + diskConfig.plugins[pluginName].options = pluginConfigJSON; + } + } catch (ex) { + //a config.json file is not required at this time + } //write config entry back fs.outputFileSync(path.resolve(configPath), JSON.stringify(diskConfig, null, 2)); diff --git a/core/lib/starterkit_manager.js b/core/lib/starterkit_manager.js index db4153486..77fbf91a2 100644 --- a/core/lib/starterkit_manager.js +++ b/core/lib/starterkit_manager.js @@ -36,12 +36,13 @@ var starterkit_manager = function (config) { console.log('Overwriting contents of', paths.source.root, 'during starterkit load.'); } - fs.copy(kitPath, paths.source.root, function (ex) { - if (ex) { - console.error(ex); - } - util.debug('starterkit ' + starterkitName + ' loaded successfully.'); - }); + try { + fs.copySync(kitPath, paths.source.root); + } catch (ex) { + util.error(ex); + return; + } + util.debug('starterkit ' + starterkitName + ' loaded successfully.'); } } catch (ex) { console.log(ex); diff --git a/core/lib/ui_builder.js b/core/lib/ui_builder.js index 22e4357fd..c62ea9193 100644 --- a/core/lib/ui_builder.js +++ b/core/lib/ui_builder.js @@ -82,7 +82,7 @@ var ui_builder = function () { } //this pattern is contained with a directory prefixed with an underscore (a handy way to hide whole directories from the nav - isOmitted = pattern.relPath.charAt(0) === '_' || pattern.relPath.indexOf('/_') > -1; + isOmitted = pattern.relPath.charAt(0) === '_' || pattern.relPath.indexOf(path.sep + '_') > -1; if (isOmitted) { if (patternlab.config.debug) { console.log('Omitting ' + pattern.patternPartial + ' from styleguide patterns because its contained within an underscored directory.'); @@ -484,8 +484,8 @@ var ui_builder = function () { _.forEach(styleguidePatterns.patternGroups, function (patternTypeObj, patternType) { var p; - var typePatterns = []; - var styleGuideExcludes = patternlab.config.styleGuideExcludes; + var typePatterns = [], styleguideTypePatterns = []; + var styleGuideExcludes = patternlab.config.styleGuideExcludes || patternlab.config.styleguideExcludes; _.forOwn(patternTypeObj, function (patternSubtypes, patternSubtype) { @@ -508,6 +508,19 @@ var ui_builder = function () { return pat.isDocPattern; }); + //determine if we should omit this subpatterntype completely from the viewall page + var omitPatternType = styleGuideExcludes && styleGuideExcludes.length + && _.some(styleGuideExcludes, function (exclude) { + return exclude === patternType + '/' + patternSubtype; + }); + if (omitPatternType) { + if (patternlab.config.debug) { + console.log('Omitting ' + patternType + '/' + patternSubtype + ' from building a viewall page because its patternSubGroup is specified in styleguideExcludes.'); + } + } else { + styleguideTypePatterns = styleguideTypePatterns.concat(subtypePatterns); + } + typePatterns = typePatterns.concat(subtypePatterns); var viewAllHTML = buildViewAllHTML(patternlab, subtypePatterns, patternPartial); @@ -544,7 +557,7 @@ var ui_builder = function () { console.log('Omitting ' + patternType + ' from building a viewall page because its patternGroup is specified in styleguideExcludes.'); } } else { - patterns = patterns.concat(typePatterns); + patterns = patterns.concat(styleguideTypePatterns); } }); return patterns; diff --git a/package.json b/package.json index 1788cc398..0f615b509 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "patternlab-node", "description": "Pattern Lab is a collection of tools to help you create atomic design systems. This is the node command line interface (CLI).", - "version": "2.7.2", + "version": "2.8.0", "main": "./core/lib/patternlab.js", "dependencies": { "chalk": "^1.1.3", diff --git a/test/ui_builder_tests.js b/test/ui_builder_tests.js index 38137c692..5bf8af416 100644 --- a/test/ui_builder_tests.js +++ b/test/ui_builder_tests.js @@ -7,6 +7,7 @@ var eol = require('os').EOL; var Pattern = require('../core/lib/object_factory').Pattern; var extend = require('util')._extend; var uiModule = rewire('../core/lib/ui_builder'); +var path = require('path'); //set up a global mocks - we don't want to be writing/rendering any files right now var fsMock = { @@ -80,7 +81,7 @@ tap.test('isPatternExcluded - returns true when pattern within underscored direc //arrange var patternlab = createFakePatternLab({}); var pattern = Pattern.createEmpty({ - relPath: '_hidden/patternsubtype/foo.mustache', + relPath: path.sep + '_hidden' + path.sep + 'patternsubtype' + path.sep + 'foo.mustache', isPattern: true, fileName : 'foo.mustache', patternPartial: 'hidden-foo' @@ -98,7 +99,7 @@ tap.test('isPatternExcluded - returns true when pattern within underscored direc //arrange var patternlab = createFakePatternLab({}); var pattern = Pattern.createEmpty({ - relPath: 'shown/_patternsubtype/foo.mustache', + relPath: 'shown' + path.sep + '_patternsubtype' + path.sep + 'foo.mustache', isPattern: true, fileName : 'foo.mustache', patternPartial: 'shown-foo'