Update rakefile to translations update Rakefile for translations update intervals in Task Schedule update insert.sql error in instalation add Translations in index.php task scheduler fix timezone in execution on task scheduler fix timezone add translation to TASKSCHEDULER control for intervals in task scheduler is last_update property PMCORE-1549 PMCORE-1542 Revert "PMCORE-1542 (pull request #7355)" This reverts pull request #7355. > PMCORE-1542 fix schedule Run command
501 lines
18 KiB
Ruby
Executable File
501 lines
18 KiB
Ruby
Executable File
require 'rubygems'
|
|
require 'json'
|
|
require "po_to_json"
|
|
|
|
class PoToJson
|
|
def _generate_for_json(language, overwrite = {})
|
|
@options = parse_options(overwrite.merge(language: language))
|
|
#parse_document
|
|
#@parsed ||= inject_meta(parse_document)
|
|
generated = build_json_for(parse_document)
|
|
end
|
|
end
|
|
|
|
|
|
desc "Default Task - Build Library"
|
|
task :default => [:required] do
|
|
Rake::Task['build'].execute
|
|
end
|
|
|
|
|
|
task :required do
|
|
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
|
|
end
|
|
|
|
task :log do
|
|
puts getLog
|
|
end
|
|
|
|
desc "Build Front-End for ProcessMaker"
|
|
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"
|
|
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"
|
|
pmdynaformDir = targetDir + "/pmdynaform"
|
|
|
|
generateEnviromentVariables
|
|
prepareDirs([targetDir, pmUIDir, mafeDir, pmdynaformDir, jsTargetDir, cssTargetDir, cssImagesTargetDir, imgTargetDir, pmUIFontsDir])
|
|
|
|
buildPmUi(Dir.pwd + "/vendor/colosa/pmUI", targetDir, mode)
|
|
buildPmdynaform(Dir.pwd + "/vendor/colosa/pmDynaform", targetDir, mode)
|
|
buildPmdynaformZip(Dir.pwd + "/vendor/colosa/pmDynaform", publicDir)
|
|
buildMafe(Dir.pwd + "/vendor/colosa/MichelangeloFE", targetDir, mode)
|
|
|
|
|
|
|
|
pmuiHash = getHash(Dir.pwd + "/vendor/colosa/pmUI")
|
|
mafeHash = getHash(Dir.pwd + "/vendor/colosa/MichelangeloFE")
|
|
pmdynaformHash = getHash(Dir.pwd + "/vendor/colosa/pmDynaform")
|
|
|
|
puts "Building PO to JSON".cyan
|
|
|
|
Dir["#{Dir.pwd}/workflow/engine/content/translations/*.po"].each do |file|
|
|
lang = file.split('.')
|
|
json_string = PoToJson.new(file)._generate_for_json(lang[1], :pretty => true)
|
|
File.open("#{Dir.pwd}/workflow/public_html/translations/#{lang[1]}.json",'w').write(json_string)
|
|
puts file
|
|
end
|
|
|
|
|
|
puts "Building file: Task Scheduler".cyan
|
|
system "npm run build --prefix #{Dir.pwd}/vendor/colosa/taskscheduler"
|
|
system "cp -Rf #{Dir.pwd}/vendor/colosa/taskscheduler/taskscheduler #{targetDir}/taskscheduler"
|
|
system "cp #{Dir.pwd}/vendor/colosa/taskscheduler/public/index.html #{targetDir}/taskscheduler"
|
|
|
|
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 = ""
|
|
|
|
getCssIncludeFiles().each do |filename|
|
|
mafeCompresedContent += File.read filename
|
|
mafeCompresedContent += "\n"
|
|
end
|
|
|
|
File.open(mafeCompresedFile, 'w+') do |writeFile|
|
|
writeFile.write mafeCompresedContent
|
|
end
|
|
|
|
# Create buildhash file
|
|
puts "create file: " + "/buildhash".cyan
|
|
File.open(targetDir+"/buildhash", 'w+') do |writeFile|
|
|
writeFile.write hashVendors
|
|
end
|
|
|
|
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
|
|
}
|
|
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
|
|
#task argv1.to_sym do ; end
|
|
end
|
|
|
|
def generateEnviromentVariables()
|
|
puts "Creating System Constants..."
|
|
content = "var __env = __env || {};"
|
|
file = File.read('./config/enviromentvariables.json')
|
|
dataUser = JSON.parse(file)
|
|
content = content + "__env.USER_GUEST = " + JSON.generate(dataUser['constants']['userguest'])
|
|
content = content + "; __env.pmVariable = " + JSON.generate(dataUser['validation']['pmVariable'])
|
|
dir = "vendor/colosa/MichelangeloFE/src/enviroment/"
|
|
# create a directory enviroment
|
|
FileUtils.mkdir_p(dir)
|
|
File.open(dir +'constants.js', 'w') { |fileWrite|
|
|
fileWrite.write content + ';'
|
|
}
|
|
end
|
|
|
|
def buildPmUi(homeDir, targetDir, mode)
|
|
puts "\nBuilding PMUI library".green.bold
|
|
|
|
# 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"
|
|
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",
|
|
"#{themeDir}/build/pmui-mafe.css" => "#{pmUIDir}/pmui.min.css",
|
|
"#{themeDir}/build/images/*" => "#{targetDir}/css/images/",
|
|
"#{homeDir}/img/*" => "#{imgTargetDir}"
|
|
})
|
|
|
|
puts "\nCopying lib files into: #{jsTargetDir}".bold
|
|
copyFiles({homeDir + "/libraries/restclient/restclient-min.js" => "#{jsTargetDir}/restclient.min.js"})
|
|
|
|
puts "\nCopying font files into: #{pmUIFontsDir}".bold
|
|
theme = "mafe"
|
|
copyFiles({"#{homeDir}/themes/#{theme}/fonts/*" => "#{pmUIFontsDir}"})
|
|
|
|
puts "\nPMUI Build Finished".magenta
|
|
end
|
|
|
|
def buildPmdynaform(homeDir, targetDir, mode)
|
|
puts "\nBuilding PmDynaform library".green.bold
|
|
|
|
# Defining target directories
|
|
pmdynaformDir = targetDir + "/pmdynaform"
|
|
|
|
executeInto(homeDir, [ "default"])
|
|
|
|
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|
|
|
s += File.read "#{homeDir}/#{source}"
|
|
s += "\n"
|
|
end
|
|
template += s
|
|
end
|
|
|
|
htmlTemplates=["pmdynaform.html"]
|
|
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
|
|
|
|
puts "\nPmDynaform Build Finished!".magenta
|
|
end
|
|
|
|
def buildPmdynaformZip(homeDir, targetDir)
|
|
puts "\nBuilding Compress Zip library".green.bold
|
|
executeInto(homeDir, [ "mobile"])
|
|
copyFiles({homeDir + "/build-prod-zip/build-prod.zip" => targetDir + "/build-prod.zip"})
|
|
File.chmod(0777, targetDir + "/build-prod.zip")
|
|
puts "\nPmDynaform Zip Build Finished!".magenta
|
|
end
|
|
|
|
def buildMafe(homeDir, targetDir, mode)
|
|
puts "\nBuilding PM Michelangelo FE".green.bold
|
|
|
|
###
|
|
# Defining target directories
|
|
mafeDir = targetDir + "/mafe"
|
|
jsTargetDir = targetDir + "/js"
|
|
cssTargetDir = targetDir + "/css"
|
|
imgTargetDir = targetDir + "/img"
|
|
##
|
|
|
|
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",
|
|
"#{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"
|
|
})
|
|
system "cp -rf #{homeDir}/src/formDesigner/img/* #{mafeDir}/../img"
|
|
|
|
puts "\nMichelangelo FE Build Finished\n".magenta
|
|
end
|
|
|
|
def prepareDirs(dirs)
|
|
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
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
def getVersion(path)
|
|
version = ""
|
|
Dir.chdir(path) do
|
|
version = `rake version`
|
|
version = version.strip
|
|
end
|
|
|
|
if version.lines.count > 1
|
|
version = version.split("\n").last
|
|
end
|
|
|
|
return version
|
|
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 = ''
|
|
|
|
Dir.chdir(path) do
|
|
tasks.each do |task|
|
|
system "rake #{task}" or raise "An error was raised executing task '#{task}' into #{path}".red
|
|
end
|
|
end
|
|
|
|
return output
|
|
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/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",
|
|
"gulliver/js/codemirror/addon/hint/show-hint.js",
|
|
"gulliver/js/codemirror/addon/hint/javascript-hint.js",
|
|
"gulliver/js/codemirror/addon/hint/sql-hint.js",
|
|
"gulliver/js/codemirror/addon/hint/php-hint.js",
|
|
"gulliver/js/codemirror/addon/hint/html-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",
|
|
"gulliver/js/codemirror/mode/sql/sql.js"
|
|
]
|
|
|
|
return includeFiles
|
|
end
|
|
|
|
def getCssIncludeFiles
|
|
return [
|
|
"gulliver/js/codemirror/lib/codemirror.css",
|
|
"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
|
|
|
|
def generate_for_json()
|
|
@overwrite = {pretty: false}
|
|
@options = parse_options(overwrite.merge(language: 'en'))
|
|
@parsed ||= inject_meta(parse_document)
|
|
|
|
generated = build_json_for(build_json_for(@parsed))
|
|
end |