boilerplate-generator-cli
v0.2.1
Published
Quickly setup projects from preset BASE64 strings. Designed to be a companion app to the graphical and feature extensive parent project: Boilerplate Generator
Readme
Boilerplate Generator CLI (BGCLI) ·

Quickly setup projects from preset BASE64 strings.
Designed to be a companion app to the graphical and feature extensive parent project: Boilerplate Generator
Installing / Getting Started
npm install -g boilerplate-generator-cliGenerate an example preset:
boiler build --hash Y29uc3QgeyBqb2luIH0gPSByZXF1aXJlKCdwYXRoJyk7DQoNCmV4cG9ydHMuanMgPSAnanMnOw0KZXhwb3J0cy5qc19tb2R1bGVzID0gam9pbihleHBvcnRzLmpzLCAnbW9kdWxlcycpOw0KDQpleHBvcnRzLl9maWxlcyA9IFsNCiAgICB7DQogICAgICAgIG5hbWU6ICdwYWNrYWdlLmpzb24nLA0KICAgICAgICBwYXRoOiBqb2luKHByb2Nlc3MuY3dkKCkpLA0KICAgICAgICBiYXNlNjQ6ICdldzBLSUNBaWJtRnRaU0k2SUNKbWFYSnpkQzEwYVcxbExXSnZhV3hsY25Cc1lYUmxMV2RsYm1WeVlYUnZjaTFpZFdsc1pDSXNEUW9nSUNKdFlXbHVJam9nSW1wekwybHVaR1Y0TG1weklnMEtmUTBLJw0KICAgIH0sDQogICAgew0KICAgICAgICBuYW1lOiAnaW5kZXguanMnLA0KICAgICAgICBwYXRoOiBleHBvcnRzLmpzLA0KICAgICAgICBiYXNlNjQ6ICdZMjl1YzNRZ2V5Qm5jbVZsZEdsdVp5QjlJRDBnY21WeGRXbHlaU2duTGk5dGIyUjFiR1Z6TDJkeVpXVjBMbXB6SnlrN0RRb05DbU52Ym5OdmJHVXViRzluS0dkeVpXVjBhVzVuS1RzPScNCiAgICB9LA0KICAgIHsNCiAgICAgICAgbmFtZTogJ2dyZWV0LmpzJywNCiAgICAgICAgcGF0aDogZXhwb3J0cy5qc19tb2R1bGVzLA0KICAgICAgICBiYXNlNjQ6ICdaWGh3YjNKMGN5NW5jbVZsZEdsdVp5QTlJQ2RJWld4c2J5d2dWMjl5YkdRaEp6cz0nDQogICAgfQ0KXTs=BGCLI creates a template file from the hash then generates files and folders following the structure defined by the template file.
Configuration
A configuration file will be auto generated inside your HOME directory as .boiler-gen-config.
If you still have the old presets file .boiler-gen-presets from v0.1, it is suggested to migrate all your presets into the configuration file under the presets object.
EXAMPLE
${HOME}/.boiler-gen-presets
{
"App Boilerplate 1": "Y29uc3QgeyBqb2luIH0gPSByZXF1aXJlKCdwYXRoJyk7DQoNCmV4cG9ydHMuanMgPSAnanMnOw0KZXhwb3J0cy5qc19tb2R1bGVzID0gam9pbihleHBvcnRzLmpzLCAnbW9kdWxlcycpOw0KDQpleHBvcnRzLl9maWxlcyA9IFsNCiAgICB7DQogICAgICAgIG5hbWU6ICdwYWNrYWdlLmpzb24nLA0KICAgICAgICBwYXRoOiBqb2luKHByb2Nlc3MuY3dkKCkpLA0KICAgICAgICBiYXNlNjQ6ICdldzBLSUNBaWJtRnRaU0k2SUNKbWFYSnpkQzEwYVcxbExXSnZhV3hsY25Cc1lYUmxMV2RsYm1WeVlYUnZjaTFpZFdsc1pDSXNEUW9nSUNKdFlXbHVJam9nSW1wekwybHVaR1Y0TG1weklnMEtmUTBLJw0KICAgIH0sDQogICAgew0KICAgICAgICBuYW1lOiAnaW5kZXguanMnLA0KICAgICAgICBwYXRoOiBleHBvcnRzLmpzLA0KICAgICAgICBiYXNlNjQ6ICdZMjl1YzNRZ2V5Qm5jbVZsZEdsdVp5QjlJRDBnY21WeGRXbHlaU2duTGk5dGIyUjFiR1Z6TDJkeVpXVjBMbXB6SnlrN0RRb05DbU52Ym5OdmJHVXViRzluS0dkeVpXVjBhVzVuS1RzPScNCiAgICB9LA0KICAgIHsNCiAgICAgICAgbmFtZTogJ2dyZWV0LmpzJywNCiAgICAgICAgcGF0aDogZXhwb3J0cy5qc19tb2R1bGVzLA0KICAgICAgICBiYXNlNjQ6ICdaWGh3YjNKMGN5NW5jbVZsZEdsdVp5QTlJQ2RJWld4c2J5d2dWMjl5YkdRaEp6cz0nDQogICAgfQ0KXTs=",
"App Boilerplate 2": "Y29uc3QgeyBqb2luIH0gPSByZXF1aXJlKCdwYXRoJyk7DQoNCmV4cG9ydHMuanMgPSAnanMnOw0KZXhwb3J0cy5qc19tb2R1bGVzID0gam9pbihleHBvcnRzLmpzLCAnbW9kdWxlcycpOw0KDQpleHBvcnRzLmxvZ3MgPSAnbG9ncyc7DQoNCmV4cG9ydHMuX2ZpbGVzID0gWw0KICAgIHsNCiAgICAgICAgbmFtZTogJ3BhY2thZ2UuanNvbicsDQogICAgICAgIHBhdGg6IGpvaW4ocHJvY2Vzcy5jd2QoKSksDQogICAgICAgIGJhc2U2NDogJ2V3b2dJQ0p1WVcxbElqb2dJaUlzQ2lBZ0luWmxjbk5wYjI0aU9pQWlNQzR3TGpBaUxBb2dJQ0p0WVdsdUlqb2dJbXB6TDJGd2NDNXFjeUlzQ2lBZ0ltUmxjR1Z1WkdWdVkybGxjeUk2SUhzS0lDQWdJQ0ppZFc1NVlXNGlPaUFpWGpFdU9DNHhNaUlzQ2lBZ0lDQWlZblZ1ZVdGdUxYQnlaWFIwZVhOMGNtVmhiU0k2SUNKZU1DNHhMak1pQ2lBZ2ZTd0tJQ0FpWkdWMlJHVndaVzVrWlc1amFXVnpJam9nZTMwc0NpQWdJbUYxZEdodmNpSTZJQ0pHdzdaU1ZtRnBVeUE4Wm05eWRtRnBjMEJ1WldKMWJHOTFjeTV3ZHo0aUxBb2dJQ0pzYVdObGJuTmxJam9nSWtsVFF5SUtmUW89Jw0KICAgIH0sDQogICAgew0KICAgICAgICBuYW1lOiAnY29uZmlnLmpzJywNCiAgICAgICAgcGF0aDogam9pbihwcm9jZXNzLmN3ZCgpKSwNCiAgICAgICAgYmFzZTY0OiAnWTI5dWMzUWdjR0YwYUNBOUlISmxjWFZwY21Vb0ozQmhkR2duS1RzTkNtTnZibk4wSUhzZ2JtRnRaU0I5SUQwZ2NtVnhkV2x5WlNnbkxpOXdZV05yWVdkbExtcHpiMjRuS1RzTkNnMEtZMjl1YzNRZ1luVnVlV0Z1SUQwZ2NtVnhkV2x5WlNnblluVnVlV0Z1SnlrN0RRcGpiMjV6ZENCd2NtVjBkSGxUZEdSUGRYUWdQU0J1WlhjZ0tISmxjWFZwY21Vb0oySjFibmxoYmkxd2NtVjBkSGx6ZEhKbFlXMG5LU2tvS1RzTkNuQnlaWFIwZVZOMFpFOTFkQzV3YVhCbEtIQnliMk5sYzNNdWMzUmtiM1YwS1RzTkNnMEtaWGh3YjNKMGN5NXliMjkwSUQwZ2NHRjBhQzVxYjJsdUtIQnliMk5sYzNNdVkzZGtLQ2twT3cwS1pYaHdiM0owY3k1bWIyeGtaWEp6SUQwZ2NtVnhkV2x5WlNnbkxpOW1iMnhrWlhKekxtcHpKeWs3RFFvTkNtVjRjRzl5ZEhNdWJHOW5aMlZ5SUQwZ1luVnVlV0Z1TG1OeVpXRjBaVXh2WjJkbGNpaDdEUW9nSUNBZ2JtRnRaU3dOQ2lBZ0lDQnpkSEpsWVcxek9pQmJleUIwZVhCbE9pQW5jbUYzSnl3Z2MzUnlaV0Z0T2lCd2NtVjBkSGxUZEdSUGRYUWdmU3dnZXlCd1lYUm9PaUJ3WVhSb0xtcHZhVzRvWlhod2IzSjBjeTVtYjJ4a1pYSnpMbXh2WjNNc0lHQWtleWh1WlhjZ1JHRjBaU2dwS1M1blpYUlVhVzFsS0NsOUxteHZaMkFwSUgxZExBMEtJQ0FnSUhObGNtbGhiR2w2WlhKek9pQmlkVzU1WVc0dWMzUmtVMlZ5YVdGc2FYcGxjbk1OQ24wcE93PT0nDQogICAgfSwNCiAgICB7DQogICAgICAgIG5hbWU6ICdhcHAuanMnLA0KICAgICAgICBwYXRoOiBleHBvcnRzLmpzLA0KICAgICAgICBiYXNlNjQ6ICdZMjl1YzNRZ1kyOXVabWxuSUQwZ2NtVnhkV2x5WlNnbkxpNHZZMjl1Wm1sbkxtcHpKeWs3RFFwamIyNXpkQ0I3SUd4dloyZGxjaUI5SUQwZ1kyOXVabWxuT3c9PScNCiAgICB9DQpdOw=="
}${HOME}/.boiler-gen-config
{
"template-filename": "folders.js",
"presets": {
"App Boilerplate 1": "Y29uc3QgeyBqb2luIH0gPSByZXF1aXJlKCdwYXRoJyk7DQoNCmV4cG9ydHMuanMgPSAnanMnOw0KZXhwb3J0cy5qc19tb2R1bGVzID0gam9pbihleHBvcnRzLmpzLCAnbW9kdWxlcycpOw0KDQpleHBvcnRzLl9maWxlcyA9IFsNCiAgICB7DQogICAgICAgIG5hbWU6ICdwYWNrYWdlLmpzb24nLA0KICAgICAgICBwYXRoOiBqb2luKHByb2Nlc3MuY3dkKCkpLA0KICAgICAgICBiYXNlNjQ6ICdldzBLSUNBaWJtRnRaU0k2SUNKbWFYSnpkQzEwYVcxbExXSnZhV3hsY25Cc1lYUmxMV2RsYm1WeVlYUnZjaTFpZFdsc1pDSXNEUW9nSUNKdFlXbHVJam9nSW1wekwybHVaR1Y0TG1weklnMEtmUTBLJw0KICAgIH0sDQogICAgew0KICAgICAgICBuYW1lOiAnaW5kZXguanMnLA0KICAgICAgICBwYXRoOiBleHBvcnRzLmpzLA0KICAgICAgICBiYXNlNjQ6ICdZMjl1YzNRZ2V5Qm5jbVZsZEdsdVp5QjlJRDBnY21WeGRXbHlaU2duTGk5dGIyUjFiR1Z6TDJkeVpXVjBMbXB6SnlrN0RRb05DbU52Ym5OdmJHVXViRzluS0dkeVpXVjBhVzVuS1RzPScNCiAgICB9LA0KICAgIHsNCiAgICAgICAgbmFtZTogJ2dyZWV0LmpzJywNCiAgICAgICAgcGF0aDogZXhwb3J0cy5qc19tb2R1bGVzLA0KICAgICAgICBiYXNlNjQ6ICdaWGh3YjNKMGN5NW5jbVZsZEdsdVp5QTlJQ2RJWld4c2J5d2dWMjl5YkdRaEp6cz0nDQogICAgfQ0KXTs=",
"App Boilerplate 2": "Y29uc3QgeyBqb2luIH0gPSByZXF1aXJlKCdwYXRoJyk7DQoNCmV4cG9ydHMuanMgPSAnanMnOw0KZXhwb3J0cy5qc19tb2R1bGVzID0gam9pbihleHBvcnRzLmpzLCAnbW9kdWxlcycpOw0KDQpleHBvcnRzLmxvZ3MgPSAnbG9ncyc7DQoNCmV4cG9ydHMuX2ZpbGVzID0gWw0KICAgIHsNCiAgICAgICAgbmFtZTogJ3BhY2thZ2UuanNvbicsDQogICAgICAgIHBhdGg6IGpvaW4ocHJvY2Vzcy5jd2QoKSksDQogICAgICAgIGJhc2U2NDogJ2V3b2dJQ0p1WVcxbElqb2dJaUlzQ2lBZ0luWmxjbk5wYjI0aU9pQWlNQzR3TGpBaUxBb2dJQ0p0WVdsdUlqb2dJbXB6TDJGd2NDNXFjeUlzQ2lBZ0ltUmxjR1Z1WkdWdVkybGxjeUk2SUhzS0lDQWdJQ0ppZFc1NVlXNGlPaUFpWGpFdU9DNHhNaUlzQ2lBZ0lDQWlZblZ1ZVdGdUxYQnlaWFIwZVhOMGNtVmhiU0k2SUNKZU1DNHhMak1pQ2lBZ2ZTd0tJQ0FpWkdWMlJHVndaVzVrWlc1amFXVnpJam9nZTMwc0NpQWdJbUYxZEdodmNpSTZJQ0pHdzdaU1ZtRnBVeUE4Wm05eWRtRnBjMEJ1WldKMWJHOTFjeTV3ZHo0aUxBb2dJQ0pzYVdObGJuTmxJam9nSWtsVFF5SUtmUW89Jw0KICAgIH0sDQogICAgew0KICAgICAgICBuYW1lOiAnY29uZmlnLmpzJywNCiAgICAgICAgcGF0aDogam9pbihwcm9jZXNzLmN3ZCgpKSwNCiAgICAgICAgYmFzZTY0OiAnWTI5dWMzUWdjR0YwYUNBOUlISmxjWFZwY21Vb0ozQmhkR2duS1RzTkNtTnZibk4wSUhzZ2JtRnRaU0I5SUQwZ2NtVnhkV2x5WlNnbkxpOXdZV05yWVdkbExtcHpiMjRuS1RzTkNnMEtZMjl1YzNRZ1luVnVlV0Z1SUQwZ2NtVnhkV2x5WlNnblluVnVlV0Z1SnlrN0RRcGpiMjV6ZENCd2NtVjBkSGxUZEdSUGRYUWdQU0J1WlhjZ0tISmxjWFZwY21Vb0oySjFibmxoYmkxd2NtVjBkSGx6ZEhKbFlXMG5LU2tvS1RzTkNuQnlaWFIwZVZOMFpFOTFkQzV3YVhCbEtIQnliMk5sYzNNdWMzUmtiM1YwS1RzTkNnMEtaWGh3YjNKMGN5NXliMjkwSUQwZ2NHRjBhQzVxYjJsdUtIQnliMk5sYzNNdVkzZGtLQ2twT3cwS1pYaHdiM0owY3k1bWIyeGtaWEp6SUQwZ2NtVnhkV2x5WlNnbkxpOW1iMnhrWlhKekxtcHpKeWs3RFFvTkNtVjRjRzl5ZEhNdWJHOW5aMlZ5SUQwZ1luVnVlV0Z1TG1OeVpXRjBaVXh2WjJkbGNpaDdEUW9nSUNBZ2JtRnRaU3dOQ2lBZ0lDQnpkSEpsWVcxek9pQmJleUIwZVhCbE9pQW5jbUYzSnl3Z2MzUnlaV0Z0T2lCd2NtVjBkSGxUZEdSUGRYUWdmU3dnZXlCd1lYUm9PaUJ3WVhSb0xtcHZhVzRvWlhod2IzSjBjeTVtYjJ4a1pYSnpMbXh2WjNNc0lHQWtleWh1WlhjZ1JHRjBaU2dwS1M1blpYUlVhVzFsS0NsOUxteHZaMkFwSUgxZExBMEtJQ0FnSUhObGNtbGhiR2w2WlhKek9pQmlkVzU1WVc0dWMzUmtVMlZ5YVdGc2FYcGxjbk1OQ24wcE93PT0nDQogICAgfSwNCiAgICB7DQogICAgICAgIG5hbWU6ICdhcHAuanMnLA0KICAgICAgICBwYXRoOiBleHBvcnRzLmpzLA0KICAgICAgICBiYXNlNjQ6ICdZMjl1YzNRZ1kyOXVabWxuSUQwZ2NtVnhkV2x5WlNnbkxpNHZZMjl1Wm1sbkxtcHpKeWs3RFFwamIyNXpkQ0I3SUd4dloyZGxjaUI5SUQwZ1kyOXVabWxuT3c9PScNCiAgICB9DQpdOw=="
}
}Usage
Presets
Generate a saved preset inside your ~/.boiler-gen-config (or Windows: C:\Users\${user}\.boiler-gen-config)
presets and preset are the same command
Build a preset with it's id
boiler presets [preset_id]Display a list of your presets
boiler presetsGenerate a preset without the accompanying template file
boiler presets [preset_id] (-n|--notemplate)Build From Hash
Build a preset directly from a hash
boiler build (-H|--hash) <base64_hash>Build From File
Build a preset from a hash saved inside a file
boiler build (-f|--file) <filepath>Rebuild
Rebuild your boilerplate structure from your template file
boiler rebuildMisc
A preset hash is a BASE64 encoded template file.
Things to know
- Folders don't need to have any special format, they can just be string literals such as
js/modules - Must have an
exports._filesarray.- Each file object must contain
name,path, andbase64. - Paths don't have to be defined in the template file but they must exist.
- Each file object must contain
EXAMPLE
const { join } = require('path');
exports.js = 'js';
exports.js_modules = join(exports.js, 'modules');
exports._files = [
{
name: 'package.json',
path: join(process.cwd()),
base64: 'ew0KICAibmFtZSI6ICJmaXJzdC10aW1lLWJvaWxlcnBsYXRlLWdlbmVyYXRvci1idWlsZCIsDQogICJtYWluIjogImpzL2luZGV4LmpzIg0KfQ0K'
},
{
name: 'index.js',
path: exports.js,
base64: 'Y29uc3QgeyBncmVldGluZyB9ID0gcmVxdWlyZSgnLi9tb2R1bGVzL2dyZWV0LmpzJyk7DQoNCmNvbnNvbGUubG9nKGdyZWV0aW5nKTs='
},
{
name: 'greet.js',
path: exports.js_modules,
base64: 'ZXhwb3J0cy5ncmVldGluZyA9ICdIZWxsbywgV29ybGQhJzs='
}
];The BASE64 hash for this file would be:
Y29uc3QgeyBqb2luIH0gPSByZXF1aXJlKCdwYXRoJyk7DQoNCmV4cG9ydHMuanMgPSAnanMnOw0KZXhwb3J0cy5qc19tb2R1bGVzID0gam9pbihleHBvcnRzLmpzLCAnbW9kdWxlcycpOw0KDQpleHBvcnRzLl9maWxlcyA9IFsNCiAgICB7DQogICAgICAgIG5hbWU6ICdwYWNrYWdlLmpzb24nLA0KICAgICAgICBwYXRoOiBqb2luKHByb2Nlc3MuY3dkKCkpLA0KICAgICAgICBiYXNlNjQ6ICdldzBLSUNBaWJtRnRaU0k2SUNKbWFYSnpkQzEwYVcxbExXSnZhV3hsY25Cc1lYUmxMV2RsYm1WeVlYUnZjaTFpZFdsc1pDSXNEUW9nSUNKdFlXbHVJam9nSW1wekwybHVaR1Y0TG1weklnMEtmUTBLJw0KICAgIH0sDQogICAgew0KICAgICAgICBuYW1lOiAnaW5kZXguanMnLA0KICAgICAgICBwYXRoOiBleHBvcnRzLmpzLA0KICAgICAgICBiYXNlNjQ6ICdZMjl1YzNRZ2V5Qm5jbVZsZEdsdVp5QjlJRDBnY21WeGRXbHlaU2duTGk5dGIyUjFiR1Z6TDJkeVpXVjBMbXB6SnlrN0RRb05DbU52Ym5OdmJHVXViRzluS0dkeVpXVjBhVzVuS1RzPScNCiAgICB9LA0KICAgIHsNCiAgICAgICAgbmFtZTogJ2dyZWV0LmpzJywNCiAgICAgICAgcGF0aDogZXhwb3J0cy5qc19tb2R1bGVzLA0KICAgICAgICBiYXNlNjQ6ICdaWGh3YjNKMGN5NW5jbVZsZEdsdVp5QTlJQ2RJWld4c2J5d2dWMjl5YkdRaEp6cz0nDQogICAgfQ0KXTs=