Jonas Kress (WMDE) has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/294509

Change subject: [WIP] Introduce grunt deploy
......................................................................

[WIP] Introduce grunt deploy

Change-Id: Icd62f69f06ea4cff9ecbc769905373fac2017a4e
---
M Gruntfile.js
M package.json
2 files changed, 161 insertions(+), 131 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikidata/query/gui 
refs/changes/09/294509/1

diff --git a/Gruntfile.js b/Gruntfile.js
index 8ee9c0c..259163a 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -1,135 +1,159 @@
 /* jshint node:true */
 module.exports = function( grunt ) {
        'use strict';
-       grunt.loadNpmTasks( 'grunt-banana-checker' );
-       grunt.loadNpmTasks( 'grunt-contrib-jshint' );
-       grunt.loadNpmTasks( 'grunt-contrib-qunit' );
-       grunt.loadNpmTasks( 'grunt-jsonlint' );
-       grunt.loadNpmTasks( 'grunt-jscs' );
-       grunt.loadNpmTasks( 'grunt-usemin' );
-       grunt.loadNpmTasks( 'grunt-filerev' );
-       grunt.loadNpmTasks( 'grunt-contrib-clean' );
-       grunt.loadNpmTasks( 'grunt-contrib-concat' );
-       grunt.loadNpmTasks( 'grunt-contrib-uglify' );
-       grunt.loadNpmTasks( 'grunt-contrib-copy' );
-       grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
-
+       require( 'load-grunt-tasks' )( grunt );
        var pkg = grunt.file.readJSON( 'package.json' );
+       var dist = 'dist'
 
-       grunt.initConfig( {
-               pkg: pkg,
-               jshint: {
-                       options: {
-                               jshintrc: true
-                       },
-                       all: [
-                                       '**/*.js', '!dist/**'
-                       ]
-               },
-               jscs: {
-                       src: '<%= jshint.all %>'
-               },
-               jsonlint: {
-                       all: [
-                                       '**/*.json', '!node_modules/**', 
'!vendor/**', '!dist/**'
-                       ]
-               },
-               qunit: {
-                       all: [
-                               'wikibase/tests/*.html'
-                       ]
-               },
-               banana: {
-                       all: 'i18n/'
-               },
-               clean: {
-                       release: [
-                               'dist'
-                       ]
-               },
-               useminPrepare: {
-                       html: ['index.html', 'embed.html'],
-                       options: {
-                               dest: 'dist'
-                       }
-               },
-               concat: {},
-               uglify: {},
-               copy: {
-                       release: {
-                               files: [
-                                               {//bootstrap icons
-                                                       expand: true,
-                                                       flatten: true,
-                                                       src: [
-                                                               
'**/*.{eot,ttf,woff,woff2}'
-                                                       ],
-                                                       dest: 'dist/fonts/',
-                                                       filter: 'isFile'
-                                               },
-                                               {// uls images
-                                                       expand: true,
-                                                       flatten: true,
-                                                       src: [
-                                                               
'**/jquery.uls/images/*.{png,jpg,svg}'
-                                                       ],
-                                                       dest: 'dist/images/',
-                                                       filter: 'isFile'
-                                               },
-                                               {// leaflet fullscreen images
-                                                       expand: true,
-                                                       flatten: true,
-                                                       src: [
-                                                               
'**/leaflet-fullscreen/**/*.png'
-                                                       ],
-                                                       dest: 'dist/css/',
-                                                       filter: 'isFile'
-                                               },
-                                               {
-                                                       expand: true,
-                                                       cwd: './',
-                                                       src: [
-                                                                       
'i18n/**', 'vendor/jquery.uls/**', '*.html', 'logo.svg',
-                                                                       
'robots.txt'
-                                                       ],
-                                                       dest: 'dist'
-                                               }
-                               ]
-                       }
-               },
-               cssmin: {
-                       options: {
-                               debug: true
-                       }
-               },
-               filerev: {
-                       options: {
-                               encoding: 'utf8',
-                               algorithm: 'md5',
-                               length: 20
-                       },
-                       release: {
-                               files: [
-                                       {
-                                               src: [
-                                                               'dist/js/*.js', 
'dist/css/*.css'
+       grunt
+                       .initConfig( {
+                               pkg: pkg,
+
+                               jshint: {
+                                       options: {
+                                               jshintrc: true
+                                       },
+                                       all: [
+                                                       '**/*.js', '!dist/**'
+                                       ]
+                               },
+                               jscs: {
+                                       src: '<%= jshint.all %>'
+                               },
+                               jsonlint: {
+                                       all: [
+                                                       '**/*.json', 
'!node_modules/**', '!vendor/**', '!dist/**'
+                                       ]
+                               },
+                               qunit: {
+                                       all: [
+                                               'wikibase/tests/*.html'
+                                       ]
+                               },
+                               banana: {
+                                       all: 'i18n/'
+                               },
+                               clean: {
+                                       release: [
+                                               dist
+                                       ],
+                                       deploy: [
+                                                       dist + '/*', dist + 
"!.git/**"
+                                       ]
+                               },
+                               useminPrepare: {
+                                       html: [
+                                                       'index.html', 
'embed.html'
+                                       ],
+                                       options: {
+                                               dest: dist
+                                       }
+                               },
+                               concat: {},
+                               uglify: {},
+                               copy: {
+                                       release: {
+                                               files: [
+                                                               {// bootstrap 
icons
+                                                                       expand: 
true,
+                                                                       
flatten: true,
+                                                                       src: [
+                                                                               
'**/*.{eot,ttf,woff,woff2}'
+                                                                       ],
+                                                                       dest: 
dist + '/fonts/',
+                                                                       filter: 
'isFile'
+                                                               },
+                                                               {// uls images
+                                                                       expand: 
true,
+                                                                       
flatten: true,
+                                                                       src: [
+                                                                               
'**/jquery.uls/images/*.{png,jpg,svg}'
+                                                                       ],
+                                                                       dest: 
dist + '/images/',
+                                                                       filter: 
'isFile'
+                                                               },
+                                                               {// leaflet 
fullscreen images
+                                                                       expand: 
true,
+                                                                       
flatten: true,
+                                                                       src: [
+                                                                               
'**/leaflet-fullscreen/**/*.png'
+                                                                       ],
+                                                                       dest: 
dist + '/css/',
+                                                                       filter: 
'isFile'
+                                                               },
+                                                               {
+                                                                       expand: 
true,
+                                                                       cwd: 
'./',
+                                                                       src: [
+                                                                               
        'i18n/**', 'vendor/jquery.uls/**', '*.html',
+                                                                               
        'logo.svg', 'robots.txt'
+                                                                       ],
+                                                                       dest: 
dist
+                                                               }
                                                ]
                                        }
-                               ]
-                       }
-               },
-               usemin: {
-                       html: [
-                               'dist/index.html', 'dist/embed.html'
-                       ]
-               }
-       } );
+                               },
+                               cssmin: {
+                                       options: {
+                                               debug: true
+                                       }
+                               },
+                               filerev: {
+                                       options: {
+                                               encoding: 'utf8',
+                                               algorithm: 'md5',
+                                               length: 20
+                                       },
+                                       release: {
+                                               files: [
+                                                       {
+                                                               src: [
+                                                                               
dist + '/js/*.js', dist + '/css/*.css'
+                                                               ]
+                                                       }
+                                               ]
+                                       }
+                               },
+                               usemin: {
+                                       html: [
+                                                       dist + '/index.html', 
dist + '/embed.html'
+                                       ]
+                               },
+                               shell: {
+                                       update: {
+                                               command: [
+                                                               'git remote 
update', 'git pull'
+                                               ].join( '&&' )
+                                       },
+                                       cloneDeploy: {
+                                               command: [
+                                                       'git clone --branch <%= 
pkg.repository.deploy.branch %> --single-branch <%= pkg.repository.deploy.url 
%> ' +
+                                                                       dist
+                                               ].join( '&&' )
+                                       },
+                                       commitDeploy: {
+                                               command: [
+                                                               'lastrev=$(git 
rev-parse HEAD)',
+                                                               'message=$(git 
log -1 --pretty=%B)',
+                                                               
'newmessage=$(cat <<END\nMerging from $lastrev:\n\n$message\nEND\n)',
+                                                               'cd ' + dist, 
'git add -A', 'git commit -m "$newmessage"',
+                                                               'echo 
"$newmessage"', 'git review'
+                                               ].join( '&&' )
+                                       }
+                               }
+                       } );
 
        grunt.registerTask( 'test', [
                        'jshint', 'jscs', 'jsonlint', 'banana', 'qunit'
        ] );
        grunt.registerTask( 'build', [
-                       'clean', 'copy', 'useminPrepare', 'concat', 'cssmin', 
'uglify', 'filerev', 'usemin'
+                       'clean', 'build_dist'
+       ] );
+       grunt.registerTask( 'build_dist', [
+                       'copy', 'useminPrepare', 'concat', 'cssmin', 'uglify', 
'filerev', 'usemin'
+       ] );
+       grunt.registerTask( 'deploy', [
+                       'clean', 'shell:cloneDeploy', 'clean:deploy', 
'build_dist', 'shell:commitDeploy'
        ] );
        grunt.registerTask( 'default', 'test' );
 };
diff --git a/package.json b/package.json
index 70f84a0..3a71963 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,11 @@
        },
        "repository": {
                "type": "git",
-               "url": "https://gerrit.wikimedia.org/r/p/wikidata/query/gui.git";
+               "url": 
"https://gerrit.wikimedia.org/r/p/wikidata/query/gui.git";,
+               "deploy": {
+                       "url": 
"https://gerrit.wikimedia.org/r/wikidata/query/gui-deploy";,
+                       "branch": "production"
+               }
        },
        "dependencies": {
                "jquery": "^1.12.0",
@@ -29,21 +33,23 @@
        },
        "devDependencies": {
                "grunt": "0.4.5",
+               "grunt-banana-checker": "~0.5.0",
                "grunt-cli": "0.1.13",
+               "grunt-contrib-clean": "^1.0.0",
+               "grunt-contrib-concat": "^1.0.1",
+               "grunt-contrib-copy": "^1.0.0",
+               "grunt-contrib-cssmin": "^1.0.1",
                "grunt-contrib-jshint": "0.11.2",
                "grunt-contrib-qunit": ">=0.2.1",
-               "grunt-jscs": "2.1.0",
+               "grunt-contrib-uglify": "^1.0.1",
+               "grunt-filerev": "^2.3.1",
+               "grunt-jscs": "^2.1.0",
                "grunt-jsonlint": "1.0.4",
-               "sinon": "~1.17.3",
+               "grunt-shell": "^1.3.0",
+               "grunt-usemin": "^3.1.1",
                "karma-qunit": "0.1.9",
+               "load-grunt-tasks": "^3.5.0",
                "qunitjs": "1.23.1",
-               "grunt-banana-checker": "~0.5.0",
-               "grunt-contrib-copy": "",
-               "grunt-contrib-clean": "",
-               "grunt-usemin": "",
-               "grunt-filerev": "",
-               "grunt-contrib-concat": "",
-               "grunt-contrib-uglify": "",
-               "grunt-contrib-cssmin": ""
+               "sinon": "~1.17.3"
        }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/294509
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icd62f69f06ea4cff9ecbc769905373fac2017a4e
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/query/gui
Gerrit-Branch: master
Gerrit-Owner: Jonas Kress (WMDE) <jonas.kr...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to