]> source.dussan.org Git - vaadin-core.git/commitdiff
Enable deploying single elements
authorSauli Tähkäpää <sauli@vaadin.com>
Wed, 29 Mar 2017 15:38:50 +0000 (18:38 +0300)
committerSauli Tähkäpää <sauli@vaadin.com>
Wed, 29 Mar 2017 15:52:17 +0000 (18:52 +0300)
gulpfile.js
package.json
tasks/cdn.js

index 312593be36c4ca6af89b2b4981f9cfcd85e4bdee..9a87efffe5e071fb270348c3f367077e88d3da11 100644 (file)
@@ -2,7 +2,6 @@
 var gulp = require('gulp');
 require('require-dir')('./tasks');
 var args = require('yargs').argv;
-var git = require('gulp-git');
 
 gulp.task('default', function() {
   console.log('\n  Use:\n gulp <stage|deploy[:cdn]>|<zip>\n');
@@ -10,4 +9,4 @@ gulp.task('default', function() {
 
 gulp.task('clean', ['clean:cdn', 'clean:zip']);
 
-gulp.task('deploy', ['deploy:cdn']);
+gulp.task('deploy', ['deploy:cdn']);
\ No newline at end of file
index d874638d1eaa0e528d5e90c6b5aa1f82ab4aba56..bef1fb5f0648309f85ece1314645397c56fc6938 100644 (file)
@@ -7,7 +7,7 @@
   "dependencies": {
     "bower": "latest",
     "fs-extra": "latest",
-    "gulp": "latest",
+    "gulp": "^3.9.1",
     "gulp-add-src": "latest",
     "gulp-git": "latest",
     "gulp-json-editor": "latest",
index a2bb3a70f977a3a006912add627a34028989294c..03612878176919ed026614a6380844203d5a2d4b 100644 (file)
@@ -8,6 +8,7 @@ var modify = require('gulp-modify');
 var rsync = require('gulp-rsync');
 var gutil = require('gulp-util');
 var args = require('yargs').argv;
+var git = require('gulp-git');
 
 var stagingBasePath = config.paths.staging.cdn;
 var version = config.version;
@@ -91,3 +92,57 @@ gulp.task('deploy:cdn', ['upload:cdn'], function(done) {
     done();
   }
 });
+
+gulp.task('cdn:arguments', function(done) {
+  common.checkArguments(['element', 'tag']);
+  args.folder = args.tag.replace(/^v/g, '');
+  stagingPath = path.join(process.cwd(), stagingBasePath, args.element, args.folder);
+  done();
+});
+
+gulp.task('cdn:clone', ['clean:cdn', 'cdn:arguments'], function(done) {
+  git.clone('https://github.com/vaadin/' + args.element, {args: '-b ' + args.tag + ' ./target/cdn/' + args.element + '/' + args.folder }, function (err) {
+    if (err) throw err;
+    done();
+  });
+});
+
+gulp.task('cdn:install', ['cdn:arguments', 'cdn:clone'], function() {
+  return bower({
+    cwd: stagingPath,
+    forceLatest: true,
+    cmd: 'install'
+  });
+});
+
+gulp.task('cdn:stage', ['cdn:arguments', 'cdn:install'], function() {
+  return gulp.src([stagingPath + '/**/*.html',  '!**/bower_components/**'])
+    .pipe(modify({
+      fileModifier: function(file, contents) {
+        // magic regex trying to change import paths from:
+        // ../foo/foo.html to bower_components/foo/foo.html
+        // ../../foo/foo.html to ../bower_components/foo/foo.html
+        // ../my-element.html stays as it is.
+        contents = contents.replace(new RegExp(/([href|src].+)((\.\.\/)((?!bower_components|\.\.).+\/.+))/g), '$1bower_components/$4');
+        return contents;
+      }
+    }))
+    .pipe(gulp.dest(stagingPath));
+});
+
+gulp.task('cdn:upload', ['cdn:stage'], function() {
+  common.checkArguments(['cdnUsername', 'cdnDestination']);
+  var destination = path.join(args.cdnDestination, args.element, args.folder);
+  gutil.log('Uploading to cdn (rsync): ' + stagingPath + ' -> ' + args.cdnUsername + '@' + host + ':' + destination);
+  return gulp.src(stagingPath)
+    .pipe(rsync({
+      username: args.cdnUsername,
+      hostname: host,
+      root: stagingPath,
+      emptyDirectories: false,
+      recursive: true,
+      clean: true,
+      silent: true,
+      destination: destination
+    }));
+});