-
Notifications
You must be signed in to change notification settings - Fork 0
/
deploy.js
144 lines (119 loc) · 4.31 KB
/
deploy.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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// @ts-check
const replace = require('replace-in-file');
const { join } = require('path');
const { renameSync, writeFileSync } = require('fs');
const { exec } = require('child_process');
console.warn('deploying php into html');
const distFolder = join(__dirname, 'dist');
const configFile = join(distFolder, 'config.json');
const htmlFile = join(distFolder, 'index.html');
const htaccessFile = join(distFolder, '.htaccess');
try {
exec('git rev-parse --short HEAD', (_err, stdout) => {
const rev = stdout.replace('\n', '');
writeFileSync(
configFile,
JSON.stringify(
{
name: 'Dobrunia Design',
revision: 'dobrunia-' + rev,
domain: 'dobruniadesign.com',
},
null,
2
)
);
console.log('config ok');
const options = {
files: htmlFile,
from: '<!-- SSRFunctions -->',
to: `
<?php
function get(){
$request = $_SERVER['REQUEST_URI'];
if($request == '/home' || $request == '/blog'){
$request = '/';
}
$request = rtrim($request, '/');
if(strpos($request, '/page') !== false || strpos($request, '/projet') !== false){
$request .= '/';
}
$url = "https://base.dobruniadesign.com" . $request;
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$response = curl_exec($ch);
return json_decode($response);
}
function ogFor($title, $url, $description, $image){
return <<<EOD
<title>$title</title>
<meta property='og:title' content="$title" />
<meta property='og:url' content="$url" />
<meta name='description' content="$description" />
<meta property='og:type' content="website" />
<meta property='og:image' content="$image" />
EOD;
}
$response = get();
$title = $response->title;
$description = $response->description;
$image = $response->image;
$url = $response->url;
if(strpos($title, '404') !== false){
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
}
if($response == null || $url == false){
$title = 'Dobrunia Design';
$description = "Décoration d'intérieur, création d'objet - les créations de Dobromila Golowacz";
$image = 'https://base.dobruniadesign.com/wp-content/uploads/2019/10/cropped-logo-fasada-bis.jpg';
$url = 'https://www.dobruniadesign.com' . $_SERVER['REQUEST_URI'];
}
?>
`,
};
replace.sync(options);
console.log('replaced functions');
options.from = '<!-- SSRHead -->';
options.to = '<?= ogFor($title, $url, $description, $image); ?>';
replace.sync(options);
console.log('replaced head');
options.from = '<!-- SSRPayload -->';
options.to = '';
replace.sync(options);
console.log('replaced payload');
const newFile = htmlFile.replace('.html', '.php');
renameSync(htmlFile, newFile);
console.log('Rename ok');
});
writeFileSync(
htaccessFile,
`
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php [QSA,L]
## EXPIRES HEADER CACHING ##
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType image/svg "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType application/javascript "access 1 month"
ExpiresByType application/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
## EXPIRES HEADER CACHING ##
`
);
console.log('htaccess ok');
} catch (err) {
throw new Error('error during deploy' + err ? err.message : err);
}