Skip to content

Instantly share code, notes, and snippets.

@Cosmeen
Created December 1, 2022 16:30
Show Gist options
  • Save Cosmeen/08c1c4bea6bd6410a1347f681af13e09 to your computer and use it in GitHub Desktop.
Save Cosmeen/08c1c4bea6bd6410a1347f681af13e09 to your computer and use it in GitHub Desktop.
// usage:
// $ node new-page.js page-name
const { spawn } = require("child_process");
var fs = require('fs'),
pageName = process.argv[2],
JSpageName = ('-' + pageName).replace(/\-./g, function(t) { return t[1].toUpperCase(); });
if (pageName === undefined) {
return console.log('No page name specified.\nusage: node new-page.js page-name');
}
var pageBoilerplate = '<?xml version="1.0" encoding="UTF-8"?>\n\
<include_parts\n\
xmlns:ixsl="http://www.w3.org/1999/XSL/Transform"\n\
xmlns:nx="http://www.schlund.de/pustefix/widgets/nx"\n\
xmlns:pfx="http://www.schlund.de/pustefix/core"\n\
xmlns:shop="http://www.schlund.de/pustefix/shop"\n\
exclude-result-prefixes="nx">\n\n\
<part name="content">\n\
<theme name="default">\n\n\
<pfx:include part="header" />\n\
<pfx:include part="page-content"/>\n\n\
</theme>\n\
</part>\n\n\
<part name="header">\n\
<theme name="default">\n\
<div class="header-section emphasized section-overlapping">\n\
<header>\n\
<h1 class="headline-page has-subheadline">' + pageName + '</h1>\n\
</header>\n\
</div>\n\
</theme>\n\
</part>\n\n\
<part name="page-content">\n\
<theme name="default">\n\
<div class="content-section">\n\
<p class="content-paragraph">' + pageName + '</p>\n\
</div>\n\
</theme>\n\
</part>\n\
</include_parts>\n';
var cssBoilerplate = '/* jasmin */\n';
var jsBoilerPlate = cssBoilerplate + '\
\n\n\
$q.define(\'UNOUNO.pages.' + JSpageName + '\', {\n\n\
statics: {\n\n\
init: function() {\n\n\
}\n\n\
},\n\n\
defer: function(statics) {\n\n\
statics.init();\n\n\
}\n\n\
});\n';
// img folder
fs.mkdir("src/main/resources/PUSTEFIX-INF/img/pages/" + pageName, function(err) {
if (err) {
return console.log(err);
}
console.log(pageName + ' img folder', ' created succesfuly');
});
// xml
fs.writeFile("src/main/resources/PUSTEFIX-INF/txt/pages/" + pageName + '.xml', pageBoilerplate, function(err) {
if (err) {
return console.log(err);
}
console.log(pageName + '.xml', ' created succesfuly');
});
// js
fs.writeFile("src/main/resources/PUSTEFIX-INF/script/pages/" + pageName + '.js', jsBoilerPlate, function(err) {
if (err) {
return console.log(err);
}
console.log(pageName + '.js', ' created succesfuly');
});
// css
fs.writeFile("src/main/resources/PUSTEFIX-INF/style/pages/" + pageName + '.css', cssBoilerplate, function(err) {
if (err) {
return console.log(err);
}
console.log(pageName + '.css', ' created succesfuly');
});
// img folder
fs.writeFile("src/main/resources/PUSTEFIX-INF/img/pages/" + pageName + '/.gitkeep', '', function(err) {
if (err) {
return console.log(err);
}
console.log(pageName + '/.gitkeep', ' created succesfuly');
});
// depend-fragments.xml
fs.readFile('src/main/resources/PUSTEFIX-INF/conf/depend-fragments.xml', 'utf8', function(err, data) {
if (err) {
return console.log(err);
}
var targetsPosition = data.indexOf('</fr:targets>'),
pageStructure = ' <standardpage name="' + pageName + '" xml="xml/frame-flex.xml" module="frontend-skin-common" />\n ',
output = data.substr(0, targetsPosition) + pageStructure + data.substr(targetsPosition);
fs.writeFile('src/main/resources/PUSTEFIX-INF/conf/depend-fragments.xml', output, 'utf8', function() {
console.log('Page was successfully added in depend-fragments.xml');
});
});
spawn('git', ['add', 'src/main/resources/PUSTEFIX-INF/txt/pages/' + pageName + '.xml']);
spawn('git', ['add', 'src/main/resources/PUSTEFIX-INF/script/pages/' + pageName + '.js']);
spawn('git', ['add', 'src/main/resources/PUSTEFIX-INF/style/pages/' + pageName + '.css']);
spawn('git', ['add', 'src/main/resources/PUSTEFIX-INF/img/pages/' + pageName]);
spawn('git', ['add', 'src/main/resources/PUSTEFIX-INF/img/pages/' + pageName + '/.gitkeep']);
spawn('git', ['add', 'src/main/resources/PUSTEFIX-INF/conf/depend-fragments.xml']);
// docu (:
// https://nodejs.org/api/fs.html
// http://stackoverflow.com/questions/4351521/how-do-i-pass-command-line-arguments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment