Skip to content

Commit 4345d2e

Browse files
author
Celso Wo
committed
Added ejs template engine
1 parent f8f9bec commit 4345d2e

File tree

6 files changed

+107
-54
lines changed

6 files changed

+107
-54
lines changed

.npmignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.vscode
2+
.editorconfig

.vscode/settings.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

README.md

+15
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
11
# Lazy
2+
## A command line scaffolding engine for any kind of project
23

34
![N|Solid](https://s8.postimg.org/4phfkfpqd/sloth_576521_320_2.png)
5+
6+
## Installation
7+
8+
```sh
9+
$ npm install -g lazy
10+
```
11+
12+
## Usage
13+
14+
```sh
15+
# go to your project, then execute lazy init
16+
lazy init
17+
lazy generate sample Test
18+
```

lazy-generate.js

+21-4
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,19 @@
44

55
'use strict';
66

7+
const consolidate = require('consolidate');
78
const fs = require('fs');
89
const program = require('commander');
910
const cwd = process.cwd();
1011

1112
console.log('\n lazy generate\n');
1213

14+
if (!fs.existsSync(`${cwd}/.lazy`)) {
15+
console.log(` Lazy project folder not found, please execute: lazy init`);
16+
process.exit(1);
17+
}
18+
const lazySettings = JSON.parse(fs.readFileSync(`${cwd}/.lazy/lazy-settings.json`));
19+
1320
program.parse(process.argv);
1421

1522
if (!program.args.length) {
@@ -49,17 +56,27 @@ for (let file in templateSettings.outputs) {
4956

5057
console.log(` Creating ${file} to ${output}`);
5158

52-
let path = cwd;
59+
let path = '';
5360
let directories = output.split("/");
5461
directories.slice(0, directories.length - 1).forEach(directory => {
55-
path += "/" + directory;
62+
if (path.length > 0) {
63+
path += "/";
64+
}
65+
path += directory;
5666

57-
if (!fs.existsSync(path)) {
67+
if (!fs.existsSync(`${cwd}/${path}`)) {
5868
fs.mkdirSync(path);
5969
}
6070
});
6171

62-
fs.createReadStream(`${templatePath}/${file}`).pipe(fs.createWriteStream(`${cwd}/${output}`));
72+
let templateParams = Object.assign({path}, inputs);
73+
consolidate[lazySettings.engine](`${templatePath}/${file}`, templateParams, (err, result) => {
74+
if (err) throw err;
75+
76+
let outputFile = fs.openSync(`${cwd}/${output}`, 'w');
77+
fs.writeSync(outputFile, result);
78+
fs.closeSync(outputFile);
79+
});
6380
}
6481

6582

lazy-init.js

+62-46
Original file line numberDiff line numberDiff line change
@@ -10,54 +10,70 @@ console.log("\n lazy init");
1010

1111
if (fs.existsSync(`${cwd}/.lazy`)) {
1212
console.log(`\n Lazy project folder found, it doesn't need to initialize a new one.`);
13-
} else {
14-
console.log(`\n Creating lazy project folder...`);
15-
fs.mkdirSync(`${cwd}/.lazy`);
16-
17-
console.log(` Creating settings file...`);
18-
var fd = fs.openSync(`${cwd}/.lazy/lazy-settings.json`, 'w');
19-
fs.writeSync(fd, "{");
20-
fs.writeSync(fd, "\n");
21-
fs.writeSync(fd, "}");
22-
fs.closeSync(fd);
23-
24-
console.log("\n Creating sample template");
25-
fs.mkdirSync(`${cwd}/.lazy/templates`);
26-
fs.mkdirSync(`${cwd}/.lazy/templates/sample`);
27-
fd = fs.openSync(`${cwd}/.lazy/templates/sample/template-settings.json`, 'w');
28-
fs.writeSync(fd, '{\n');
29-
fs.writeSync(fd, ' "inputs": ["filename"],\n');
30-
fs.writeSync(fd, ' "outputs": {\n');
31-
fs.writeSync(fd, ' "express.js": "outputFolder/%{filename}_express.js"\n');
32-
fs.writeSync(fd, ' }\n');
33-
fs.writeSync(fd, '}\n');
34-
fs.closeSync(fd);
35-
36-
fd = fs.openSync(`${cwd}/.lazy/templates/sample/express.js`, 'w');
37-
fs.writeSync(fd, "var express = require('express');\n");
38-
fs.writeSync(fd, "var app = express();\n");
39-
fs.writeSync(fd, "app.get('/', function (req, res) {\n");
40-
fs.writeSync(fd, " res.send('hello world');\n");
41-
fs.writeSync(fd, "});\n");
42-
fs.closeSync(fd);
43-
44-
console.log(`\n Completed!`);
13+
process.exit(0);
4514
}
4615

47-
// program
48-
// .option('-f, --force', 'force installation')
49-
// .parse(process.argv);
16+
console.log(`\n Creating lazy project folder...`);
17+
fs.mkdirSync(`${cwd}/.lazy`);
5018

51-
// var pkgs = program.args;
19+
console.log(` Creating settings file...`);
20+
var fd = fs.openSync(`${cwd}/.lazy/lazy-settings.json`, 'w');
21+
fs.writeSync(fd, '{');
22+
fs.writeSync(fd, ' "engine": "ejs"');
23+
fs.writeSync(fd, '}');
24+
fs.closeSync(fd);
5225

53-
// if (!pkgs.length) {
54-
// console.error('packages required');
55-
// process.exit(1);
56-
// }
26+
console.log("\n Creating sample template");
27+
fs.mkdirSync(`${cwd}/.lazy/templates`);
28+
fs.mkdirSync(`${cwd}/.lazy/templates/sample`);
29+
fd = fs.openSync(`${cwd}/.lazy/templates/sample/template-settings.json`, 'w');
30+
fs.writeSync(fd, '{\n');
31+
fs.writeSync(fd, ' "inputs": ["entity"],\n');
32+
fs.writeSync(fd, ' "outputs": {\n');
33+
fs.writeSync(fd, ' "entity.ejs": "output/entity/%{entity}.java",\n');
34+
fs.writeSync(fd, ' "repository.ejs": "output/repository/%{entity}Repository.java"\n');
35+
fs.writeSync(fd, ' }\n');
36+
fs.writeSync(fd, '}\n');
37+
fs.closeSync(fd);
5738

58-
// console.log();
59-
// if (program.force) console.log(' force: install');
60-
// pkgs.forEach(function(pkg){
61-
// console.log(' install : %s', pkg);
62-
// });
63-
// console.log();
39+
fd = fs.openSync(`${cwd}/.lazy/templates/sample/entity.ejs`, 'w');
40+
fs.writeSync(fd, `package <%= path.replace(/\\//, '.') %>\n`);
41+
fs.writeSync(fd, `\n`);
42+
fs.writeSync(fd, `import javax.persistence.Column;\n`);
43+
fs.writeSync(fd, `import javax.persistence.Entity;\n`);
44+
fs.writeSync(fd, `import javax.persistence.GeneratedValue;\n`);
45+
fs.writeSync(fd, `import javax.persistence.Id;\n`);
46+
fs.writeSync(fd, `import javax.persistence.Table;\n`);
47+
fs.writeSync(fd, `\n`);
48+
fs.writeSync(fd, `@Entity\n`);
49+
fs.writeSync(fd, `@Table(name = "<%= entity.toUpperCase() %>")\n`);
50+
fs.writeSync(fd, `public class <%= entity %> {\n`);
51+
fs.writeSync(fd, `\n`);
52+
fs.writeSync(fd, ` @Id\n`);
53+
fs.writeSync(fd, ` @GeneratedValue\n`);
54+
fs.writeSync(fd, ` @Column(name = "ID")\n`);
55+
fs.writeSync(fd, ` private Long id;\n`);
56+
fs.writeSync(fd, `\n`);
57+
fs.writeSync(fd, ` public <%= entity %>() {\n`);
58+
fs.writeSync(fd, ` // Default Constructor\n`);
59+
fs.writeSync(fd, ` }\n`);
60+
fs.writeSync(fd, `\n`);
61+
fs.writeSync(fd, ` public Long getId() {\n`);
62+
fs.writeSync(fd, ` return id;\n`);
63+
fs.writeSync(fd, ` }\n`);
64+
fs.writeSync(fd, `\n`);
65+
fs.writeSync(fd, ` public void setId(Long id) {\n`);
66+
fs.writeSync(fd, ` this.id = id;\n`);
67+
fs.writeSync(fd, ` }\n`);
68+
fs.writeSync(fd, `}\n`);
69+
fs.closeSync(fd);
70+
71+
fd = fs.openSync(`${cwd}/.lazy/templates/sample/repository.ejs`, 'w');
72+
fs.writeSync(fd, `package <%= path.replace(/\\//, '.') %>\n`);
73+
fs.writeSync(fd, `\n`);
74+
fs.writeSync(fd, `public interface <%= entity %>Repository {\n`);
75+
fs.writeSync(fd, `\n`);
76+
fs.writeSync(fd, `}\n`);
77+
fs.closeSync(fd);
78+
79+
console.log(`\n Completed!`);

package.json

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"name": "lazy",
3-
"version": "0.0.1",
4-
"description": "Command Line Interface for lazy developers",
2+
"name": "lazy-scaffolding",
3+
"version": "0.1.0",
4+
"description": "A command line scaffolding engine for any kind of project",
55
"main": "index.js",
66
"bin": {
77
"lazy": "./lazy.js"
@@ -20,6 +20,8 @@
2020
},
2121
"homepage": "https://github.com/celso-wo/lazy#readme",
2222
"dependencies": {
23-
"commander": "^2.9.0"
23+
"commander": "^2.9.0",
24+
"consolidate": "^0.14.5",
25+
"ejs": "^2.5.6"
2426
}
2527
}

0 commit comments

Comments
 (0)