Created
December 1, 2022 16:30
-
-
Save Cosmeen/08c1c4bea6bd6410a1347f681af13e09 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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