| /* global module */ |
| |
| module.exports = function (grunt) { |
| // Project configuration. |
| grunt.initConfig({ |
| config: { |
| svn: { |
| url: 'https://svn.apache.org/repos/asf/nifi/site/trunk' |
| } |
| }, |
| pkg: grunt.file.readJSON('package.json'), |
| clean: { |
| options: { |
| force: true |
| }, |
| js: ['dist/js/*'], |
| css: ['dist/css/'], |
| assets: ['dist/assets/*'], |
| generated: ['dist/docs'], |
| all: ['dist'] |
| }, |
| assemble: { |
| options: { |
| assets: 'dist/assets', |
| partials: [ |
| 'src/includes/*.hbs', |
| 'src/includes/minifi/*.hbs' |
| ], |
| layout: ['src/layouts/html.hbs'], |
| flatten: true |
| }, |
| html: { |
| files: { |
| 'dist/': ['src/pages/html/*.hbs'], |
| 'dist/minifi': ['src/pages/html/minifi/*.hbs'] |
| } |
| }, |
| markdown: { |
| options: { |
| layout: 'src/layouts/markdown.hbs' |
| }, |
| files: { |
| 'dist/': ['src/pages/markdown/*.md'] |
| } |
| }, |
| minifimarkdown: { |
| options: { |
| layout: 'src/layouts/minifi/markdown.hbs' |
| }, |
| files: { |
| 'dist/minifi/': ['src/pages/markdown/minifi/*.md'] |
| } |
| }, |
| minifi: { |
| options: { |
| partials: 'src/includes/minifi/*.hbs', |
| layout: 'src/layouts/minifi/minifi-html.hbs' |
| }, |
| files: { |
| 'dist/minifi/': [ |
| 'src/pages/html/minifi/*.hbs' |
| ] |
| } |
| } |
| }, |
| compass: { |
| dist: { |
| options: { |
| config: 'config.rb', |
| force: true |
| } |
| } |
| }, |
| concat: { |
| options: { |
| separator: ';' |
| }, |
| foundation: { |
| src: [ |
| 'bower_components/foundation/js/foundation/foundation.js', |
| 'bower_components/foundation/js/foundation/foundation.topbar.js', |
| 'bower_components/foundation/js/foundation/foundation.reveal.js' |
| ], |
| dest: 'dist/assets/js/foundation.js' |
| }, |
| modernizr: { |
| src: [ |
| 'bower_components/modernizr/modernizr.js' |
| ], |
| dest: 'dist/assets/js/modernizr.js' |
| }, |
| nifi: { |
| src: [ |
| 'src/js/app.js' |
| ], |
| dest: 'dist/assets/js/app.js' |
| } |
| }, |
| copy: { |
| // generated: { |
| // files: [{ |
| // expand: true, |
| // cwd: '../nifi/nifi-docs/target/generated-docs', |
| // src: ['*.html', 'images/*'], |
| // dest: 'dist/docs/' |
| // }, { |
| // expand: true, |
| // cwd: '../nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api', |
| // src: ['target/nifi-web-api-*/docs/rest-api/index.html', 'target/nifi-web-api-*/docs/rest-api/images/*'], |
| // dest: 'dist/docs/', |
| // rename: function (dest, src) { |
| // var path = require('path'); |
| // |
| // if (src.indexOf('images') > 0) { |
| // return path.join(dest, 'rest-api/images', path.basename(src)); |
| // } else { |
| // return path.join(dest, 'rest-api', path.basename(src)); |
| // } |
| // } |
| // }] |
| // }, |
| dist: { |
| files: [{ |
| expand: true, |
| cwd: 'src/images/', |
| src: ['**/*.{png,jpg,gif,svg,ico}'], |
| dest: 'dist/assets/images/' |
| }, { |
| expand: true, |
| cwd: 'bower_components/jquery/dist', |
| src: ['jquery.min.js'], |
| dest: 'dist/assets/js/' |
| }, { |
| expand: true, |
| cwd: 'bower_components/webfontloader', |
| src: ['webfontloader.js'], |
| dest: 'dist/assets/js/' |
| }, { |
| expand: true, |
| cwd: 'bower_components/font-awesome/css', |
| src: ['font-awesome.min.css'], |
| dest: 'dist/assets/stylesheets/' |
| }, { |
| expand: true, |
| cwd: 'bower_components/font-awesome', |
| src: ['fonts/*'], |
| dest: 'dist/assets/' |
| }] |
| } |
| }, |
| prompt: { |
| username: { |
| options: { |
| questions: [{ |
| config: 'config.svn.username', |
| type: 'input', |
| message: 'Enter SVN username (if different from current or configured user):' |
| }] |
| } |
| }, |
| commit: { |
| options: { |
| questions: [{ |
| config: 'config.svn.commit.confirmation', |
| type: 'list', |
| choices: ['Show diff', 'Commit', 'Abort'], |
| message: 'Commit the changes listed above?' |
| }], |
| then: function (results) { |
| if (results['config.svn.commit.confirmation'] === 'Commit') { |
| grunt.task.run('prompt:message'); |
| } else if (results['config.svn.commit.confirmation'] === 'Show diff') { |
| grunt.task.run('exec:diff'); |
| grunt.task.run('prompt:commit'); |
| } |
| } |
| } |
| }, |
| message: { |
| options: { |
| questions: [{ |
| config: 'config.svn.commit.message', |
| type: 'input', |
| message: 'Commit message:' |
| }, { |
| config: 'config.svn.password', |
| type: 'password', |
| message: 'SVN password (if different from configured):' |
| }], |
| then: function () { |
| grunt.task.run('exec:add'); |
| grunt.task.run('exec:commit'); |
| } |
| } |
| } |
| }, |
| exec: { |
| generateDocs: { |
| command: 'mvn clean package', |
| cwd: '../nifi/nifi-docs', |
| stdout: true, |
| stderr: true |
| }, |
| generateRestApiDocs: { |
| command: 'mvn clean package -DskipTests', |
| cwd: '../nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api', |
| stdout: true, |
| stderr: true |
| }, |
| checkout: { |
| command: function() { |
| var url = grunt.config('config.svn.url'); |
| var username = grunt.config('config.svn.username'); |
| var command = 'svn checkout'; |
| if (username !== '') { |
| command += (' --username ' + username); |
| } |
| return command + ' ' + url + ' --trust-server-cert --non-interactive dist'; |
| }, |
| stdout: true, |
| stderr: true |
| }, |
| status: { |
| cwd: 'dist', |
| command: 'svn status', |
| stdout: true, |
| stderr: true |
| }, |
| diff: { |
| cwd: 'dist', |
| command: 'svn diff', |
| stdout: true, |
| stderr: true |
| }, |
| add: { |
| cwd: 'dist', |
| command: 'svn add --force .', |
| stdout: true, |
| stderr: true |
| }, |
| commit: { |
| cwd: 'dist', |
| command: function() { |
| var username = grunt.config('config.svn.username'); |
| var password = grunt.config('config.svn.password'); |
| var message = grunt.config('config.svn.commit.message'); |
| var command = 'svn commit'; |
| if (username !== '') { |
| command += (' --username ' + username); |
| } |
| if (password !== '') { |
| command += (' --password "' + password + '"'); |
| } |
| return command + ' -m "' + message + '" --trust-server-cert --non-interactive .'; |
| } |
| } |
| }, |
| replace: { |
| addGoogleAnalytics: { |
| src: ['dist/docs/*.html', 'dist/docs/rest-api/index.html'], |
| overwrite: true, |
| replacements: [{ |
| from: /<\/head>/g, |
| to: "<script>\n" + |
| "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n" + |
| "(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n" + |
| "m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n" + |
| "})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n" + |
| "ga('create', 'UA-57264262-1', 'auto');\n" + |
| "ga('send', 'pageview');\n" + |
| "</script>\n" + |
| "</head>" |
| }] |
| }, |
| moveTearDrop: { |
| src: ['dist/docs/rest-api/index.html'], |
| overwrite: true, |
| replacements: [{ |
| from: /<img class="logo" src="images\/bgNifiLogo.png" alt="NiFi Logo"\/>/g, |
| to: '<img class="logo" src="images/bgNifiLogo.png" alt="NiFi Logo" style="float: right;"/>' |
| }] |
| }, |
| removeVersion: { |
| src: ['dist/docs/rest-api/index.html'], |
| overwrite: true, |
| replacements: [{ |
| from: /<div class="sub-title">.*<\/div>/g, |
| to: '<div class="sub-title">NiFi Rest Api</div>' |
| }, { |
| from: /<title>.*<\/title>/g, |
| to: '<title>NiFi Rest Api</title>' |
| }] |
| } |
| }, |
| watch: { |
| grunt: { |
| files: ['Gruntfile.js'], |
| tasks: ['dev'] |
| }, |
| css: { |
| files: 'src/scss/*.scss', |
| tasks: ['css'] |
| }, |
| script: { |
| files: 'src/js/*.js', |
| tasks: ['js'] |
| }, |
| images: { |
| files: 'src/images/*.{png,jpg,gif,svg,ico}', |
| tasks: ['img'] |
| }, |
| assemble: { |
| files: ['src/{includes,layouts}/*.hbs', 'src/pages/{html,markdown}/*.{hbs,md}', 'src/{pages,includes,layouts}/**/minifi/*.{hbs,md}'], |
| tasks: ['assemble'] |
| } |
| } |
| }); |
| |
| grunt.loadNpmTasks('grunt-newer'); |
| grunt.loadNpmTasks('grunt-contrib-clean'); |
| grunt.loadNpmTasks('grunt-contrib-copy'); |
| grunt.loadNpmTasks('grunt-contrib-concat'); |
| grunt.loadNpmTasks('assemble'); |
| grunt.loadNpmTasks('grunt-contrib-compass'); |
| grunt.loadNpmTasks('grunt-contrib-watch'); |
| grunt.loadNpmTasks('grunt-exec'); |
| grunt.loadNpmTasks('grunt-text-replace'); |
| grunt.loadNpmTasks('grunt-prompt'); |
| |
| grunt.registerTask('img', ['newer:copy']); |
| grunt.registerTask('css', ['clean:css', 'compass']); |
| grunt.registerTask('js', ['clean:js', 'concat']); |
| // grunt.registerTask('generate-docs', ['clean:generated', 'exec:generateDocs', 'exec:generateRestApiDocs', 'copy:generated', 'replace:addGoogleAnalytics', 'replace:moveTearDrop', 'replace:removeVersion']); |
| |
| grunt.registerTask('build', ['assemble', 'css', 'js', 'img', 'copy:dist']); |
| // grunt.registerTask('build', ['assemble', 'css', 'js', 'img', 'generate-docs', 'copy:dist']); |
| grunt.registerTask('deploy', ['clean:all', 'prompt:username', 'exec:checkout', 'build', 'exec:status', 'prompt:commit']); |
| grunt.registerTask('dev', ['default', 'watch']); |
| |
| grunt.registerTask('default', ['clean:all', 'build']); |
| }; |