lib/tasks/copy.rake
js_dir = 'vendor/assets/javascripts/'
current_path = File.expand_path(File.dirname(__FILE__))
require 'fileutils'
require 'open-uri'
desc 'Copy over source from own pruned angular.code.js repo'
task :copy do |t|
version = ENV['VERSION'] || ''
source_dir = ENV['SOURCE_DIR']
source_dir ||= '/opt/code.angularjs.org'
source_dir = File.expand_path source_dir
if !File.exists?(source_dir) || File.file?(source_dir)
p 'SOURCE_DIR is not a directory or does not exist'
next
end
if version.empty? || !File.exist?(File.join(source_dir, version))
p 'VERSION must target existing version in SOURCE_DIR'
next
end
puts "Target version: #{version.chomp('/')}"
source_version = File.join(source_dir, version)
cp_r source_version, js_dir
rm_rf File.join(js_dir, version, 'docs')
rm_rf File.join(js_dir, version, 'i18n')
Dir.chdir(File.join(js_dir, version)) do
%w(zip min.js json txt js.map css).each do |file_ext|
rm Dir.glob("*.#{file_ext}")
end
end
end
desc 'Fetches angular.js file from code.angular.js'
task :download do |t|
version = ENV['VERSION']
version ||= 'latest'
puts "Target version: #{version.chomp('/')}"
angular_root = "https://code.angularjs.org"
response = open(angular_root)
doc = Nokogiri::HTML(response)
links = doc.css('a')
known_versions = links.map {|link| link.attribute('href').to_s}.uniq.sort.reverse
known_versions.delete_if do |href|
href.empty? || (href =~ /^([0-9]).*\/$/).nil?
end
if !(known_versions.include? version + "/")
puts "WARN: Specified version='#{version}' not found, setting to latest version: '#{known_versions.first}'"
version = known_versions.first
end
# Download all the files
Dir.mkdir(File.join(js_dir, version)) unless Dir.exist?(File.join(js_dir, version))
Dir.chdir(File.join(js_dir, version)) do
response = open("#{angular_root}/#{version}/")
doc = Nokogiri::HTML(response)
links = doc.css('a')
files = links.map {|link| link.attribute('href').to_s}
# Select everything apart from the zip file and directories
# files = files.find_all{|item| !item.end_with?('/') && !item.end_with?('.zip')}
files = files.find_all{|item| !item.end_with?('min.js') && item.end_with?('.js')}
files.each do |file|
next if File.exists?(file)
path = "#{angular_root}/#{version}/#{file}"
puts "Creating #{file}"
File.open(file, 'wb') do |filer|
filer.write open(path).read
end
end
end
end