lib/incloudr.rb in capucine-0.1.2 vs lib/incloudr.rb in capucine-0.1.5
- old
+ new
@@ -1,104 +1,83 @@
module Capucine
class Incloudr
require 'open-uri'
require 'fileutils'
require 'json'
- # require 'uglifier'
require 'packr'
+
@@noderoot = 'http://registry.npmjs.org/'
+ @@cdnjsroot = 'https://raw.github.com/cdnjs/cdnjs/master/ajax/libs/'
def self.run_once
files = Capucine.settings.config['incloudr_libs']
return false if files.length == 0
dir = File.join(Capucine.settings.working_dir, Capucine.settings.config['incloudr_output_dir'])
FileUtils.rm_r dir if File.exist?(dir)
FileUtils.mkdir_p dir
+ @file = nil
files.each {|file| self.pack file}
puts "[incloudr] - Packaged"
end
def self.pack file
- type = file['type'] || 'url'
- self.url(file) if type == 'url'
+ @file = file
+
+ if @file.kind_of? String # CDNJS
+ @file = {}
+ @file['name'] = file
+ @file['type'] = 'cdnjs'
+ else
+ @file['type'] = 'npm' unless @file['source'] # NPM
+ end
+
+ @file['type'] = @file['type'] || 'url' # URL
+
+ @output = File.join(Capucine.settings.working_dir, Capucine.settings.config['incloudr_output_dir'], @file['name'].gsub(/$/, '.js'))
+ @output_min = File.join(Capucine.settings.working_dir, Capucine.settings.config['incloudr_output_dir'], @file['name'].gsub(/$/, '.min.js'))
+
+ self.cdnjs if @file['type'] == 'cdnjs'
+ self.url if @file['type'] == 'url'
# self.npm(file) if type == 'npm'
end
- def self.url file
- output = File.join(Capucine.settings.working_dir, Capucine.settings.config['incloudr_output_dir'], file['name'].gsub(/$/, '.js'))
- output_min = File.join(Capucine.settings.working_dir, Capucine.settings.config['incloudr_output_dir'], file['name'].gsub(/$/, '.min.js'))
-
- content = open(file['source']).read
+ def self.url raw_content = nil
+ content = raw_content || open(@file['source']).read
content_min = ""
content_min << Packr.pack(content)
- f1 = File.open(output, 'w+')
+ f1 = File.open(@output, 'w+')
f1.write(content)
f1.close
- f2 = File.open(output_min, 'w+')
+ f2 = File.open(@output_min, 'w+')
f2.write(content_min)
f2.close
end
+
+ def self.cdnjs
+ cdnjs_url_pkg = "#{@@cdnjsroot}#{@file['name']}/package.json"
+ content = JSON.parse open(cdnjs_url_pkg).read
+ version = @file['version'] || content['version']
+ filename = content['filename']
+ raw_file_url = "#{@@cdnjsroot}#{@file['name']}/#{version}/#{filename}"
+ raw_content = open(raw_file_url).read
+ self.url raw_content
+ end
+
def self.npm file
# infos = JSON.parse open("#{@@noderoot}#{file['name']}").read
# version = file['version'] || infos['dist-tags']['lastest']
# lib = infos['versions'][version]
# tarball_url = lib['dist']['tarball']
# tarball = open(tarball_url).read
- p version
+ # p version
end
-
-
- # def self.pack files
- # s = Capucine.settings
- # out = File.join s.working_dir, s.config['incloudr_output_dir']
-
- # output_file = File.join out, base
- # output_file_min = File.join out, base.gsub('.js', '.min.js')
-
- # FileUtils.mkdir_p out if not File.exist?(out)
-
- # content = ""
-
- # files.each do |js_file|
- # extended = File.join s.working_dir, js_file
- # content << File.read(extended) if File.exist?(extended)
- # end
-
- # f = File.open(output_file, 'w')
- # f.write('')
- # f.write(content)
- # f.close
- # end
-
- # def self.lib_root
- # return "http://dln.name/"
- # end
-
- # def self.compress file
- # return if not File.exist?(file)
- # file_name = file.gsub '.js', ''
- # output_file = "#{file_name}.js"
- # output_file_min = "#{file_name}.min.js"
- # end
-
- # def self.get_lib lib
- # lib_name = lib[0]
- # lib_version = lib[1]
- # lib_url = "#{self.lib_root}#{lib_name}/#{lib_version}"
- # lib_url_min = "#{lib_url}/min"
- # lib_url_cdn = open(lib_url).read
- # lib_url_cdn_min = open(lib_url_min).read
- # lib_content = open(lib_url_cdn).read
- # lib_content_min = open(lib_url_cdn_min).read
- # total = [lib_content, lib_content_min]
- # end
end
end