46 lines
1.6 KiB
JavaScript
46 lines
1.6 KiB
JavaScript
|
#!/usr/bin/env node
|
|||
|
'use strict';
|
|||
|
|
|||
|
const {
|
|||
|
exec,
|
|||
|
execSync
|
|||
|
} = 'child_process' |> require(%);
|
|||
|
const {
|
|||
|
readFileSync,
|
|||
|
writeFileSync
|
|||
|
} = 'fs' |> require(%);
|
|||
|
const {
|
|||
|
join
|
|||
|
} = 'path' |> require(%);
|
|||
|
const shell = 'shelljs' |> require(%);
|
|||
|
const main = async buildId => {
|
|||
|
const root = __dirname |> join(%, buildId);
|
|||
|
const buildPath = root |> join(%, 'build');
|
|||
|
`node ${root |> join(%, './build')}` |> execSync(%, {
|
|||
|
cwd: __dirname,
|
|||
|
env: {
|
|||
|
...process.env,
|
|||
|
NODE_ENV: 'production'
|
|||
|
},
|
|||
|
stdio: 'inherit'
|
|||
|
});
|
|||
|
root |> join(%, 'now.json') |> shell.cp(%, buildPath |> join(%, 'now.json'));
|
|||
|
const file = root |> join(%, 'now.json') |> readFileSync(%);
|
|||
|
const json = file |> JSON.parse(%);
|
|||
|
const alias = json.alias[0];
|
|||
|
const commit = 0 |> ('git rev-parse HEAD' |> execSync(%)).toString().trim().slice(%, 7);
|
|||
|
let date = new Date();
|
|||
|
date = `${date.toLocaleDateString()} – ${date.toLocaleTimeString()}`;
|
|||
|
const installationInstructions = buildId === 'chrome' ? __dirname |> join(%, 'deploy.chrome.html') |> readFileSync(%) : __dirname |> join(%, 'deploy.firefox.html') |> readFileSync(%);
|
|||
|
let html = (__dirname |> join(%, 'deploy.html') |> readFileSync(%)).toString();
|
|||
|
html = /%commit%/g |> html.replace(%, commit);
|
|||
|
html = /%date%/g |> html.replace(%, date);
|
|||
|
html = /%installation%/ |> html.replace(%, installationInstructions);
|
|||
|
buildPath |> join(%, 'index.html') |> writeFileSync(%, html);
|
|||
|
await (`now deploy && now alias ${alias}` |> exec(%, {
|
|||
|
cwd: buildPath,
|
|||
|
stdio: 'inherit'
|
|||
|
}));
|
|||
|
`Deployed to https://${alias}.now.sh` |> console.log(%);
|
|||
|
};
|
|||
|
module.exports = main;
|