lib/octopress-ink/assets/asset.rb in octopress-ink-1.0.0.alpha.33 vs lib/octopress-ink/assets/asset.rb in octopress-ink-1.0.0.alpha.34

- old
+ new

@@ -1,96 +1,114 @@ module Octopress module Ink module Assets class Asset + attr_reader :plugin, :dir, :base, :root, :file + attr_accessor :exists - def initialize(plugin, type, file) + def initialize(plugin, base, file) @file = file - @type = type + @base = base @plugin = plugin @root = plugin.assets_path - @dir = File.join(plugin.slug, type) + @dir = File.join(plugin.slug, base) @exists = {} file_check end def info - message = filename.ljust(25) - if path.to_s == user_path - shortpath = File.join(Plugins.custom_dir, @dir) - message += "(local @ #{shortpath}/#{filename})" + message = filename.ljust(35) + if disabled? + message += "disabled" + elsif self.respond_to?(:url_info) + message += url_info + elsif path.to_s != plugin_path + shortpath = File.join(Plugins.custom_dir, dir) + message += "from: #{shortpath}/#{filename}" end message end def filename - @file + file end + def disabled? + plugin.disabled?(base, filename) + end + def path - if @found_file and !@no_cache + if @found_file @found_file else files = [] files << user_path - files << plugin_path unless @plugin.type == 'local_plugin' + files << plugin_path files = files.flatten.reject { |f| !exists? f } if files.empty? - raise IOError.new "Could not find #{File.basename(@file)} at #{@file}" + raise IOError.new "Could not find #{File.basename(file)} at #{file}" end @found_file = Pathname.new files[0] end end - def file(file) - @file = file - path + def source_dir + if exists? user_override_path + user_dir + else + plugin_dir + end end def destination - File.join(@dir, @file) + File.join(dir, file) end - def copy + def add Plugins.site.static_files << StaticFile.new(path, destination) end + # Copy asset to user override directory + # + def copy(target_dir) + if target_dir + target_dir = File.join(target_dir, base) + else + target_dir = user_dir + end + FileUtils.mkdir_p target_dir + FileUtils.cp plugin_path, target_dir + target_dir.sub!(Dir.pwd+'/', '') + "+ ".green + "#{File.join(target_dir, filename)}" + end + + def plugin_dir - File.join @root, @type + File.join root, base end def plugin_path - File.join plugin_dir, @file + File.join plugin_dir, file end def user_dir - File.join Plugins.site.source, Plugins.custom_dir, @dir + File.join Plugins.site.source, Plugins.custom_dir, dir end def local_plugin_path - File.join Plugins.site.source, @dir, @file + File.join Plugins.site.source, dir, file end def user_override_path - File.join user_dir, @file + File.join user_dir, filename end def user_path - if @plugin.type == 'local_plugin' - local_plugin_path - else - user_override_path - end + user_override_path end - def alt_syntax_file - ext = File.extname(@file) - alt_ext = ext == 'scss' ? 'sass' : 'scss' - @file.sub(/\.#{ext}/, ".#{alt_ext}") - end - # Remove files from Jekyll's static_files array so it doesn't end up in the # compiled site directory. # def remove_jekyll_asset Plugins.site.static_files.clone.each do |sf| @@ -99,17 +117,17 @@ end end end def file_check - if @plugin.type != 'local_plugin' and !exists? plugin_path - raise "\nPlugin: #{@plugin.name}: Could not find #{File.basename(@file)} at #{plugin_path}".red + if !exists? plugin_path + raise "\nPlugin: #{plugin.name}: Could not find #{File.basename(file)} at #{plugin_path}".red end end def exists?(file) - @exists[file] ||= File.exists?(file) - @exists[file] + exists[file] ||= File.exists?(file) + exists[file] end end end end end