Class: Pluto::Formatter

Inherits:
Object
  • Object
show all
Includes:
LogUtils::Logging, Models, ManifestHelper, TextUtils::DateHelper, TextUtils::HypertextHelper
Defined in:
lib/pluto/merge/formatter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ManifestHelper

#installed_template_manifest_patterns, #installed_template_manifests

Constructor Details

#initialize(opts, config) ⇒ Formatter

Returns a new instance of Formatter.

[View source]

16
17
18
19
# File 'lib/pluto/merge/formatter.rb', line 16

def initialize( opts, config )
  @opts    = opts
  @config  = config
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.


21
22
23
# File 'lib/pluto/merge/formatter.rb', line 21

def config
  @config
end

#optsObject (readonly)

Returns the value of attribute opts.


21
22
23
# File 'lib/pluto/merge/formatter.rb', line 21

def opts
  @opts
end

#siteObject (readonly)

Returns the value of attribute site.


21
22
23
# File 'lib/pluto/merge/formatter.rb', line 21

def site
  @site
end

Instance Method Details

#make_for(site_key, manifest_name, output_path) ⇒ Object

[View source]

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/pluto/merge/formatter.rb', line 39

def make_for( site_key, manifest_name, output_path )

  ## fix: remove reference to opts
  ##  - e.g. now still used for auto-installer

  manifest_name = manifest_name.downcase.gsub('.txt', '' )  # remove .txt if present

  logger.debug "manifest=#{manifest_name}"

  # check for matching manifests
  manifests = installed_template_manifests.select { |m| m[0] == manifest_name+'.txt' }
      
  if manifests.empty?
    
    ### try - autodownload
    puts "*** template pack '#{manifest_name}' not found; trying auto-install..."
    
    Installer.new( opts ).install( manifest_name )

    ### try again
    
    # check for matching manifests
    manifests = installed_template_manifests.select { |m| m[0] == manifest_name+'.txt' }
    
    if manifests.empty?
       puts "*** error: unknown template pack '#{manifest_name}'; use pluto ls to list installed template packs"
       exit 2
    end
  end

  manifestsrc = manifests[0][1]
  pakpath     = output_path

  @site = Site.find_by_key( site_key )
  if @site.nil?
    puts "*** warn: no site with key '#{site_key}' found; using untitled site record"
    @site = Site.new
    @site.title = 'Planet Untitled'
  end

  Pakman::Templater.new.merge_pak( manifestsrc, pakpath, binding, site_key )
end

#run(arg) ⇒ Object

[View source]

24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/pluto/merge/formatter.rb', line 24

def run( arg )
  ### remove - always use make( site_key )
  ## fix: change arg to planet_key or just key or similar
  #  todo: rename run to some less generic  - merge/build/etc. ??
  
  site_key = arg
  site_key = site_key.downcase.gsub('.ini','').gsub('.yml','')  # remove .ini|.yml extension if present

  manifest_name = opts.manifest
  output_path   = opts.output_path

  make_for(site_key, manifest_name, output_path )
end