-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgulpfile.js
More file actions
100 lines (87 loc) · 2.83 KB
/
Copy pathgulpfile.js
File metadata and controls
100 lines (87 loc) · 2.83 KB
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
const { src, dest, series } = require('gulp');
const replace = require('gulp-replace');
const { argv } = require('yargs');
const { pascalCase, paramCase, snakeCase, capitalCase } = require("change-case");
const del = require('del');
const paths = [
'app/**/**',
'composer.json',
'package.json.stub',
'vite.config.js',
'index.php',
'functions.php',
'page.php',
'single.php',
'style.css',
'inc/**/**',
'helpers/helpers.php',
'tests/**/**'
];
const viewDirectories = [
'views/platine',
'views/blade',
'views/plates',
'views/twig'
];
const viewClasses = {
'platine': 'PlatineView',
'blade': 'BladeView',
'plates': 'PlatesView',
'twig': 'TwigView'
};
function swapNameStrings() {
let pascalName = pascalCase(argv.name);
let kebabName = paramCase(argv.name);
let snakeName = snakeCase(argv.name);
let titleName = capitalCase(argv.name);
return src(paths, { base: "./" })
.pipe(replace('ReplaceMe', pascalName))
.pipe(replace('replace-me', kebabName))
.pipe(replace('replace_me', snakeName))
.pipe(replace('Replace Me', titleName))
.pipe(dest('./'));
}
function swapVendorStrings() {
if (typeof argv.vendor === "undefined") {
argv.vendor = "App";
}
let pascalName = pascalCase(argv.vendor);
let kebabName = paramCase(argv.vendor);
return src(paths, { base: "./" })
.pipe(replace('VendorName', pascalName))
.pipe(replace('vendor-name', kebabName))
.pipe(dest('./'));
}
function bootstrapJs() {
return src('./node_modules/bootstrap/dist/js/bootstrap.bundle.min.js')
.pipe(dest('./assets/static/js'));
}
function bootstrapCss() {
return src('./node_modules/bootstrap/dist/css/bootstrap.min.css')
.pipe(dest('./assets/static/css'));
}
function multilevelJs() {
return src('./node_modules/bootstrap5-multi-level-dropdown/js/bootstrap5-multi-level-dropdown-browser.js').pipe(dest('./assets/static/js'));
}
function multilevelCss() {
return src('./node_modules/bootstrap5-multi-level-dropdown/css/bootstrap5-multi-level-dropdown-hover.css').pipe(dest('./assets/static/css'));
}
function copyViews() {
if (typeof argv.view === "undefined") {
argv.view = "platine";
}
// copy contents to /views/
return src('views/' + argv.view + '/**/**').pipe(dest('./views/'));
}
function deleteSourceViews() {
return del(viewDirectories);
}
function updateViewClass() {
if (typeof argv.view === "undefined") {
argv.view = "platine";
}
return src('./app/Core/View.php')
.pipe(replace('ViewClassGoesHere', viewClasses[argv.view]))
.pipe(dest('./app/Core/'));
}
exports.default = series(swapNameStrings, swapVendorStrings, bootstrapJs, bootstrapCss, multilevelJs, multilevelCss, copyViews, deleteSourceViews, updateViewClass);