lib/slideshow/cli/commands/quick.rb in slideshow-1.2.0.beta2 vs lib/slideshow/cli/commands/quick.rb in slideshow-1.2.0.beta3
- old
+ new
@@ -11,37 +11,90 @@
end
attr_reader :logger, :opts, :config
def run
- manifest_name = 'welcome.txt.quick'
+ manifest_name = opts.quick_manifest
+ ### todo:fix: always download quickstart templates (except welcome?)
+ # how to make sure the won't go stale in the cache after the download?
+
manifests = installed_quick_manifests
- matches = manifests.select { |m| m[0] == manifest_name }
+ matches = manifests.select { |m| m[0] == manifest_name+'.txt.quick' }
if matches.empty?
- puts "*** error: unknown quick template manifest '#{manifest_name}'"
- # todo: list installed manifests
- exit 2
+ fetch_pak( manifest_name )
+
+ # retry
+ manifests = installed_quick_manifests
+ matches = manifests.select { |m| m[0] == manifest_name+'.txt.quick' }
+ if matches.empty?
+ puts "*** error: quickstart template #{manifest_name} not found"
+ exit 2
+ end
end
-
+
manifestsrc = matches[0][1]
pakpath = opts.output_path
logger.debug( "manifestsrc=>#{manifestsrc}<, pakpath=>#{pakpath}<" )
Pakman::Copier.new( logger ).copy_pak( manifestsrc, pakpath )
end
+
+
+ def fetch_pak( shortcut )
+ src = config.map_quick_shortcut( shortcut )
+
+ if src.nil?
+ puts "*** error: no mapping found for quick shortcut '#{shortcut}'."
+ exit 2
+ end
+
+ puts " Mapping quick shortcut '#{shortcut}' to: #{src}"
+
+
+ # src = 'http://github.com/geraldb/slideshow/raw/d98e5b02b87ee66485431b1bee8fb6378297bfe4/code/templates/fullerscreen.txt'
+ # src = 'http://github.com/geraldb/sandbox/raw/13d4fec0908fbfcc456b74dfe2f88621614b5244/s5blank/s5blank.txt'
+ uri = URI.parse( src )
+ logger.debug "scheme: #{uri.scheme}, host: #{uri.host}, port: #{uri.port}, path: #{uri.path}"
+
+ basename = File.basename( uri.path, '.*' ) # e.g. fullerscreen (without extension)
+ logger.debug "basename: #{basename}"
+
+ #### fix: in find manifests
+ ## check for directories!!!
+ ## exclude directories in match
+
+
+ ## remove (.txt) in basename
+ pakpath = File.expand_path( "#{config.config_dir}/quick/#{basename.gsub('.txt','')}.quick" )
+ logger.debug "pakpath: #{pakpath}"
+
+
+ Pakman::Fetcher.new( logger ).fetch_pak( src, pakpath )
+ end # method fetch_pak
+
private
- def installed_quick_manifests
- # 1) search gem/templates
- patterns = [
+ def installed_quick_manifests
+ # 1) search config_dir/templates
+ # 2) search gem/templates
+
+ builtin_patterns = [
"#{Slideshow.root}/templates/*.txt.quick"
]
+ config_patterns = [
+ "#{config.config_dir}/quick/*.txt.quick",
+ "#{config.config_dir}/quick/*/*.txt.quick"
+ ]
+ patterns = []
+ patterns += config_patterns
+ patterns += builtin_patterns
+
Pakman::Finder.new( logger ).find_manifests( patterns )
end
end # class GenTemplates
end # module Slideshow
\ No newline at end of file