-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
122 lines (108 loc) · 4.65 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
const gulp = require('gulp');
const gulpReplace = require('gulp-replace');
const gulpCopy = require('gulp-copy');
const gulpConcat = require('gulp-concat');
const gulpRename = require("gulp-rename");
const gulpInject = require('gulp-inject-string');
const args = require('yargs').argv;
const through = require('through2');
const settings =
{
preffix: '.js',
files: [
{
template: 'templates/repository_template.tpt',
dest: 'application/repository/'
},
{
template: 'templates/business_template.tpt',
dest: 'application/business/'
},
{
template: 'templates/route_template.tpt',
dest: 'application/routes/'
},
{
template: 'templates/model_template.tpt',
dest: 'application/model/'
},
{
template: 'templates/filter_template.tpt',
dest: 'application/filters/'
}
],
templateImport: function (file) {
var objectName = file.capitalizeFirstLetter();
return '{0}const {1} = require(\'../application/routes/{2}\');'.format('\n\t', objectName, file);
},
templateFilterImport: function (file) {
var objectName = file.capitalizeFirstLetter() + 'Filter';
return '{0}const {1} = require(\'../application/filters/{2}\');{3}'.format('\n\t', objectName, file, '\n');
},
templateInstance: function (file) {
var objectName = file.capitalizeFirstLetter();
return '{0}var {1} = new {2}();'.format('\n\t', file, objectName);
},
templateFilterInstance: function (file) {
var objectName = file.capitalizeFirstLetter() + 'Filter';
return '{0}var {1} = new {2}({3});'.format('\n\n\t', file + 'Filter', objectName, false);
},
templateRoutes: function (routeName, object) {
//comment
var divisor = '{0}//{1}'.format('\n\n\t\t', routeName);
//result
var result = divisor;
//routes
var tabSpace = '\n\t\t';
//filter
var filter = object + 'Filter';
var routes = [
//save
'{0}router.post(\'/{1}\', {3}.validateInsert.bind({3}), {2}.save.bind({2}));'.format(tabSpace, routeName, object, filter),
//update
'{0}router.put(\'/{1}/:id\', {3}.validateUpdate.bind({3}), {2}.update.bind({2}));'.format(tabSpace, routeName, object, filter),
//remove
'{0}router.delete(\'/{1}/:id\', {2}.removeById.bind({2}));'.format(tabSpace, routeName, object),
//findAll
'{0}router.get(\'/{1}\', {2}.findAll.bind({2}));'.format(tabSpace, routeName, object),
//findById
'{0}router.get(\'/{1}/:id\', {2}.findById.bind({2}));'.format(tabSpace, routeName, object),
//removeAll
'{0}router.delete(\'/{1}\', {2}.removeAll.bind({2}));'.format(tabSpace, routeName, object),
];
routes.forEach(function (element) {
result += element;
}, this);
return result;
}
}
gulp.task('naut-create', function () {
settings.files.forEach(function (element) {
gulp
.src(element.template)
.pipe(gulpReplace('NameFileReplace', args.file))
.pipe(gulpReplace('NameReplace', args.file.capitalizeFirstLetter()))
.pipe(gulpRename(args.file + settings.preffix))
.pipe(gulp.dest(element.dest));
}, this);
gulp
.src('configurations/routes.js')
.pipe(gulpInject.after('/**naut-file-import**/', settings.templateImport(args.file)))
.pipe(gulpInject.after('/**naut-file-import**/', settings.templateFilterImport(args.file)))
.pipe(gulpInject.after('/**naut-instance-object**/', settings.templateInstance(args.file)))
.pipe(gulpInject.after('/**naut-instance-object**/', settings.templateFilterInstance(args.file)))
.pipe(gulpInject.after('/**naut-routes**/', settings.templateRoutes(args.route, args.file)))
.pipe(gulp.dest('configurations/'));
});
String.prototype.capitalizeFirstLetter = function () {
var formatted = this;
return formatted.charAt(0).toUpperCase() + formatted.slice(1);
}
String.prototype.format = function () {
var formatted = this;
for (var i = 0; i < arguments.length; i++) {
var regex = new RegExp('\\{' + i + '}', 'gi');
formatted = formatted.replace(regex, arguments[i]);
}
return formatted;
}