Files
luos/Rakefile

444 lines
16 KiB
Ruby
Raw Normal View History

2014-05-22 20:33:29 -04:00
require 'rubygems'
desc "Default Task - Build Library"
task :default => [:required] do
Rake::Task['build'].execute
end
task :required do
2014-05-29 17:16:35 -04:00
begin
require 'json'
rescue LoadError
puts "JSON gem not found.\nInstall it by running 'gem install json'"
exit(1)
end
begin
require 'ftools'
rescue LoadError
puts "JSON gem not found.\nInstall it by running 'gem install ftools'"
exit(1)
end
2014-05-22 20:33:29 -04:00
end
task :log do
puts getLog
end
2014-05-22 20:33:29 -04:00
desc "Build Front-End for ProcessMaker"
2014-05-22 20:33:29 -04:00
task :build => [:required] do
mode = "production"
#argv1 = ARGV.last
publicDir = Dir.pwd + "/workflow/public_html"
# validate
unless File.exists?(publicDir)
puts "Seems it is not a ProcessMaker installation"
exit(1)
end
if mode == "production"
targetDir = publicDir + "/lib"
pmUIFontsDir = targetDir + "/fonts"
2014-05-22 20:33:29 -04:00
else
targetDir = publicDir + "/lib-dev"
pmUIFontsDir = pmUIDir + "/fonts"
end
jsTargetDir = targetDir + "/js"
cssTargetDir = targetDir + "/css"
cssImagesTargetDir = cssTargetDir + "/images"
imgTargetDir = targetDir + "/img"
pmUIDir = targetDir + "/pmUI"
mafeDir = targetDir + "/mafe"
2014-06-27 13:43:49 -04:00
pmdynaformDir = targetDir + "/pmdynaform"
prepareDirs([targetDir, pmUIDir, mafeDir, pmdynaformDir, jsTargetDir, cssTargetDir, cssImagesTargetDir, imgTargetDir, pmUIFontsDir])
buildPmUi(Dir.pwd + "/vendor/colosa/pmUI", targetDir, mode)
2014-06-27 13:43:49 -04:00
buildPmdynaform(Dir.pwd + "/vendor/colosa/pmDynaform", targetDir, mode)
buildMafe(Dir.pwd + "/vendor/colosa/MichelangeloFE", targetDir, mode)
2014-05-29 17:16:35 -04:00
pmuiHash = getHash(Dir.pwd + "/vendor/colosa/pmUI")
mafeHash = getHash(Dir.pwd + "/vendor/colosa/MichelangeloFE")
pmdynaformHash = getHash(Dir.pwd + "/vendor/colosa/pmDynaform")
2014-05-29 17:16:35 -04:00
hashVendors = pmuiHash+"-"+mafeHash
## Building minified JS Files
puts "Building file: " + "/js/mafe-#{hashVendors}.js".cyan
mafeCompresedFile = targetDir + "/js/mafe-#{hashVendors}.js"
mafeCompresedContent = ""
getJsIncludeFiles().each do |filename|
mafeCompresedContent += File.read filename
mafeCompresedContent += "\n"
end
File.open(mafeCompresedFile, 'w+') do |writeFile|
writeFile.write mafeCompresedContent
end
#Building minified CSS Files
puts "Building file: " + "/css/mafe-#{hashVendors}.css".cyan
mafeCompresedFile = targetDir + "/css/mafe-#{hashVendors}.css"
mafeCompresedContent = ""
2014-05-22 20:33:29 -04:00
getCssIncludeFiles().each do |filename|
mafeCompresedContent += File.read filename
mafeCompresedContent += "\n"
end
File.open(mafeCompresedFile, 'w+') do |writeFile|
writeFile.write mafeCompresedContent
end
2014-05-22 20:33:29 -04:00
# Create buildhash file
2014-05-29 17:16:35 -04:00
puts "create file: " + "/buildhash".cyan
File.open(targetDir+"/buildhash", 'w+') do |writeFile|
writeFile.write hashVendors
end
2014-05-22 20:33:29 -04:00
2014-05-29 17:16:35 -04:00
puts "create file: " + "/versions".cyan
versions = {
:pmui_ver => getVersion(Dir.pwd + "/vendor/colosa/pmUI"),
:pmui_hash => pmuiHash,
:mafe_ver => getVersion(Dir.pwd + "/vendor/colosa/MichelangeloFE"),
:mafe_hash => mafeHash,
:pmdynaform_ver => getVersion(Dir.pwd + "/vendor/colosa/pmDynaform"),
:pmdynaform_hash => pmdynaformHash
2014-05-29 17:16:35 -04:00
}
File.open(targetDir+"/versions", 'w+') do |writeFile|
writeFile.write versions.to_json
end
File.open(targetDir+"/lib-pmui.log", 'w+') do |writeFile|
writeFile.write getLogFrom(Dir.pwd + "/vendor/colosa/pmUI")
end
File.open(targetDir+"/lib-mafe.log", 'w+') do |writeFile|
writeFile.write getLogFrom(Dir.pwd + "/vendor/colosa/MichelangeloFE")
end
File.open(targetDir+"/lib-pmdynaform.log", 'w+') do |writeFile|
writeFile.write getLogFrom(Dir.pwd + "/vendor/colosa/pmDynaform")
end
File.open(targetDir+"/processmaker.log", 'w+') do |writeFile|
writeFile.write getLog()
end
puts "-- DONE --\n".bold
2014-05-22 20:33:29 -04:00
#task argv1.to_sym do ; end
end
def buildPmUi(homeDir, targetDir, mode)
puts "\nBuilding PMUI library".green.bold
2014-05-22 20:33:29 -04:00
# Defining target directories
pmUIDir = targetDir + "/pmUI"
pmUIFontsDir = targetDir + "/fonts"
jsTargetDir = targetDir + "/js"
cssTargetDir = targetDir + "/css"
imgTargetDir = targetDir + "/img"
version = getVersion(homeDir)
puts "Generating Theme files"
2014-06-04 08:52:35 -04:00
themeDir = Dir.pwd + "/vendor/colosa/MichelangeloFE/themes/mafe"
executeInto(homeDir, ["compileTheme[#{themeDir}]", "js"])
puts "\nCopying lib files into: #{pmUIDir}".bold
copyFiles({
"#{homeDir}/build/js/pmui-#{version}.js" => "#{pmUIDir}/pmui.min.js",
2014-06-04 08:52:35 -04:00
"#{themeDir}/build/pmui-mafe.css" => "#{pmUIDir}/pmui.min.css",
2014-09-19 11:48:21 -04:00
"#{themeDir}/build/images/*" => "#{targetDir}/css/images/",
"#{homeDir}/img/*" => "#{imgTargetDir}"
})
2014-05-22 20:33:29 -04:00
puts "\nCopying lib files into: #{jsTargetDir}".bold
copyFiles({homeDir + "/libraries/restclient/restclient-min.js" => "#{jsTargetDir}/restclient.min.js"})
2014-05-22 20:33:29 -04:00
puts "\nCopying font files into: #{pmUIFontsDir}".bold
theme = "mafe"
copyFiles({"#{homeDir}/themes/#{theme}/fonts/*" => "#{pmUIFontsDir}"})
2014-05-22 20:33:29 -04:00
puts "\nPMUI Build Finished".magenta
end
2014-05-22 20:33:29 -04:00
2014-06-27 13:43:49 -04:00
def buildPmdynaform(homeDir, targetDir, mode)
puts "\nBuilding PmDynaform library".green.bold
# Defining target directories
pmdynaformDir = targetDir + "/pmdynaform"
executeInto(homeDir, [ "default"])
2014-07-31 13:00:14 -04:00
require 'fileutils'
Dir.mkdir("#{pmdynaformDir}/build")
FileUtils.cp_r(Dir["#{homeDir}/build/*"],"#{pmdynaformDir}/build")
Dir.mkdir("#{pmdynaformDir}/libs")
FileUtils.cp_r(Dir["#{homeDir}/libs/*"],"#{pmdynaformDir}/libs")
template = ""
config = File.read "#{homeDir}/config/templates.json"
json = JSON.parse config
json.each do |key|
s = ""
key["files"].each do |source|
2014-07-31 13:00:14 -04:00
s += File.read "#{homeDir}/#{source}"
s += "\n"
end
template += s
end
2015-02-27 18:10:59 -04:00
htmlTemplates=["pmdynaform.html"]
2014-07-31 13:00:14 -04:00
htmlTemplates.each do |htmlTemplate|
FileUtils.cp("#{Dir.pwd}/workflow/engine/templates/cases/#{htmlTemplate}", "#{pmdynaformDir}/build/#{htmlTemplate}")
target = "#{pmdynaformDir}/build/#{htmlTemplate}"
html = File.read target
while html['###TEMPLATES##'] do
html['###TEMPLATES###'] = template
end
File.open(target, 'w+') do |file|
file.write html
end
end
2014-06-27 13:43:49 -04:00
puts "\nPmDynaform Build Finished!".magenta
end
def buildMafe(homeDir, targetDir, mode)
puts "\nBuilding PM Michelangelo FE".green.bold
2014-05-22 20:33:29 -04:00
###
# Defining target directories
mafeDir = targetDir + "/mafe"
jsTargetDir = targetDir + "/js"
cssTargetDir = targetDir + "/css"
imgTargetDir = targetDir + "/img"
##
2014-05-22 20:33:29 -04:00
2014-05-26 11:06:19 -04:00
executeInto(homeDir, ["rmdir", "dir", "compass", "compress_js_files", "compress_app_files"])
#executeInto(homeDir, ["dir", "mafe"])
puts "\nCopying files into: #{mafeDir}".bold
copyFiles({
"#{homeDir}/lib/jQueryUI/images/*.png" => "#{cssTargetDir}/images/",
"#{homeDir}/build/js/designer.js" => "#{mafeDir}/designer.min.js",
"#{homeDir}/build/js/mafe.js" => "#{mafeDir}/mafe.min.js",
"#{homeDir}/build/css/mafe.css" => "#{mafeDir}/mafe.min.css",
2015-03-04 15:51:33 -04:00
"#{homeDir}/img/*.*" => "#{imgTargetDir}"
})
puts "\nCopying lib files into: #{jsTargetDir}".bold
copyFiles({
"#{homeDir}/lib/wz_jsgraphics/wz_jsgraphics.js" => "#{jsTargetDir}/wz_jsgraphics.js",
"#{homeDir}/lib/jQuery/jquery-1.10.2.min.js" => "#{jsTargetDir}/jquery-1.10.2.min.js",
"#{homeDir}/lib/underscore/underscore-min.js" => "#{jsTargetDir}/underscore-min.js",
"#{homeDir}/lib/jQueryUI/jquery-ui-1.10.3.custom.min.js" => "#{jsTargetDir}/jquery-ui-1.10.3.custom.min.js",
"#{homeDir}/lib/jQueryLayout/jquery.layout.min.js" => "#{jsTargetDir}/jquery.layout.min.js",
"#{homeDir}/lib/modernizr/modernizr.js" => "#{jsTargetDir}/modernizr.js"
})
2014-12-16 15:48:11 -04:00
system "cp -rf #{homeDir}/src/formDesigner/img/* #{mafeDir}/../img"
puts "\nMichelangelo FE Build Finished\n".magenta
2014-05-22 20:33:29 -04:00
end
def prepareDirs(dirs)
2014-05-22 20:33:29 -04:00
puts "Preparing Directories..."
dirs.each do |dir|
if File.directory?(dir)
if !File.writable?(dir)
raise "Error, directory " + dir + " is not writable."
end
FileUtils.rm_rf(dir)
end
begin
puts 'create '.green + dir
FileUtils.mkdir_p(dir)
rescue Exception => e
puts ' (failed)'.red
raise RuntimeError, e.message
2014-05-22 20:33:29 -04:00
end
end
end
def getVersion(path)
version = ""
Dir.chdir(path) do
version = `rake version`
version = version.strip
2014-05-22 20:33:29 -04:00
end
if version.lines.count > 1
version = version.split("\n").last
end
return version
2014-05-22 20:33:29 -04:00
end
def getHash(path)
hash = ""
Dir.chdir(path) do
hash = `git rev-parse --short HEAD`
end
return hash.strip
end
def getLogFrom(path)
log = ""
Dir.chdir(path) do
log = `git log -30 --pretty='[%cr] %h %d %s <%an>' --no-merges`
end
return log.strip
end
def executeInto(path, tasks, ret = nil)
output = ''
2014-05-22 20:33:29 -04:00
Dir.chdir(path) do
tasks.each do |task|
system "rake #{task}" or raise "An error was raised executing task '#{task}' into #{path}".red
2014-05-22 20:33:29 -04:00
end
end
return output
2014-05-22 20:33:29 -04:00
end
def copyFiles(files)
files.each do |from, to|
puts " copy ".green + from.gsub(Dir.pwd+'/vendor/colosa/', '')
puts ' into '.green + to.gsub(Dir.pwd, '')
system('cp -Rf '+from+' '+to+' 2>&1') or raise "Can't copy into directory #{to}".red
end
end
def getJsIncludeFiles
includeFiles = [
"workflow/public_html/lib/js/wz_jsgraphics.js",
"workflow/public_html/lib/js/jquery-1.10.2.min.js",
"workflow/public_html/lib/js/underscore-min.js",
"workflow/public_html/lib/js/jquery-ui-1.10.3.custom.min.js",
"workflow/public_html/lib/js/jquery.layout.min.js",
"workflow/public_html/lib/js/modernizr.js",
"workflow/public_html/lib/js/restclient.min.js",
"workflow/public_html/lib/pmUI/pmui.min.js",
"workflow/public_html/lib/mafe/mafe.min.js",
"workflow/public_html/lib/mafe/designer.min.js",
"gulliver/js/tinymce/jscripts/tiny_mce/tiny_mce.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/pmGrids/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/pmSimpleUploader/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/pmVariablePicker/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js",
"gulliver/js/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js",
"gulliver/js/codemirror/lib/codemirror.js",
2015-01-29 17:21:41 -04:00
"gulliver/js/codemirror/addon/hint/show-hint.js",
"gulliver/js/codemirror/addon/hint/javascript-hint.js",
2015-03-23 22:22:10 -04:00
"gulliver/js/codemirror/addon/hint/sql-hint.js",
"gulliver/js/codemirror/addon/hint/php-hint.js",
"gulliver/js/codemirror/mode/javascript/javascript.js",
"gulliver/js/codemirror/addon/edit/matchbrackets.js",
"gulliver/js/codemirror/mode/htmlmixed/htmlmixed.js",
"gulliver/js/codemirror/mode/xml/xml.js",
"gulliver/js/codemirror/mode/css/css.js",
"gulliver/js/codemirror/mode/clike/clike.js",
"gulliver/js/codemirror/mode/php/php.js",
2015-03-23 22:22:10 -04:00
"gulliver/js/codemirror/mode/sql/sql.js"
]
return includeFiles
end
def getCssIncludeFiles
return [
"gulliver/js/codemirror/lib/codemirror.css",
2015-01-29 17:21:41 -04:00
"gulliver/js/codemirror/addon/hint/show-hint.css",
# DEPRECATED
# "gulliver/js/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css",
# "gulliver/js/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css",
# "gulliver/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css",
# "gulliver/js/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css",
#
"workflow/public_html/lib/pmUI/pmui.min.css",
"workflow/public_html/lib/mafe/mafe.min.css"
]
end
class String
def black; "\033[30m#{self}\033[0m" end
def red; "\033[31m#{self}\033[0m" end
def green; "\033[32m#{self}\033[0m" end
def brown; "\033[33m#{self}\033[0m" end
def blue; "\033[34m#{self}\033[0m" end
def magenta; "\033[35m#{self}\033[0m" end
def cyan; "\033[36m#{self}\033[0m" end
def gray; "\033[37m#{self}\033[0m" end
def bg_black; "\033[40m#{self}\0330m" end
def bg_red; "\033[41m#{self}\033[0m" end
def bg_green; "\033[42m#{self}\033[0m" end
def bg_brown; "\033[43m#{self}\033[0m" end
def bg_blue; "\033[44m#{self}\033[0m" end
def bg_magenta; "\033[45m#{self}\033[0m" end
def bg_cyan; "\033[46m#{self}\033[0m" end
def bg_gray; "\033[47m#{self}\033[0m" end
def bold; "\033[1m#{self}\033[22m" end
def reverse_color; "\033[7m#{self}\033[27m" end
end
def getLog
output = `git log -30 --pretty='[%cr] %h %d %s <%an>' --no-merges`
return output
end