Skip to content

Commit bd485d2

Browse files
committed
feat(index): Make the cleaning of public/ an asynchronous adventure
Updated fs-extra to latest
1 parent 292bc4a commit bd485d2

File tree

5 files changed

+194
-182
lines changed

5 files changed

+194
-182
lines changed

core/index.js

Lines changed: 133 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,17 @@ const patternlab_module = function(config) {
160160
function cleanBuildDirectory(incrementalBuildsEnabled) {
161161
if (incrementalBuildsEnabled) {
162162
logger.info('Incremental builds enabled.');
163+
return Promise.resolve();
163164
} else {
164165
// needs to be done BEFORE processing patterns
165-
fs.removeSync(paths.public.patterns);
166-
fs.emptyDirSync(paths.public.patterns);
166+
return fs
167+
.emptyDir(paths.public.patterns)
168+
.then(() => {
169+
return Promise.resolve();
170+
})
171+
.catch(reason => {
172+
logger.error(reason);
173+
});
167174
}
168175
}
169176

@@ -193,129 +200,134 @@ const patternlab_module = function(config) {
193200
//
194201
// CLEAN BUILD DIRECTORY, maybe
195202
//
196-
cleanBuildDirectory(patternlab.incrementalBuildsEnabled);
197-
198-
patternlab.buildGlobalData(additionalData);
199-
200-
return patternlab
201-
.processAllPatternsIterative(paths.source.patterns)
202-
.then(() => {
203-
patternlab.events.emit('patternlab-pattern-iteration-end', patternlab);
204-
205-
//now that all the main patterns are known, look for any links that might be within data and expand them
206-
//we need to do this before expanding patterns & partials into extendedTemplates, otherwise we could lose the data -> partial reference
207-
parseAllLinks(patternlab);
208-
209-
//dive again to recursively include partials, filling out the
210-
//extendedTemplate property of the patternlab.patterns elements
211-
212-
return patternlab
213-
.processAllPatternsRecursive(paths.source.patterns)
214-
.then(() => {
215-
//take the user defined head and foot and process any data and patterns that apply
216-
const headPatternPromise = processMetaPattern(
217-
`_00-head.${patternlab.config.patternExtension}`,
218-
'userHead',
219-
patternlab
220-
);
221-
const footPatternPromise = processMetaPattern(
222-
`_01-foot.${patternlab.config.patternExtension}`,
223-
'userFoot',
224-
patternlab
225-
);
226-
227-
return Promise.all([headPatternPromise, footPatternPromise])
228-
.then(() => {
229-
//cascade any patternStates
230-
lineage_hunter.cascade_pattern_states(patternlab);
231-
232-
//set the pattern-specific header by compiling the general-header with data, and then adding it to the meta header
233-
return render(
234-
Pattern.createEmpty({ extendedTemplate: patternlab.header }),
235-
{
236-
cacheBuster: patternlab.cacheBuster,
237-
}
238-
)
239-
.then(results => {
240-
patternlab.data.patternLabHead = results;
241-
242-
// If deletePatternDir == true or graph needs to be updated
243-
// rebuild all patterns
244-
let patternsToBuild = null;
245-
246-
// If deletePatternDir == true or graph needs to be updated
247-
// rebuild all patterns
248-
patternsToBuild = null;
249-
250-
if (patternlab.incrementalBuildsEnabled) {
251-
// When the graph was loaded from file, some patterns might have been moved/deleted between runs
252-
// so the graph data become out of sync
253-
patternlab.graph.sync().forEach(n => {
254-
logger.info('[Deleted/Moved] ' + n);
255-
});
256-
257-
// TODO Find created or deleted files
258-
const now = new Date().getTime();
259-
markModifiedPatterns(now, patternlab);
260-
patternsToBuild = patternlab.graph.compileOrder();
261-
} else {
262-
// build all patterns, mark all to be rebuilt
263-
patternsToBuild = patternlab.patterns;
264-
for (const p of patternsToBuild) {
265-
p.compileState = CompileState.NEEDS_REBUILD;
266-
}
203+
return cleanBuildDirectory(patternlab.incrementalBuildsEnabled).then(() => {
204+
patternlab.buildGlobalData(additionalData);
205+
206+
return patternlab
207+
.processAllPatternsIterative(paths.source.patterns)
208+
.then(() => {
209+
patternlab.events.emit(
210+
'patternlab-pattern-iteration-end',
211+
patternlab
212+
);
213+
214+
//now that all the main patterns are known, look for any links that might be within data and expand them
215+
//we need to do this before expanding patterns & partials into extendedTemplates, otherwise we could lose the data -> partial reference
216+
parseAllLinks(patternlab);
217+
218+
//dive again to recursively include partials, filling out the
219+
//extendedTemplate property of the patternlab.patterns elements
220+
221+
return patternlab
222+
.processAllPatternsRecursive(paths.source.patterns)
223+
.then(() => {
224+
//take the user defined head and foot and process any data and patterns that apply
225+
const headPatternPromise = processMetaPattern(
226+
`_00-head.${patternlab.config.patternExtension}`,
227+
'userHead',
228+
patternlab
229+
);
230+
const footPatternPromise = processMetaPattern(
231+
`_01-foot.${patternlab.config.patternExtension}`,
232+
'userFoot',
233+
patternlab
234+
);
235+
236+
return Promise.all([headPatternPromise, footPatternPromise])
237+
.then(() => {
238+
//cascade any patternStates
239+
lineage_hunter.cascade_pattern_states(patternlab);
240+
241+
//set the pattern-specific header by compiling the general-header with data, and then adding it to the meta header
242+
return render(
243+
Pattern.createEmpty({
244+
extendedTemplate: patternlab.header,
245+
}),
246+
{
247+
cacheBuster: patternlab.cacheBuster,
267248
}
249+
)
250+
.then(results => {
251+
patternlab.data.patternLabHead = results;
252+
253+
// If deletePatternDir == true or graph needs to be updated
254+
// rebuild all patterns
255+
let patternsToBuild = null;
256+
257+
// If deletePatternDir == true or graph needs to be updated
258+
// rebuild all patterns
259+
patternsToBuild = null;
260+
261+
if (patternlab.incrementalBuildsEnabled) {
262+
// When the graph was loaded from file, some patterns might have been moved/deleted between runs
263+
// so the graph data become out of sync
264+
patternlab.graph.sync().forEach(n => {
265+
logger.info('[Deleted/Moved] ' + n);
266+
});
267+
268+
// TODO Find created or deleted files
269+
const now = new Date().getTime();
270+
markModifiedPatterns(now, patternlab);
271+
patternsToBuild = patternlab.graph.compileOrder();
272+
} else {
273+
// build all patterns, mark all to be rebuilt
274+
patternsToBuild = patternlab.patterns;
275+
for (const p of patternsToBuild) {
276+
p.compileState = CompileState.NEEDS_REBUILD;
277+
}
278+
}
268279

269-
//render all patterns last, so lineageR works
270-
return patternsToBuild
271-
.reduce((previousPromise, pattern) => {
272-
return previousPromise.then(() =>
273-
patternlab.renderSinglePattern(pattern)
274-
);
275-
}, Promise.resolve())
276-
.then(() => {
277-
// Saves the pattern graph when all files have been compiled
278-
PatternGraph.storeToFile(patternlab);
279-
if (patternlab.config.exportToGraphViz) {
280-
PatternGraph.exportToDot(
281-
patternlab,
282-
'dependencyGraph.dot'
280+
//render all patterns last, so lineageR works
281+
return patternsToBuild
282+
.reduce((previousPromise, pattern) => {
283+
return previousPromise.then(() =>
284+
patternlab.renderSinglePattern(pattern)
283285
);
284-
logger.info(
285-
`Exported pattern graph to ${path.join(
286-
config.paths.public.root,
286+
}, Promise.resolve())
287+
.then(() => {
288+
// Saves the pattern graph when all files have been compiled
289+
PatternGraph.storeToFile(patternlab);
290+
if (patternlab.config.exportToGraphViz) {
291+
PatternGraph.exportToDot(
292+
patternlab,
287293
'dependencyGraph.dot'
288-
)}`
289-
);
290-
}
291-
292-
//export patterns if necessary
293-
pattern_exporter.export_patterns(patternlab);
294-
})
295-
.catch(reason => {
296-
console.log(reason);
297-
logger.error('Error rendering patterns');
298-
});
299-
})
300-
.catch(reason => {
301-
console.log(reason);
302-
logger.error('Error rendering pattern lab header');
303-
});
304-
})
305-
.catch(reason => {
306-
console.log(reason);
307-
logger.error('Error processing meta patterns');
308-
});
309-
})
310-
.catch(reason => {
311-
console.log(reason);
312-
logger.error('Error processing patterns recursively');
313-
});
314-
})
315-
.catch(reason => {
316-
console.log(reason);
317-
logger.error('Error in buildPatterns()');
318-
});
294+
);
295+
logger.info(
296+
`Exported pattern graph to ${path.join(
297+
config.paths.public.root,
298+
'dependencyGraph.dot'
299+
)}`
300+
);
301+
}
302+
303+
//export patterns if necessary
304+
pattern_exporter.export_patterns(patternlab);
305+
})
306+
.catch(reason => {
307+
console.log(reason);
308+
logger.error('Error rendering patterns');
309+
});
310+
})
311+
.catch(reason => {
312+
console.log(reason);
313+
logger.error('Error rendering pattern lab header');
314+
});
315+
})
316+
.catch(reason => {
317+
console.log(reason);
318+
logger.error('Error processing meta patterns');
319+
});
320+
})
321+
.catch(reason => {
322+
console.log(reason);
323+
logger.error('Error processing patterns recursively');
324+
});
325+
})
326+
.catch(reason => {
327+
console.log(reason);
328+
logger.error('Error in buildPatterns()');
329+
});
330+
});
319331
}
320332

321333
return {

0 commit comments

Comments
 (0)