308 lines
9.0 KiB
Ruby
308 lines
9.0 KiB
Ruby
require 'rubygems'
|
|
|
|
desc "Generate JS libraries"
|
|
task :buildjs do
|
|
begin
|
|
require 'json'
|
|
rescue LoadError
|
|
puts "JSON not found.\nInstall it by running 'gem install json'"
|
|
exit
|
|
end
|
|
puts "Starting libraries generation..."
|
|
|
|
#system "rm -rf gulliver/js-min/"
|
|
#system "rm -rf gulliver/css-min/"
|
|
#Dir.mkdir('gulliver/css-min') unless File.exists?('gulliver/css-min')
|
|
#Dir.mkdir('gulliver/js-min') unless File.exists?('gulliver/js-min')
|
|
|
|
lib_file = File.read 'workflow/engine/bin/tasks/libraries.json'
|
|
libraries = JSON.parse(lib_file);
|
|
libraries.each do |library|
|
|
build = library['build']
|
|
if build
|
|
begin
|
|
require 'closure-compiler'
|
|
rescue LoadError
|
|
puts "closure-compiler not found.\nInstall it by running 'gem install closure-compiler'"
|
|
exit
|
|
end
|
|
buffer_full = ""
|
|
buffer_mini = ""
|
|
buffer_css = ""
|
|
lib_name = library['name']
|
|
files = library['libraries']
|
|
js_path = library['build_js_to']
|
|
css_path = library['build_css_to']
|
|
puts "Processing #{lib_name} file."
|
|
files.each do |lbry|
|
|
puts "Processing library: " + lbry['name']
|
|
buffer_full += File.read lbry['full']
|
|
buffer_mini += File.read lbry['mini']
|
|
if lbry['css']
|
|
buffer_css += File.read lbry['css']
|
|
end
|
|
if lbry['css_images']
|
|
Dir.mkdir(lbry['copy_css_images_to']) unless File.exists?(lbry['copy_css_images_to'])
|
|
system "cp -r " + lbry['css_images'] + " " + lbry['copy_css_images_to'] + "."
|
|
end
|
|
end
|
|
|
|
fileName = lib_name + "-" + getVersion
|
|
|
|
#File.open(js_path + fileName + ".js", 'w+') do |file_full|
|
|
# file_full.write buffer_full
|
|
#end
|
|
#puts "File '#{js_path}#{fileName}.js' has been generated correctly."
|
|
|
|
File.open(js_path + lib_name + '.js', 'w+') do |file_mini|
|
|
file_mini.write Closure::Compiler.new.compress(buffer_mini)
|
|
end
|
|
puts "File '#{js_path}#{fileName}.js' has been generated correctly."
|
|
#puts "File '#{js_path}#{fileName}.min.js' has been generated correctly."
|
|
|
|
#File.open(css_path + fileName + '.css', 'w+') do |file_css|
|
|
# file_css.write buffer_css
|
|
#end
|
|
#puts "File '#{css_path}#{fileName}.css' has been generated correctly."
|
|
end
|
|
end
|
|
|
|
#puts "Copying VERSION.txt"
|
|
#system "cp workflow/engine/bin/tasks/VERSION.js.txt gulliver/js-min/VERSION.txt"
|
|
|
|
puts "Libraries generation DONE"
|
|
end
|
|
|
|
desc "Run Jasmine BDD tests"
|
|
task :jasmine do
|
|
system "jasmine-node --matchall --verbose spec"
|
|
end
|
|
|
|
desc "Create skeleton pages"
|
|
task :skeleton do
|
|
begin
|
|
require 'json'
|
|
rescue LoadError
|
|
puts "JSON not found.\nInstall it by running 'gem install json'"
|
|
exit
|
|
end
|
|
version = getVersion
|
|
template = "<!DOCTYPE html>\n<html>\n<head>\n"
|
|
template += "<title>jCore #{version}</title>\n"
|
|
template += "<link type=\"text/css\" href=\"css/jcore.utils-#{version}.css\" rel=\"stylesheet\" />\n"
|
|
template += "<script type=\"text/javascript\" src=\"js/jcore.utils-#{version}.min.js\" ></script>\n"
|
|
build_file = File.read 'src/build.json'
|
|
sources = JSON.parse(build_file)
|
|
sources.each do |source|
|
|
if source['css']
|
|
template += "<link type=\"text/css\" href=\"css/" + source['name'] + "-#{version}.css\" rel=\"stylesheet\" />\n"
|
|
end
|
|
template += "<script type=\"text/javascript\" src=\"js/" + source['name'] + "-#{version}.min.js\" ></script>\n"
|
|
end
|
|
template += "</head>\n<body>\n"
|
|
template += "<h1>Welcome to jCore FE #{version}</h1>\n"
|
|
template += "</body>\n</html>"
|
|
File.open('index.html', 'w+') do |file|
|
|
file.write template
|
|
end
|
|
puts "File 'index.html' has been generated correctly."
|
|
template = "<!DOCTYPE html>\n<html>\n<head>\n"
|
|
template += "<title>jCore #{version}</title>\n"
|
|
lib_file = File.read 'lib/libraries.json'
|
|
libraries = JSON.parse(lib_file)
|
|
libraries.each do |library|
|
|
if library['build']
|
|
template += "<!--Including " + library['name'] + " files -->\n"
|
|
buffer_js = ""
|
|
buffer_css = ""
|
|
files = library['libraries']
|
|
files.each do |lbry|
|
|
if lbry['full']
|
|
buffer_js += "<script type=\"text/javascript\" src=\"" + lbry['full'] + "\" ></script>\n"
|
|
end
|
|
if lbry['css']
|
|
buffer_css += "<link type=\"text/css\" href=\"" + lbry['css'] + "\" rel=\"stylesheet\" />\n"
|
|
end
|
|
end
|
|
template += buffer_css
|
|
template += buffer_js
|
|
end
|
|
end
|
|
src_file = File.read 'src/build.json'
|
|
sources = JSON.parse(src_file)
|
|
sources.each do |source|
|
|
if source['build']
|
|
template += "<!--Including " + source['name'] + " files -->\n"
|
|
styles = source['css']
|
|
styles.each do |style|
|
|
template += "<link type=\"text/css\" href=\"" + style + "\" rel=\"stylesheet\" />\n"
|
|
end
|
|
files = source['files']
|
|
files.each do |file|
|
|
template += "<script type=\"text/javascript\" src=\"" + file + "\" ></script>\n"
|
|
end
|
|
end
|
|
end
|
|
template += "</head>\n<body>\n"
|
|
template += "<h1>Welcome to jCore FE #{version}</h1>\n"
|
|
template += "</body>\n</html>"
|
|
File.open('devel.html', 'w+') do |file|
|
|
file.write template
|
|
end
|
|
puts "File 'devel.html' has been generated correctly."
|
|
end
|
|
|
|
desc "Set the library's version"
|
|
task :version, :version do |t,args|
|
|
if (args['version'])
|
|
File.open('VERSION.txt', 'w+') do |file|
|
|
file.write args['version']
|
|
end
|
|
end
|
|
end
|
|
|
|
desc "Create a package for distribution"
|
|
task :package do
|
|
begin
|
|
require 'zip/zip'
|
|
require 'zip/zipfilesystem'
|
|
rescue LoadError
|
|
puts "Zip Tools not found.\nInstall it by running 'gem install rubyzip'"
|
|
exit
|
|
end
|
|
begin
|
|
require 'json'
|
|
rescue LoadError
|
|
puts "JSON not found.\nInstall it by running 'gem install json'"
|
|
exit
|
|
end
|
|
system "rm -rf dist/"
|
|
Dir.mkdir('dist') unless File.exists?('dist')
|
|
zip_config = File.read 'dist.json'
|
|
zips = JSON.parse(zip_config)
|
|
zips.each do |zip|
|
|
zip_path = zip['copy_to']
|
|
fileName = zip['fileName']
|
|
type = zip['type']
|
|
version = getVersion
|
|
archive = zip_path + fileName + "-" + version + "-" + type + ".zip";
|
|
FileUtils.rm archive, :force=>true
|
|
Zip::ZipFile.open(archive, 'w') do |zipfile|
|
|
files = zip['files']
|
|
files.each do |file|
|
|
add_files = FileList.new(file)
|
|
add_files.each do |afile|
|
|
zipfile.add(afile,afile)
|
|
end
|
|
end
|
|
puts "File: " + archive + " has been created correctly!"
|
|
end
|
|
end
|
|
end
|
|
|
|
desc "Run JSHint Javascript sniffer"
|
|
task :sniffer do
|
|
system "find src/ -name \"*.js\" -print0 | xargs -0 jslint --sloppy"
|
|
system "jshint src/"
|
|
end
|
|
|
|
desc "Run JSLint tests"
|
|
task :jslint, :file do |t, args|
|
|
if args['file']
|
|
system "find src/ -name \"" + args['file'] + "\" -print0 | xargs -0 jslint --sloppy"
|
|
else
|
|
system "find src/ -name \"*.js\" -print0 | xargs -0 jslint --sloppy"
|
|
end
|
|
end
|
|
|
|
desc "Run JSHint tests"
|
|
task :jshint, :file do |t, args|
|
|
if args['file']
|
|
system "find src/ -name \"" + args['file'] + "\" -print0 | xargs -0 jshint"
|
|
else
|
|
system "jshint src/"
|
|
end
|
|
end
|
|
|
|
desc "Run JSLint for CI Server"
|
|
task :jslint_ci do
|
|
puts "Starting JSLINT test for CI Server"
|
|
failed_files = []
|
|
Dir['src/**/*.js'].each do |name|
|
|
cmd = "jslint --sloppy #{name}"
|
|
results = %x{#{cmd}}
|
|
unless results == name + " is OK"
|
|
failed_files << name
|
|
else
|
|
puts "File: " + name + " ...OK"
|
|
end
|
|
end
|
|
if failed_files.size > 0
|
|
exit 0
|
|
else
|
|
puts "JSLINT testing...DONE"
|
|
end
|
|
end
|
|
|
|
desc "Run Jasmine Test for CI Server"
|
|
task :jasmine_ci do
|
|
puts "Starting JASMINE testing..."
|
|
system "jasmine-node spec/ --junitreport"
|
|
puts "JASMINE testing...DONE"
|
|
end
|
|
|
|
desc "Compile Documentation with JSDoc 3"
|
|
task :docs do
|
|
begin
|
|
require 'json'
|
|
rescue LoadError
|
|
puts "JSON not found.\nInstall it by running 'gem install json'"
|
|
exit
|
|
end
|
|
doc_config = File.read 'docs.json'
|
|
docs = JSON.parse(doc_config)
|
|
docs.each do |doc_file|
|
|
doc_list = ""
|
|
doc_target = doc_file['build_dir']
|
|
files = doc_file['files']
|
|
files.each do |file|
|
|
doc_list += " " + file
|
|
end
|
|
system "jsduck -o " + doc_target + doc_list
|
|
end
|
|
|
|
end
|
|
|
|
desc "Build jCore library"
|
|
task :build, :version do |t, args|
|
|
if args['version']
|
|
Rake::Task['version'].invoke(args['version'])
|
|
end
|
|
Rake::Task['buildjs'].execute
|
|
#Rake::Task['skeleton'].execute
|
|
#Rake::Task['docs'].execute
|
|
#Rake::Task['package'].execute
|
|
puts "jCore " + getVersion + " has been build correctly."
|
|
end
|
|
|
|
desc "Default Task - Build Library"
|
|
task :default do
|
|
Rake::Task['build'].execute
|
|
end
|
|
|
|
desc "Run Violations Test for CI Server"
|
|
task :violations do
|
|
Dir.mkdir('violations') unless File.exists?('violations')
|
|
Dir.mkdir('violations/js') unless File.exists?('violations/js')
|
|
Dir.mkdir('violations/css') unless File.exists?('violations/css')
|
|
system "nodelint src --config config/jslint.js --reporter=xml > violations/js/jslint.xml"
|
|
system "csslint src --format=checkstyle-xml > violations/css/checkstyle.xml"
|
|
system "csslint src --format=lint-xml > violations/css/csslint.xml"
|
|
end
|
|
|
|
def getVersion
|
|
version = File.read 'workflow/engine/bin/tasks/VERSION.js.txt'
|
|
return version
|
|
exit
|
|
end
|