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)
 | 
						|
  })
 |