Skip to content

Commit 448fb04

Browse files
committed
references to grunt gone from patternlab.js
1 parent b4998ec commit 448fb04

File tree

3 files changed

+103
-87
lines changed

3 files changed

+103
-87
lines changed

builder/patternlab-grunt.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
var patternlab_engine = require('./patternlab.js');
2+
3+
module.exports = function(grunt) {
4+
grunt.registerTask('patternlab', 'create design systems with atomic design', function(arg) {
5+
6+
var patternlab = patternlab_engine();
7+
8+
if(arguments.length === 0){
9+
patternlab.build();
10+
}
11+
12+
if(arg && arg === 'v'){
13+
patternlab.version();
14+
}
15+
16+
if(arg && arg === "only_patterns"){
17+
patternlab.build_patterns_only();
18+
}
19+
20+
if(arg && arg === "help"){
21+
patternlab.help();
22+
}
23+
24+
if(arg && (arg !== "v" && arg !=="only_patterns" && arg !=="help")){
25+
patternlab.help();
26+
}
27+
28+
});
29+
30+
};

builder/patternlab.js

Lines changed: 68 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -8,82 +8,96 @@
88
*
99
*/
1010

11-
var patternlab_engine = function(grunt){
11+
var patternlab_engine = function(){
1212
var path = require('path'),
13+
fs = require('fs-extra'),
14+
diveSync = require('diveSync'),
1315
mustache = require('mustache'),
1416
of = require('./object_factory'),
1517
pa = require('./pattern_assembler'),
1618
patternlab = {};
1719

18-
patternlab.package = grunt.file.readJSON('package.json');
19-
patternlab.config = grunt.file.readJSON('config.json');
20+
patternlab.package =fs.readJSONSync('./package.json');
21+
patternlab.config = fs.readJSONSync('./config.json');
2022

2123
function getVersion() {
22-
grunt.log.ok(patternlab.package.version);
24+
console.log(patternlab.package.version);
2325
}
2426

2527
function help(){
26-
grunt.log.subhead('Patternlab Node Help');
27-
grunt.log.writeln('===============================');
28-
grunt.log.writeln('Command Line Arguments');
29-
grunt.log.writeln('patternlab:only_patterns');
30-
grunt.log.writeln(' > Compiles the patterns only, outputting to ./public/patterns');
31-
grunt.log.writeln('patternlab:v');
32-
grunt.log.writeln(' > Retrieve the version of patternlab-node you have installed');
33-
grunt.log.writeln('patternlab:help');
34-
grunt.log.writeln(' > Get more information about patternlab-node, pattern lab in general, and where to report issues.');
35-
grunt.log.writeln('===============================');
36-
grunt.log.writeln('Visit http://patternlab.io/docs/index.html for general help on pattern-lab');
37-
grunt.log.writeln('Visit https://github.com/pattern-lab/patternlab-node/issues to open a bug.');
28+
console.log('Patternlab Node Help');
29+
console.log('===============================');
30+
console.log('Command Line Arguments');
31+
console.log('patternlab:only_patterns');
32+
console.log(' > Compiles the patterns only, outputting to ./public/patterns');
33+
console.log('patternlab:v');
34+
console.log(' > Retrieve the version of patternlab-node you have installed');
35+
console.log('patternlab:help');
36+
console.log(' > Get more information about patternlab-node, pattern lab in general, and where to report issues.');
37+
console.log('===============================');
38+
console.log('Visit http://patternlab.io/docs/index.html for general help on pattern-lab');
39+
console.log('Visit https://github.com/pattern-lab/patternlab-node/issues to open a bug.');
3840
}
3941

4042
function printDebug() {
4143
//debug file can be written by setting flag on config.json
4244
if(patternlab.config.debug){
43-
var outputFilename = './patternlab.json';
44-
grunt.file.write(outputFilename, JSON.stringify(patternlab, null, 3));
45+
console.log('writing patternlab debug file to ./patternlab.json');
46+
fs.outputFileSync('./patternlab.json', JSON.stringify(patternlab, null, 3));
4547
}
4648
}
4749

48-
function buildPatterns(){
49-
patternlab.data = grunt.file.readJSON('./source/_data/data.json');
50-
patternlab.listitems = grunt.file.readJSON('./source/_data/listitems.json');
51-
patternlab.header = grunt.file.read('./source/_patternlab-files/pattern-header-footer/header.html');
52-
patternlab.footer = grunt.file.read('./source/_patternlab-files/pattern-header-footer/footer.html');
50+
function buildPatterns(callback){
51+
patternlab.data = fs.readJSONSync('./source/_data/data.json');
52+
patternlab.listitems = fs.readJSONSync('./source/_data/listitems.json');
53+
patternlab.header = fs.readFileSync('./source/_patternlab-files/pattern-header-footer/header.html', 'utf8');
54+
patternlab.footer = fs.readFileSync('./source/_patternlab-files/pattern-header-footer/footer.html', 'utf8');
5355
patternlab.patterns = [];
5456
patternlab.patternIndex = [];
5557
patternlab.partials = {};
5658

57-
grunt.file.recurse('./source/_patterns', function(abspath, rootdir, subdir, filename){
59+
diveSync('./source/_patterns', function(err, file){
60+
61+
//log any errors
62+
if(err){
63+
console.log(err);
64+
return;
65+
}
66+
67+
//extract some information
68+
var abspath = file.substring(2);
69+
var subdir = path.dirname(path.relative('./source/_patterns', file));
70+
var filename = path.basename(file);
71+
5872
//check if the pattern already exists.
59-
var patternName = filename.substring(0, filename.indexOf('.'));
60-
var patternIndex = patternlab.patternIndex.indexOf(subdir + '-' + patternName);
61-
var currentPattern;
62-
var flatPatternPath;
73+
var patternName = filename.substring(0, filename.indexOf('.')),
74+
patternIndex = patternlab.patternIndex.indexOf(subdir + '-' + patternName),
75+
currentPattern,
76+
flatPatternPath;
6377

6478
//ignore _underscored patterns and json
65-
if(filename.charAt(0) === '_' || grunt.util._.str.include(filename, 'json')){
79+
if(filename.charAt(0) === '_' || path.extname(filename) === '.json'){
6680
return;
6781
}
68-
6982

7083
//make a new Pattern Object
71-
var flatPatternName = subdir.replace(/\//g, '-') + '-' + patternName;
72-
flatPatternName = flatPatternName.replace(/\//g, '-');
84+
var flatPatternName = subdir.replace(/\\/g, '-') + '-' + patternName;
85+
86+
flatPatternName = flatPatternName.replace(/\\/g, '-');
7387
currentPattern = new of.oPattern(flatPatternName, subdir, filename, {});
7488
currentPattern.patternName = patternName.substring(patternName.indexOf('-') + 1);
7589
currentPattern.data = null;
7690

7791
//look for a json file for this template
7892
try {
7993
var jsonFilename = abspath.substr(0, abspath.lastIndexOf(".")) + ".json";
80-
currentPattern.data = grunt.file.readJSON(jsonFilename);
94+
currentPattern.data = fs.readJSONSync(jsonFilename);
8195
}
8296
catch(e) {
8397

8498
}
8599

86-
currentPattern.template = grunt.file.read(abspath);
100+
currentPattern.template = fs.readFileSync(abspath, 'utf8');
87101

88102
//render the pattern. pass partials object just in case.
89103
if(currentPattern.data) { // Pass JSON as data
@@ -98,7 +112,7 @@ var patternlab_engine = function(grunt){
98112
//add footer info before writing
99113
var currentPatternFooter = renderPattern(patternlab.footer, currentPattern);
100114

101-
grunt.file.write('./public/patterns/' + flatPatternPath, patternlab.header + currentPattern.patternPartial + currentPatternFooter);
115+
fs.outputFileSync('./public/patterns/' + flatPatternPath, patternlab.header + currentPattern.patternPartial + currentPatternFooter);
102116
currentPattern.patternLink = flatPatternPath;
103117

104118
//add as a partial in case this is referenced later. convert to syntax needed by existing patterns
@@ -119,7 +133,6 @@ var patternlab_engine = function(grunt){
119133
//add to patternlab arrays so we can look these up later. this could probably just be an object.
120134
patternlab.patternIndex.push(currentPattern.name);
121135
patternlab.patterns.push(currentPattern);
122-
123136
});
124137

125138
}
@@ -131,17 +144,17 @@ var patternlab_engine = function(grunt){
131144
patternlab.viewAllPaths = {};
132145

133146
//build the styleguide
134-
var styleguideTemplate = grunt.file.read('./source/_patternlab-files/styleguide.mustache');
147+
var styleguideTemplate = fs.readFileSync('./source/_patternlab-files/styleguide.mustache', 'utf8');
135148
var styleguideHtml = renderPattern(styleguideTemplate, {partials: patternlab.patterns});
136-
grunt.file.write('./public/styleguide/html/styleguide.html', styleguideHtml);
149+
fs.outputFileSync('./public/styleguide/html/styleguide.html', styleguideHtml);
137150

138151
//build the patternlab website
139-
var patternlabSiteTemplate = grunt.file.read('./source/_patternlab-files/index.mustache');
152+
var patternlabSiteTemplate = fs.readFileSync('./source/_patternlab-files/index.mustache', 'utf8');
140153

141154
//loop through all patterns. deciding to do this separate from the recursion, even at a performance hit, to attempt to separate the tasks of styleguide creation versus site menu creation
142155
for(var i = 0; i < patternlab.patterns.length; i++){
143156
var pattern = patternlab.patterns[i];
144-
var bucketName = pattern.name.replace(/\//g, '-').split('-')[1];
157+
var bucketName = pattern.name.replace(/\\/g, '-').split('-')[1];
145158

146159
//check if the bucket already exists
147160
var bucketIndex = patternlab.bucketIndex.indexOf(bucketName);
@@ -158,8 +171,6 @@ var patternlab_engine = function(grunt){
158171
//get the navSubItem
159172
var navSubItemName = pattern.patternName.replace(/-/g, ' ');
160173

161-
//grunt.log.writeln('new bucket found: ' + bucketName + " " + navItemName + " " + navSubItemName);
162-
163174
//test whether the pattern struture is flat or not - usually due to a template or page
164175
var flatPatternItem = false;
165176
if(navItemName === bucketName){
@@ -180,7 +191,7 @@ var patternlab_engine = function(grunt){
180191
bucket.patternItems.push(navSubItem);
181192

182193
//add to patternPaths
183-
patternlab.patternPaths[bucketName][pattern.patternName] = pattern.subdir + "/" + pattern.filename.substring(0, pattern.filename.indexOf('.'));
194+
addToPatternPaths(bucketName, pattern);
184195

185196
} else{
186197

@@ -190,7 +201,7 @@ var patternlab_engine = function(grunt){
190201
navItem.navSubItemsIndex.push(navSubItemName);
191202

192203
//add to patternPaths
193-
patternlab.patternPaths[bucketName][pattern.patternName] = pattern.subdir + "/" + pattern.filename.substring(0, pattern.filename.indexOf('.'));
204+
addToPatternPaths(bucketName, pattern);
194205

195206
}
196207

@@ -228,7 +239,7 @@ var patternlab_engine = function(grunt){
228239
bucket.patternItems.push(navSubItem);
229240

230241
//add to patternPaths
231-
patternlab.patternPaths[bucketName][pattern.patternName] = pattern.subdir + "/" + pattern.filename.substring(0, pattern.filename.indexOf('.'));
242+
addToPatternPaths(bucketName, pattern);
232243

233244
} else{
234245
//check to see if navItem exists
@@ -251,8 +262,7 @@ var patternlab_engine = function(grunt){
251262
}
252263

253264
// just add to patternPaths
254-
patternlab.patternPaths[bucketName][pattern.patternName] = pattern.subdir + "/" + pattern.filename.substring(0, pattern.filename.indexOf('.'));
255-
265+
addToPatternPaths(bucketName, pattern);
256266
}
257267

258268
}
@@ -261,23 +271,23 @@ var patternlab_engine = function(grunt){
261271

262272
//the patternlab site requires a lot of partials to be rendered.
263273
//patternNav
264-
var patternNavTemplate = grunt.file.read('./source/_patternlab-files/partials/patternNav.mustache');
274+
var patternNavTemplate = fs.readFileSync('./source/_patternlab-files/partials/patternNav.mustache', 'utf8');
265275
var patternNavPartialHtml = renderPattern(patternNavTemplate, patternlab);
266276

267277
//ishControls
268-
var ishControlsTemplate = grunt.file.read('./source/_patternlab-files/partials/ishControls.mustache');
278+
var ishControlsTemplate = fs.readFileSync('./source/_patternlab-files/partials/ishControls.mustache', 'utf8');
269279
var ishControlsPartialHtml = renderPattern(ishControlsTemplate, patternlab.config);
270280

271281
//patternPaths
272-
var patternPathsTemplate = grunt.file.read('./source/_patternlab-files/partials/patternPaths.mustache');
282+
var patternPathsTemplate = fs.readFileSync('./source/_patternlab-files/partials/patternPaths.mustache', 'utf8');
273283
var patternPathsPartialHtml = renderPattern(patternPathsTemplate, {'patternPaths': JSON.stringify(patternlab.patternPaths)});
274284

275285
//viewAllPaths
276-
var viewAllPathsTemplate = grunt.file.read('./source/_patternlab-files/partials/viewAllPaths.mustache');
286+
var viewAllPathsTemplate = fs.readFileSync('./source/_patternlab-files/partials/viewAllPaths.mustache', 'utf8');
277287
var viewAllPathersPartialHtml = renderPattern(viewAllPathsTemplate, {'viewallpaths': JSON.stringify(patternlab.viewAllPaths)});
278288

279289
//websockets
280-
var websocketsTemplate = grunt.file.read('./source/_patternlab-files/partials/websockets.mustache');
290+
var websocketsTemplate = fs.readFileSync('./source/_patternlab-files/partials/websockets.mustache', 'utf8');
281291
patternlab.contentsyncport = patternlab.config.contentSyncPort;
282292
patternlab.navsyncport = patternlab.config.navSyncPort;
283293

@@ -291,8 +301,7 @@ var patternlab_engine = function(grunt){
291301
'websockets': websocketsPartialHtml,
292302
'viewAllPaths': viewAllPathersPartialHtml
293303
});
294-
grunt.file.write('./public/index.html', patternlabSiteHtml);
295-
304+
fs.outputFileSync('./public/index.html', patternlabSiteHtml);
296305
}
297306

298307
function renderPattern(name, data, partials) {
@@ -303,6 +312,11 @@ var patternlab_engine = function(grunt){
303312
}
304313
}
305314

315+
function addToPatternPaths(bucketName, pattern){
316+
//this is messy, could use a refactor.
317+
patternlab.patternPaths[bucketName][pattern.patternName] = pattern.subdir.replace(/\\/g, '/') + "/" + pattern.filename.substring(0, pattern.filename.indexOf('.'));
318+
}
319+
306320
return {
307321
version: function(){
308322
return getVersion();
@@ -311,13 +325,11 @@ var patternlab_engine = function(grunt){
311325
buildPatterns();
312326
buildFrontEnd();
313327
printDebug();
314-
315328
},
316329
help: function(){
317330
help();
318331
},
319332
build_patterns_only: function(){
320-
grunt.log.ok('only_patterns argument not yet implemented');
321333
buildPatterns();
322334
printDebug();
323335
}
@@ -327,31 +339,3 @@ var patternlab_engine = function(grunt){
327339

328340
module.exports = patternlab_engine;
329341

330-
module.exports = function(grunt) {
331-
grunt.registerTask('patternlab', 'create design systems with atomic design', function(arg) {
332-
333-
var patternlab = patternlab_engine(grunt);
334-
335-
if(arguments.length === 0){
336-
patternlab.build();
337-
}
338-
339-
if(arg && arg === 'v'){
340-
patternlab.version();
341-
}
342-
343-
if(arg && arg === "only_patterns"){
344-
patternlab.build_patterns_only();
345-
}
346-
347-
if(arg && arg === "help"){
348-
patternlab.help();
349-
}
350-
351-
if(arg && (arg !== "v" && arg !=="only_patterns" && arg !=="help")){
352-
patternlab.help();
353-
}
354-
355-
});
356-
357-
};

package.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "patternlab-node",
33
"description": "Pattern Lab is a collection of tools to help you create atomic design systems. This is the node command line interface (CLI).",
4-
"version": "0.1.2",
4+
"version": "0.1.3",
55
"devDependencies": {
66
"grunt": "~0.4.0",
77
"grunt-contrib-watch": "~0.2.0",
@@ -12,7 +12,9 @@
1212
"grunt-contrib-concat": "~0.3.0",
1313
"grunt-contrib-nodeunit": "~0.3.0",
1414
"mustache": "~0.8.1",
15-
"matchdep": "~0.3.0"
15+
"matchdep": "~0.3.0",
16+
"dive": "^0.3.1",
17+
"fs-extra": "^0.10.0"
1618
},
1719
"keywords": [
1820
"Pattern Lab",
@@ -28,7 +30,7 @@
2830
"author": "Brian Muenzenmeyer",
2931
"license": "MIT",
3032
"scripts": {
31-
"test" : "grunt travis --verbose"
33+
"test": "grunt travis --verbose"
3234
},
3335
"engines": {
3436
"node": ">=0.1"

0 commit comments

Comments
 (0)