126 lines
5.2 KiB
JavaScript
126 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)
|
|
})
|