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