| 
									
										
										
										
											2017-01-24 10:07:22 +08:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2019-04-10 02:39:42 +08:00
										 |  |  |  * MinIO Cloud Storage (C) 2016 MinIO, Inc. | 
					
						
							| 
									
										
										
										
											2017-01-24 10:07:22 +08:00
										 |  |  |  * | 
					
						
							|  |  |  |  * 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'; | 
					
						
							| 
									
										
										
										
											2018-08-08 13:16:02 +08:00
										 |  |  |       var cmd = 'go-bindata-assetfs -o bindata_assetfs.go -pkg browser -nocompress=true production/...' | 
					
						
							| 
									
										
										
										
											2017-01-24 10:07:22 +08:00
										 |  |  |       if (!isProduction) { | 
					
						
							| 
									
										
										
										
											2018-08-08 13:16:02 +08:00
										 |  |  |         cmd = 'go-bindata-assetfs -o bindata_assetfs.go -pkg browser -nocompress=true dev/...' | 
					
						
							| 
									
										
										
										
											2017-01-24 10:07:22 +08:00
										 |  |  |       } | 
					
						
							|  |  |  |       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) | 
					
						
							|  |  |  |   }) |