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 = "\n\n
\n"
template += "jCore #{version}\n"
template += "\n"
template += "\n"
build_file = File.read 'src/build.json'
sources = JSON.parse(build_file)
sources.each do |source|
if source['css']
template += "\n"
end
template += "\n"
end
template += "\n\n"
template += "
Welcome to jCore FE #{version}
\n"
template += "\n"
File.open('index.html', 'w+') do |file|
file.write template
end
puts "File 'index.html' has been generated correctly."
template = "\n\n\n"
template += "jCore #{version}\n"
lib_file = File.read 'lib/libraries.json'
libraries = JSON.parse(lib_file)
libraries.each do |library|
if library['build']
template += "\n"
buffer_js = ""
buffer_css = ""
files = library['libraries']
files.each do |lbry|
if lbry['full']
buffer_js += "\n"
end
if lbry['css']
buffer_css += "\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 += "\n"
styles = source['css']
styles.each do |style|
template += "\n"
end
files = source['files']
files.each do |file|
template += "\n"
end
end
end
template += "\n\n"
template += "
Welcome to jCore FE #{version}
\n"
template += "\n"
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