mirror of https://github.com/minio/minio.git
				
				
				
			
		
			
				
	
	
		
			127 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /*
 | |
|  * MinIO Cloud Storage (C) 2016 MinIO, Inc.
 | |
|  *
 | |
|  * Licensed under the Apache License, Version 2.0 (the "License");
 | |
|  * you may not use this file except in compliance with the License.
 | |
|  * You may obtain a copy of the License at
 | |
|  *
 | |
|  *     http://www.apache.org/licenses/LICENSE-2.0
 | |
|  *
 | |
|  * Unless required by applicable law or agreed to in writing, software
 | |
|  * distributed under the License is distributed on an "AS IS" BASIS,
 | |
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|  * See the License for the specific language governing permissions and
 | |
|  * limitations under the License.
 | |
|  */
 | |
| 
 | |
| var moment = require('moment')
 | |
| var async = require('async')
 | |
| var exec = require('child_process').exec
 | |
| var fs = require('fs')
 | |
| 
 | |
| var isProduction = process.env.NODE_ENV == 'production' ? true : false
 | |
| var assetsFileName = ''
 | |
| var commitId = ''
 | |
| var date = moment.utc()
 | |
| var version = date.format('YYYY-MM-DDTHH:mm:ss') + 'Z'
 | |
| var releaseTag = date.format('YYYY-MM-DDTHH-mm-ss') + 'Z'
 | |
| var buildType = 'DEVELOPMENT'
 | |
| if (process.env.MINIO_UI_BUILD) buildType = process.env.MINIO_UI_BUILD
 | |
| 
 | |
| rmDir = function(dirPath) {
 | |
|   try { var files = fs.readdirSync(dirPath); }
 | |
|   catch(e) { return; }
 | |
|   if (files.length > 0)
 | |
|     for (var i = 0; i < files.length; i++) {
 | |
|       var filePath = dirPath + '/' + files[i];
 | |
|       if (fs.statSync(filePath).isFile())
 | |
|         fs.unlinkSync(filePath);
 | |
|       else
 | |
|         rmDir(filePath);
 | |
|     }
 | |
|   fs.rmdirSync(dirPath);
 | |
| };
 | |
| 
 | |
| async.waterfall([
 | |
|     function(cb) {
 | |
|       rmDir('production');
 | |
|       rmDir('dev');
 | |
|       var cmd = 'webpack -p --config webpack.production.config.js'
 | |
|       if (!isProduction) {
 | |
|         cmd = 'webpack';
 | |
|       }
 | |
|       console.log('Running', cmd)
 | |
|       exec(cmd, cb)
 | |
|     },
 | |
|     function(stdout, stderr, cb) {
 | |
|       if (isProduction) {
 | |
|         fs.renameSync('production/index_bundle.js',
 | |
|                       'production/index_bundle-' + releaseTag + '.js')
 | |
|       } else {
 | |
|         fs.renameSync('dev/index_bundle.js',
 | |
|                       'dev/index_bundle-' + releaseTag + '.js')
 | |
|       }
 | |
|       var cmd = 'git log --format="%H" -n1'
 | |
|       console.log('Running', cmd)
 | |
|       exec(cmd, cb)
 | |
|     },
 | |
|     function(stdout, stderr, cb) {
 | |
|       if (!stdout) throw new Error('commitId is empty')
 | |
|       commitId = stdout.replace('\n', '')
 | |
|       if (commitId.length !== 40) throw new Error('commitId invalid : ' + commitId)
 | |
|       assetsFileName = 'ui-assets.go';
 | |
|       var cmd = 'go-bindata-assetfs -o bindata_assetfs.go -pkg browser -nocompress=true production/...'
 | |
|       if (!isProduction) {
 | |
|         cmd = 'go-bindata-assetfs -o bindata_assetfs.go -pkg browser -nocompress=true dev/...'
 | |
|       }
 | |
|       console.log('Running', cmd)
 | |
|       exec(cmd, cb)
 | |
|     },
 | |
|     function(stdout, stderr, cb) {
 | |
|       var cmd = 'gofmt -s -w -l bindata_assetfs.go'
 | |
|       console.log('Running', cmd)
 | |
|       exec(cmd, cb)
 | |
|     },
 | |
|     function(stdout, stderr, cb) {
 | |
|       fs.renameSync('bindata_assetfs.go', assetsFileName)
 | |
|       fs.appendFileSync(assetsFileName, '\n')
 | |
|       fs.appendFileSync(assetsFileName, 'var UIReleaseTag = "' + buildType + '.' +
 | |
|                         releaseTag + '"\n')
 | |
|       fs.appendFileSync(assetsFileName, 'var UICommitID = "' + commitId + '"\n')
 | |
|       fs.appendFileSync(assetsFileName, 'var UIVersion = "' + version + '"')
 | |
|       fs.appendFileSync(assetsFileName, '\n')
 | |
|       var contents;
 | |
|       if (isProduction) {
 | |
|         contents = fs.readFileSync(assetsFileName, 'utf8')
 | |
|                      .replace(/_productionIndexHtml/g, '_productionIndexHTML')
 | |
|                      .replace(/productionIndexHtmlBytes/g, 'productionIndexHTMLBytes')
 | |
|                      .replace(/productionIndexHtml/g, 'productionIndexHTML')
 | |
|                      .replace(/_productionIndex_bundleJs/g, '_productionIndexBundleJs')
 | |
|                      .replace(/productionIndex_bundleJsBytes/g, 'productionIndexBundleJsBytes')
 | |
|                      .replace(/productionIndex_bundleJs/g, 'productionIndexBundleJs')
 | |
|                      .replace(/_productionJqueryUiMinJs/g, '_productionJqueryUIMinJs')
 | |
|                      .replace(/productionJqueryUiMinJsBytes/g, 'productionJqueryUIMinJsBytes')
 | |
|                      .replace(/productionJqueryUiMinJs/g, 'productionJqueryUIMinJs');
 | |
|       } else {
 | |
|         contents = fs.readFileSync(assetsFileName, 'utf8')
 | |
|                      .replace(/_devIndexHtml/g, '_devIndexHTML')
 | |
|                      .replace(/devIndexHtmlBytes/g, 'devIndexHTMLBytes')
 | |
|                      .replace(/devIndexHtml/g, 'devIndexHTML')
 | |
|                      .replace(/_devIndex_bundleJs/g, '_devIndexBundleJs')
 | |
|                      .replace(/devIndex_bundleJsBytes/g, 'devIndexBundleJsBytes')
 | |
|                      .replace(/devIndex_bundleJs/g, 'devIndexBundleJs')
 | |
|                      .replace(/_devJqueryUiMinJs/g, '_devJqueryUIMinJs')
 | |
|                      .replace(/devJqueryUiMinJsBytes/g, 'devJqueryUIMinJsBytes')
 | |
|                      .replace(/devJqueryUiMinJs/g, 'devJqueryUIMinJs');
 | |
|       }
 | |
|       contents = contents.replace(/MINIO_UI_VERSION/g, version)
 | |
|       contents = contents.replace(/index_bundle.js/g, 'index_bundle-' + releaseTag + '.js')
 | |
| 
 | |
|       fs.writeFileSync(assetsFileName, contents, 'utf8')
 | |
|       console.log('UI assets file :', assetsFileName)
 | |
|       cb()
 | |
|     }
 | |
|   ], function(err) {
 | |
|     if (err) return console.log(err)
 | |
|   })
 |