parent
956e7b564c
commit
7ea3b6ca15
|
@ -1,15 +1,18 @@
|
||||||
const gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
const runSequence = require('run-sequence');
|
|
||||||
|
|
||||||
require('./clean');
|
require('./clean');
|
||||||
require('./copy');
|
require('./copy');
|
||||||
|
require('./webpack');
|
||||||
|
|
||||||
gulp.task('build', () => {
|
gulp.task('build',
|
||||||
return runSequence('clean', [
|
gulp.series('clean',
|
||||||
|
gulp.parallel(
|
||||||
'webpack',
|
'webpack',
|
||||||
'copyHtml',
|
'copyHtml',
|
||||||
'copyFonts',
|
'copyFonts',
|
||||||
'copyImages',
|
'copyImages',
|
||||||
'copyJs'
|
'copyJs'
|
||||||
]);
|
)
|
||||||
});
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
var path = require('path');
|
const path = require('path');
|
||||||
var gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
var print = require('gulp-print').default;
|
const print = require('gulp-print').default;
|
||||||
var cache = require('gulp-cached');
|
const cache = require('gulp-cached');
|
||||||
var livereload = require('gulp-livereload');
|
const flatten = require('gulp-flatten');
|
||||||
var paths = require('./helpers/paths.js');
|
const livereload = require('gulp-livereload');
|
||||||
|
const paths = require('./helpers/paths.js');
|
||||||
|
|
||||||
gulp.task('copyJs', () => {
|
gulp.task('copyJs', () => {
|
||||||
return gulp.src(
|
return gulp.src(
|
||||||
|
@ -12,6 +13,7 @@ gulp.task('copyJs', () => {
|
||||||
])
|
])
|
||||||
.pipe(cache('copyJs'))
|
.pipe(cache('copyJs'))
|
||||||
.pipe(print())
|
.pipe(print())
|
||||||
|
.pipe(flatten())
|
||||||
.pipe(gulp.dest(paths.dest.root))
|
.pipe(gulp.dest(paths.dest.root))
|
||||||
.pipe(livereload());
|
.pipe(livereload());
|
||||||
});
|
});
|
||||||
|
@ -30,7 +32,8 @@ gulp.task('copyFonts', () => {
|
||||||
)
|
)
|
||||||
.pipe(cache('copyFonts'))
|
.pipe(cache('copyFonts'))
|
||||||
.pipe(print())
|
.pipe(print())
|
||||||
.pipe(gulp.dest(paths.dest.fonts))
|
.pipe(flatten({ subPath: 2 }))
|
||||||
|
.pipe(gulp.dest(paths.dest.root))
|
||||||
.pipe(livereload());
|
.pipe(livereload());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -40,6 +43,7 @@ gulp.task('copyImages', () => {
|
||||||
)
|
)
|
||||||
.pipe(cache('copyImages'))
|
.pipe(cache('copyImages'))
|
||||||
.pipe(print())
|
.pipe(print())
|
||||||
.pipe(gulp.dest(paths.dest.images))
|
.pipe(flatten({ subPath: 2 }))
|
||||||
|
.pipe(gulp.dest(paths.dest.root))
|
||||||
.pipe(livereload());
|
.pipe(livereload());
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
require('./build.js');
|
require('./build.js');
|
||||||
require('./clean.js');
|
require('./clean.js');
|
||||||
require('./copy.js');
|
require('./copy.js');
|
||||||
require('./imageMin.js');
|
|
||||||
require('./start.js');
|
|
||||||
require('./stripBom.js');
|
|
||||||
require('./watch.js');
|
require('./watch.js');
|
||||||
require('./webpack.js');
|
require('./webpack.js');
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
const path = require('path');
|
|
||||||
const rootPath = path.resolve(__dirname + '/../../src/');
|
|
||||||
module.exports = function(source) {
|
|
||||||
if (this.cacheable) {
|
|
||||||
this.cacheable();
|
|
||||||
}
|
|
||||||
|
|
||||||
const resourcePath = this.resourcePath.replace(rootPath, '');
|
|
||||||
const wrappedSource =`
|
|
||||||
<!-- begin ${resourcePath} -->
|
|
||||||
${source}
|
|
||||||
<!-- end ${resourcePath} -->`;
|
|
||||||
|
|
||||||
return wrappedSource;
|
|
||||||
};
|
|
|
@ -3,11 +3,11 @@ const root = './frontend/src/';
|
||||||
const paths = {
|
const paths = {
|
||||||
src: {
|
src: {
|
||||||
root,
|
root,
|
||||||
html: root + '*.html',
|
html: `${root}*.html`,
|
||||||
scripts: root + '**/*.js',
|
scripts: `${root}**/*.js`,
|
||||||
content: root + 'Content/',
|
content: `${root}Content/`,
|
||||||
fonts: root + 'Content/Fonts/',
|
fonts: `${root}Content/Fonts/`,
|
||||||
images: root + 'Content/Images/',
|
images: `${root}Content/Images/`,
|
||||||
exclude: {
|
exclude: {
|
||||||
libs: `!${root}JsLibraries/**`
|
libs: `!${root}JsLibraries/**`
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
var gulp = require('gulp');
|
|
||||||
var print = require('gulp-print').default;
|
|
||||||
var paths = require('./helpers/paths.js');
|
|
||||||
|
|
||||||
gulp.task('imageMin', () => {
|
|
||||||
var imagemin = require('gulp-imagemin');
|
|
||||||
return gulp.src(paths.src.images)
|
|
||||||
.pipe(imagemin({
|
|
||||||
progressive: false,
|
|
||||||
optimizationLevel: 4,
|
|
||||||
svgoPlugins: [{ removeViewBox: false }]
|
|
||||||
}))
|
|
||||||
.pipe(print())
|
|
||||||
.pipe(gulp.dest(paths.src.content + 'Images/'));
|
|
||||||
});
|
|
|
@ -1,104 +0,0 @@
|
||||||
// will download and run sonarr (server) in a non-windows enviroment
|
|
||||||
// you can use this if you don't care about the server code and just want to work
|
|
||||||
// with the web code.
|
|
||||||
|
|
||||||
var http = require('http');
|
|
||||||
var gulp = require('gulp');
|
|
||||||
var fs = require('fs');
|
|
||||||
var targz = require('tar.gz');
|
|
||||||
var del = require('del');
|
|
||||||
var spawn = require('child_process').spawn;
|
|
||||||
|
|
||||||
function download(url, dest, cb) {
|
|
||||||
console.log('Downloading ' + url + ' to ' + dest);
|
|
||||||
var file = fs.createWriteStream(dest);
|
|
||||||
http.get(url, function(response) {
|
|
||||||
response.pipe(file);
|
|
||||||
file.on('finish', function() {
|
|
||||||
console.log('Download completed');
|
|
||||||
file.close(cb);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLatest(cb) {
|
|
||||||
var branch = 'develop';
|
|
||||||
process.argv.forEach(function(val) {
|
|
||||||
var branchMatch = /branch=([\S]*)/.exec(val);
|
|
||||||
if (branchMatch && branchMatch.length > 1) {
|
|
||||||
branch = branchMatch[1];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
var url = 'http://services.sonarr.tv/v1/update/' + branch + '?os=osx';
|
|
||||||
|
|
||||||
console.log('Checking for latest version:', url);
|
|
||||||
|
|
||||||
http.get(url, function(res) {
|
|
||||||
var data = '';
|
|
||||||
|
|
||||||
res.on('data', function(chunk) {
|
|
||||||
data += chunk;
|
|
||||||
});
|
|
||||||
|
|
||||||
res.on('end', function() {
|
|
||||||
var updatePackage = JSON.parse(data).updatePackage;
|
|
||||||
console.log('Latest version available: ' + updatePackage.version + ' Release Date: ' + updatePackage.releaseDate);
|
|
||||||
cb(updatePackage);
|
|
||||||
});
|
|
||||||
}).on('error', function(e) {
|
|
||||||
console.log('problem with request: ' + e.message);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function extract(source, dest, cb) {
|
|
||||||
console.log('extracting download page to ' + dest);
|
|
||||||
new targz().extract(source, dest, function(err) {
|
|
||||||
if (err) {
|
|
||||||
console.log(err);
|
|
||||||
}
|
|
||||||
console.log('Update package extracted.');
|
|
||||||
cb();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
gulp.task('getSonarr', function() {
|
|
||||||
try {
|
|
||||||
fs.mkdirSync('./_start/');
|
|
||||||
} catch (e) {
|
|
||||||
if (e.code !== 'EEXIST') {
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getLatest(function(updatePackage) {
|
|
||||||
var packagePath = './_start/' + updatePackage.filename;
|
|
||||||
var dirName = './_start/' + updatePackage.version;
|
|
||||||
download(updatePackage.url, packagePath, function() {
|
|
||||||
extract(packagePath, dirName, function() {
|
|
||||||
// clean old binaries
|
|
||||||
console.log('Cleaning old binaries');
|
|
||||||
del.sync(['./_output/*', '!./_output/UI/']);
|
|
||||||
console.log('copying binaries to target');
|
|
||||||
gulp.src(dirName + '/NzbDrone/*.*')
|
|
||||||
.pipe(gulp.dest('./_output/'));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task('startSonarr', function() {
|
|
||||||
var ls = spawn('mono', ['--debug', './_output/NzbDrone.exe']);
|
|
||||||
|
|
||||||
ls.stdout.on('data', function(data) {
|
|
||||||
process.stdout.write(data);
|
|
||||||
});
|
|
||||||
|
|
||||||
ls.stderr.on('data', function(data) {
|
|
||||||
process.stdout.write(data);
|
|
||||||
});
|
|
||||||
|
|
||||||
ls.on('close', function(code) {
|
|
||||||
console.log('child process exited with code ' + code);
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,13 +0,0 @@
|
||||||
const gulp = require('gulp');
|
|
||||||
const paths = require('./helpers/paths.js');
|
|
||||||
const stripbom = require('gulp-stripbom');
|
|
||||||
|
|
||||||
function stripBom(dest) {
|
|
||||||
gulp.src([paths.src.scripts, paths.src.exclude.libs])
|
|
||||||
.pipe(stripbom({ showLog: false }))
|
|
||||||
.pipe(gulp.dest(dest));
|
|
||||||
}
|
|
||||||
|
|
||||||
gulp.task('stripBom', () => {
|
|
||||||
stripBom(paths.src.root);
|
|
||||||
});
|
|
|
@ -1,27 +1,18 @@
|
||||||
const gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
const livereload = require('gulp-livereload');
|
const livereload = require('gulp-livereload');
|
||||||
const watch = require('gulp-watch');
|
const gulpWatch = require('gulp-watch');
|
||||||
const paths = require('./helpers/paths.js');
|
const paths = require('./helpers/paths.js');
|
||||||
|
|
||||||
require('./copy.js');
|
require('./copy.js');
|
||||||
require('./webpack.js');
|
require('./webpack.js');
|
||||||
|
|
||||||
function watchTask(glob, task) {
|
function watch() {
|
||||||
const options = {
|
|
||||||
name: `watch: ${task}`,
|
|
||||||
verbose: true
|
|
||||||
};
|
|
||||||
return watch(glob, options, () => {
|
|
||||||
gulp.start(task);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
gulp.task('watch', ['copyHtml', 'copyFonts', 'copyImages', 'copyJs'], () => {
|
|
||||||
livereload.listen({ start: true });
|
livereload.listen({ start: true });
|
||||||
|
|
||||||
gulp.start('webpackWatch');
|
gulp.task('webpackWatch')();
|
||||||
|
gulpWatch(paths.src.html, gulp.series('copyHtml'));
|
||||||
|
gulpWatch(`${paths.src.fonts}**/*.*`, gulp.series('copyFonts'));
|
||||||
|
gulpWatch(`${paths.src.images}**/*.*`, gulp.series('copyImages'));
|
||||||
|
}
|
||||||
|
|
||||||
watchTask(paths.src.html, 'copyHtml');
|
gulp.task('watch', gulp.series('build', watch));
|
||||||
watchTask(`${paths.src.fonts}**/*.*`, 'copyFonts');
|
|
||||||
watchTask(`${paths.src.images}**/*.*`, 'copyImages');
|
|
||||||
});
|
|
||||||
|
|
|
@ -169,17 +169,16 @@ const config = {
|
||||||
};
|
};
|
||||||
|
|
||||||
gulp.task('webpack', () => {
|
gulp.task('webpack', () => {
|
||||||
return gulp.src('index.js')
|
return webpackStream(config)
|
||||||
.pipe(webpackStream(config))
|
.pipe(gulp.dest('./'));
|
||||||
.pipe(gulp.dest(''));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('webpackWatch', () => {
|
gulp.task('webpackWatch', () => {
|
||||||
config.watch = true;
|
config.watch = true;
|
||||||
return gulp.src('')
|
|
||||||
.pipe(webpackStream(config))
|
return webpackStream(config)
|
||||||
.on('error', errorHandler)
|
.on('error', errorHandler)
|
||||||
.pipe(gulp.dest(''))
|
.pipe(gulp.dest('./'))
|
||||||
.on('error', errorHandler)
|
.on('error', errorHandler)
|
||||||
.pipe(livereload())
|
.pipe(livereload())
|
||||||
.on('error', errorHandler);
|
.on('error', errorHandler);
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "gulp build",
|
"build": "gulp build",
|
||||||
"start": "gulp watch",
|
"start": "gulp watch",
|
||||||
|
"watch": "gulp watch",
|
||||||
"eslint": "esprint check",
|
"eslint": "esprint check",
|
||||||
"eslint-fix": "eslint start --fix",
|
"eslint-fix": "eslint start --fix",
|
||||||
"stylelint": "stylelint frontend/**/*.css --config frontend/.stylelintrc"
|
"stylelint": "stylelint frontend/**/*.css --config frontend/.stylelintrc"
|
||||||
|
@ -54,15 +55,15 @@
|
||||||
"file-loader": "3.0.1",
|
"file-loader": "3.0.1",
|
||||||
"filesize": "4.1.2",
|
"filesize": "4.1.2",
|
||||||
"fuse.js": "3.4.2",
|
"fuse.js": "3.4.2",
|
||||||
"gulp": "3.9.1",
|
"gulp": "4.0.0",
|
||||||
"gulp-cached": "1.1.1",
|
"gulp-cached": "1.1.1",
|
||||||
"gulp-clean-css": "3.10.0",
|
|
||||||
"gulp-concat": "2.6.1",
|
"gulp-concat": "2.6.1",
|
||||||
"gulp-declare": "0.3.0",
|
"gulp-declare": "0.3.0",
|
||||||
"gulp-livereload": "4.0.0",
|
"gulp-flatten": "0.4.0",
|
||||||
|
"gulp-livereload": "4.0.1",
|
||||||
"gulp-postcss": "8.0.0",
|
"gulp-postcss": "8.0.0",
|
||||||
"gulp-print": "5.0.0",
|
"gulp-print": "5.0.0",
|
||||||
"gulp-sourcemaps": "2.6.4",
|
"gulp-sourcemaps": "2.6.5",
|
||||||
"gulp-stripbom": "1.0.4",
|
"gulp-stripbom": "1.0.4",
|
||||||
"gulp-util": "3.0.8",
|
"gulp-util": "3.0.8",
|
||||||
"gulp-watch": "5.0.1",
|
"gulp-watch": "5.0.1",
|
||||||
|
|
Loading…
Reference in New Issue