Skip to content

Commit b44ec0b

Browse files
bmuenzenmeyergeoffp
authored andcommitted
spawn twig meta files if not found
part of #611
1 parent 415f2aa commit b44ec0b

File tree

4 files changed

+55
-4
lines changed

4 files changed

+55
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<!DOCTYPE html>
2+
<html class="{{ htmlClass }}">
3+
<head>
4+
<title>{{ title }}</title>
5+
<meta charset="UTF-8">
6+
<meta name="viewport" content="width=device-width" />
7+
8+
<link rel="stylesheet" href="../../css/style.css?{{ cacheBuster }}" media="all" />
9+
<link rel="stylesheet" href="../../css/pattern-scaffolding.css?{{ cacheBuster }}" media="all" />
10+
11+
<!-- Begin Pattern Lab (Required for Pattern Lab to run properly) -->
12+
{{ patternLabHead | raw }}
13+
<!-- End Pattern Lab -->
14+
15+
</head>
16+
<body class="{{ bodyClass }}">
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
<!--DO NOT REMOVE-->
3+
{{ patternLabFoot | raw }}
4+
5+
</body>
6+
</html>

packages/patternengine-node-twig/lib/engine_twig.js

+32-4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
"use strict";
2+
13
/*
24
* twig pattern engine for patternlab-node - v0.15.1 - 2015
35
*
@@ -18,10 +20,10 @@
1820
*
1921
*/
2022

21-
"use strict";
22-
23-
var Twig = require('twig');
24-
var twig = Twig.twig;
23+
const fs = require('fs-extra');
24+
const path = require('path');
25+
const Twig = require('twig');
26+
const twig = Twig.twig;
2527

2628
var engine_twig = {
2729
engine: Twig,
@@ -76,7 +78,33 @@ var engine_twig = {
7678
partial = partial.replace(/"/g, '');
7779

7880
return partial;
81+
},
82+
83+
spawnFile: function (config, fileName) {
84+
const paths = config.paths;
85+
const metaFilePath = path.resolve(paths.source.meta, fileName);
86+
try {
87+
fs.statSync(metaFilePath);
88+
} catch (err) {
89+
90+
//not a file, so spawn it from the included file
91+
const metaFileContent = fs.readFileSync(path.resolve(__dirname, '..', '_meta/', fileName), 'utf8');
92+
fs.outputFileSync(metaFilePath, metaFileContent);
93+
}
94+
},
95+
96+
/**
97+
* Checks to see if the _meta directory has engine-specific head and foot files,
98+
* spawning them if not found.
99+
*
100+
* @param {object} config - the global config object from core, since we won't
101+
* assume it's already present
102+
*/
103+
spawnMeta: function (config) {
104+
this.spawnFile(config, '_00-head.twig');
105+
this.spawnFile(config, '_01-foot.twig');
79106
}
107+
80108
};
81109

82110
module.exports = engine_twig;

packages/patternengine-node-twig/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"version": "0.1.0",
55
"main": "lib/engine_twig.js",
66
"dependencies": {
7+
"fs-extra": "^0.30.0",
78
"twig": "^0.9.5"
89
},
910
"devDependencies": {},

0 commit comments

Comments
 (0)