forked from versatica/mediasoup-website
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
123 lines (103 loc) · 2.96 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
123
const path = require('path');
const fs = require('fs');
const del = require('del');
const gulp = require('gulp');
const rename = require('gulp-rename');
const shell = require('gulp-shell');
const replace = require('gulp-replace');
const sitemap = require('gulp-sitemap');
const browserify = require('browserify');
const stream = require('vinyl-source-stream');
const buffer = require('vinyl-buffer');
const uglify = require('gulp-uglify-es').default;
const Octokit = require('@octokit/rest');
const rsync = require('rsyncwrapper');
const pkg = require('./package.json');
const octokit = Octokit();
gulp.task('clean', () =>
{
return del([ '_site', '.sass-cache' ], { force: true });
});
gulp.task('browserify', () =>
{
return browserify([path.join(__dirname, pkg.main)])
.bundle()
.pipe(stream(pkg.name + '.js'))
.pipe(buffer())
.pipe(uglify())
.pipe(rename('site.js'))
.pipe(gulp.dest('./js/'));
});
gulp.task('jekyll:build', shell.task(
[ 'bundle exec jekyll build' ]
));
gulp.task('jekyll:watch', shell.task(
[ 'bundle exec jekyll serve --host 0.0.0.0' ]
));
gulp.task('shields', async () =>
{
let tags;
tags = await octokit.repos.listTags({ owner:'versatica', repo:'mediasoup' });
const mediasoupVersion = tags.data[0].name;
tags = await octokit.repos.listTags({ owner:'versatica', repo:'mediasoup-client' });
const mediasoupClientVersion = tags.data[0].name;
tags = await octokit.repos.listTags({ owner:'versatica', repo:'libmediasoupclient' });
const libmediasoupclientVersion = tags.data[0].name;
return gulp.src('_site/index.html')
.pipe(replace(
/__MEDIASOUP_VERSION_SHIELD__/g,
`https://img.shields.io/badge/mediasoup-v${mediasoupVersion}-blue.svg`
))
.pipe(replace(
/__MEDIASOUP_CLIENT_VERSION_SHIELD__/g,
`https://img.shields.io/badge/mediasoup--client-v${mediasoupClientVersion}-blue.svg`
))
.pipe(replace(
/__LIBMEDIASOUPCLIENT_VERSION_SHIELD__/g,
`https://img.shields.io/badge/libmediasoupclient-v${libmediasoupclientVersion}-blue.svg`
))
.pipe(gulp.dest('./_site'));
});
gulp.task('sitemap', () =>
{
return gulp.src('_site/**/*.html')
.pipe(sitemap({ siteUrl: pkg.homepage }))
.pipe(gulp.dest('./_site'));
});
gulp.task('rsync', (done) =>
{
const options =
{
src : './_site/',
dest : 'vhost1-deploy:/var/www/mediasoup.org/',
ssh : true,
recursive : true,
deleteAll : true,
args : [ '--no-perms' ],
onStdout : (data) =>
{
console.log(String(data));
},
onStderr : (data) =>
{
console.error(String(data));
}
};
rsync(options, (error, stdout, stderr, cmd) =>
{
if (!error)
{
console.log(cmd + ' succeeded');
done();
}
else
{
console.log(cmd + ' failed');
done(error);
}
});
});
gulp.task('build', gulp.series('clean', 'browserify', 'jekyll:build', 'shields', 'sitemap'));
gulp.task('live', gulp.series('clean', 'browserify', 'jekyll:watch', 'shields'));
gulp.task('deploy', gulp.series('build', 'rsync'));
gulp.task('default', gulp.series('build'));