pluto-merge 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/HISTORY.md +4 -0
- data/Manifest.txt +11 -0
- data/README.md +23 -0
- data/Rakefile +32 -0
- data/config/pluto.index.yml +23 -0
- data/lib/pluto/merge.rb +30 -0
- data/lib/pluto/merge/formatter.rb +84 -0
- data/lib/pluto/merge/installer.rb +61 -0
- data/lib/pluto/merge/lister.rb +45 -0
- data/lib/pluto/merge/manifest_helpers.rb +58 -0
- data/lib/pluto/merge/version.rb +25 -0
- metadata +130 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6f65a81d1169d50cf94b9d886708d28cfa39d69a
|
4
|
+
data.tar.gz: b69cf925744453ad8b98f23862cf9d09214dfba2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 59bea70bcb0aef67af58f204d86bafffc879172837b344c1df9c39b2f25b056f0d2a05eb9985680912c919223fd5a924207dd432716b147550c9dc9aef2cda91
|
7
|
+
data.tar.gz: 3c5c941a71df99c91b3746ba281683c48dd7b20995a46405987c02345cba1e655e363133a4e31ebc3ae1b0d25b86bb53fa75992e6fb942cf7b20438e097b7316
|
data/HISTORY.md
ADDED
data/Manifest.txt
ADDED
data/README.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# pluto-merge gem - planet site generator (that is, merge 'n' manage planet templates)
|
2
|
+
|
3
|
+
* home :: [github.com/feedreader/pluto-merge](https://github.com/feedreader/pluto-merge)
|
4
|
+
* bugs :: [github.com/feedreader/pluto-merge/issues](https://github.com/feedreader/pluto-merge/issues)
|
5
|
+
* gem :: [rubygems.org/gems/pluto-merge](https://rubygems.org/gems/pluto-merge)
|
6
|
+
* rdoc :: [rubydoc.info/gems/pluto-merge](http://rubydoc.info/gems/pluto-merge)
|
7
|
+
* forum :: [groups.google.com/group/feedreader](http://groups.google.com/group/feedreader)
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
## License
|
16
|
+
|
17
|
+
The `pluto-merge` scripts are dedicated to the public domain.
|
18
|
+
Use it as you please with no restrictions whatsoever.
|
19
|
+
|
20
|
+
## Questions? Comments?
|
21
|
+
|
22
|
+
Send them along to the [Planet Pluto and Friends Forum/Mailing List](http://groups.google.com/group/feedreader).
|
23
|
+
Thanks!
|
data/Rakefile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'hoe'
|
2
|
+
require './lib/pluto/merge/version.rb'
|
3
|
+
|
4
|
+
Hoe.spec 'pluto-merge' do
|
5
|
+
|
6
|
+
self.version = PlutoMerge::VERSION
|
7
|
+
|
8
|
+
self.summary = "pluto-merge - planet site generator (that is, merge 'n' manage planet templates)"
|
9
|
+
self.description = summary
|
10
|
+
|
11
|
+
self.urls = ['https://github.com/feedreader/pluto-merge']
|
12
|
+
|
13
|
+
self.author = 'Gerald Bauer'
|
14
|
+
self.email = 'feedreader@googlegroups.com'
|
15
|
+
|
16
|
+
# switch extension to .markdown for gihub formatting
|
17
|
+
self.readme_file = 'README.md'
|
18
|
+
self.history_file = 'HISTORY.md'
|
19
|
+
|
20
|
+
self.extra_deps = [
|
21
|
+
['pluto-models', '>= 1.2.2'],
|
22
|
+
['pakman', '>= 0.5.0'],
|
23
|
+
['fetcher', '>= 0.4.4'],
|
24
|
+
]
|
25
|
+
|
26
|
+
self.licenses = ['Public Domain']
|
27
|
+
|
28
|
+
self.spec_extras = {
|
29
|
+
required_ruby_version: '>= 1.9.2'
|
30
|
+
}
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#########################################
|
2
|
+
# Pluto Update Index for Template Packs
|
3
|
+
|
4
|
+
|
5
|
+
#############
|
6
|
+
# shortcuts for fetching template packs
|
7
|
+
# maps shortcut to URI
|
8
|
+
|
9
|
+
blank: https://raw.github.com/planet-templates/planet-blank/master/blank.txt
|
10
|
+
|
11
|
+
top: https://raw.github.com/planet-templates/planet-top/master/top.txt
|
12
|
+
|
13
|
+
news: https://raw.github.com/planet-templates/planet-news/master/news.txt
|
14
|
+
|
15
|
+
feeds: https://raw.github.com/planet-templates/planet-feeds/master/feeds.txt
|
16
|
+
|
17
|
+
classic: https://raw.github.com/planet-templates/planet-classic/master/classic.txt
|
18
|
+
|
19
|
+
|
20
|
+
####
|
21
|
+
# all:
|
22
|
+
# - add why? why not??
|
23
|
+
#
|
data/lib/pluto/merge.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'pluto/models'
|
4
|
+
|
5
|
+
# 3rd party ruby gems/libs
|
6
|
+
|
7
|
+
require 'pakman' # template pack manager
|
8
|
+
require 'fetcher'
|
9
|
+
|
10
|
+
# our own code
|
11
|
+
|
12
|
+
require 'pluto/merge/version' # note: let version always get first
|
13
|
+
require 'pluto/merge/manifest_helpers'
|
14
|
+
require 'pluto/merge/installer'
|
15
|
+
require 'pluto/merge/lister'
|
16
|
+
require 'pluto/merge/formatter'
|
17
|
+
|
18
|
+
|
19
|
+
module Pluto
|
20
|
+
|
21
|
+
def self.generator # convenience alias for banner (matches HTML generator meta tag)
|
22
|
+
"Pluto #{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
23
|
+
end
|
24
|
+
|
25
|
+
end # module Pluto
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
# say hello
|
30
|
+
puts PlutoMerge.banner if $DEBUG || (defined?($RUBYLIBS_DEBUG) && $RUBYLIBS_DEBUG)
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
module Pluto
|
5
|
+
|
6
|
+
class Formatter
|
7
|
+
|
8
|
+
include LogUtils::Logging
|
9
|
+
|
10
|
+
include Models
|
11
|
+
include ManifestHelper
|
12
|
+
|
13
|
+
include TextUtils::DateHelper # e.g. lets us use time_ago_in_words
|
14
|
+
include TextUtils::HypertextHelper # e.g. lets us use link_to, strip_tags, sanitize, textify, etc.
|
15
|
+
|
16
|
+
def initialize( opts, config )
|
17
|
+
@opts = opts
|
18
|
+
@config = config
|
19
|
+
end
|
20
|
+
|
21
|
+
attr_reader :opts, :config, :site
|
22
|
+
|
23
|
+
|
24
|
+
def run( arg )
|
25
|
+
### remove - always use make( site_key )
|
26
|
+
## fix: change arg to planet_key or just key or similar
|
27
|
+
# todo: rename run to some less generic - merge/build/etc. ??
|
28
|
+
|
29
|
+
site_key = arg
|
30
|
+
site_key = site_key.downcase.gsub('.ini','').gsub('.yml','') # remove .ini|.yml extension if present
|
31
|
+
|
32
|
+
manifest_name = opts.manifest
|
33
|
+
output_path = opts.output_path
|
34
|
+
|
35
|
+
make_for(site_key, manifest_name, output_path )
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
def make_for( site_key, manifest_name, output_path )
|
40
|
+
|
41
|
+
## fix: remove reference to opts
|
42
|
+
## - e.g. now still used for auto-installer
|
43
|
+
|
44
|
+
manifest_name = manifest_name.downcase.gsub('.txt', '' ) # remove .txt if present
|
45
|
+
|
46
|
+
logger.debug "manifest=#{manifest_name}"
|
47
|
+
|
48
|
+
# check for matching manifests
|
49
|
+
manifests = installed_template_manifests.select { |m| m[0] == manifest_name+'.txt' }
|
50
|
+
|
51
|
+
if manifests.empty?
|
52
|
+
|
53
|
+
### try - autodownload
|
54
|
+
puts "*** template pack '#{manifest_name}' not found; trying auto-install..."
|
55
|
+
|
56
|
+
Installer.new( opts ).install( manifest_name )
|
57
|
+
|
58
|
+
### try again
|
59
|
+
|
60
|
+
# check for matching manifests
|
61
|
+
manifests = installed_template_manifests.select { |m| m[0] == manifest_name+'.txt' }
|
62
|
+
|
63
|
+
if manifests.empty?
|
64
|
+
puts "*** error: unknown template pack '#{manifest_name}'; use pluto ls to list installed template packs"
|
65
|
+
exit 2
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
manifestsrc = manifests[0][1]
|
70
|
+
pakpath = output_path
|
71
|
+
|
72
|
+
@site = Site.find_by_key( site_key )
|
73
|
+
if @site.nil?
|
74
|
+
puts "*** warn: no site with key '#{site_key}' found; using untitled site record"
|
75
|
+
@site = Site.new
|
76
|
+
@site.title = 'Planet Untitled'
|
77
|
+
end
|
78
|
+
|
79
|
+
Pakman::Templater.new.merge_pak( manifestsrc, pakpath, binding, site_key )
|
80
|
+
end
|
81
|
+
|
82
|
+
end # class Formatter
|
83
|
+
|
84
|
+
end # module Pluto
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
module Pluto
|
5
|
+
|
6
|
+
class Installer
|
7
|
+
|
8
|
+
### fix: remove opts, use config (wrapped!!)
|
9
|
+
|
10
|
+
include LogUtils::Logging
|
11
|
+
|
12
|
+
def initialize( opts )
|
13
|
+
@opts = opts
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_reader :opts
|
17
|
+
|
18
|
+
|
19
|
+
def install( shortcut_or_source )
|
20
|
+
|
21
|
+
logger.debug "fetch >#{shortcut_or_source}<"
|
22
|
+
|
23
|
+
## check for builtin shortcut (assume no / or \)
|
24
|
+
if shortcut_or_source.index( '/' ).nil? && shortcut_or_source.index( '\\' ).nil?
|
25
|
+
shortcut = shortcut_or_source
|
26
|
+
sources = opts.map_fetch_shortcut( shortcut )
|
27
|
+
|
28
|
+
if sources.empty?
|
29
|
+
puts "** Error: No mapping found for shortcut '#{shortcut}'."
|
30
|
+
return
|
31
|
+
end
|
32
|
+
puts " Mapping fetch shortcut '#{shortcut}' to: #{sources.join(',')}"
|
33
|
+
else
|
34
|
+
sources = [shortcut_or_source] # pass arg through unmapped
|
35
|
+
end
|
36
|
+
|
37
|
+
sources.each do |source|
|
38
|
+
install_template( source )
|
39
|
+
end
|
40
|
+
|
41
|
+
end # method run
|
42
|
+
|
43
|
+
|
44
|
+
def install_template( src )
|
45
|
+
# src = 'http://github.com/geraldb/slideshow/raw/d98e5b02b87ee66485431b1bee8fb6378297bfe4/code/templates/fullerscreen.txt'
|
46
|
+
# src = 'http://github.com/geraldb/sandbox/raw/13d4fec0908fbfcc456b74dfe2f88621614b5244/s5blank/s5blank.txt'
|
47
|
+
uri = URI.parse( src )
|
48
|
+
logger.debug "scheme: #{uri.scheme}, host: #{uri.host}, port: #{uri.port}, path: #{uri.path}"
|
49
|
+
|
50
|
+
pakname = File.basename( uri.path ).downcase.gsub('.txt','')
|
51
|
+
pakpath = File.expand_path( "#{opts.config_path}/#{pakname}" )
|
52
|
+
|
53
|
+
logger.debug "packname >#{pakname}<"
|
54
|
+
logger.debug "pakpath >#{pakpath}<"
|
55
|
+
|
56
|
+
Pakman::Fetcher.new.fetch_pak( src, pakpath )
|
57
|
+
end
|
58
|
+
|
59
|
+
end # class Installer
|
60
|
+
|
61
|
+
end # module Pluto
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
module Pluto
|
5
|
+
|
6
|
+
class Lister
|
7
|
+
|
8
|
+
include LogUtils::Logging
|
9
|
+
|
10
|
+
include ManifestHelper
|
11
|
+
|
12
|
+
def initialize( opts )
|
13
|
+
@opts = opts
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_reader :opts
|
17
|
+
|
18
|
+
def list
|
19
|
+
home = Env.home
|
20
|
+
## replace home w/ ~ (to make out more readable (shorter))
|
21
|
+
## e.g. use gsub( home, '~' )
|
22
|
+
|
23
|
+
puts ''
|
24
|
+
puts 'Installed template packs in search path'
|
25
|
+
|
26
|
+
installed_template_manifest_patterns.each_with_index do |pattern,i|
|
27
|
+
puts " [#{i+1}] #{pattern.gsub(home,'~')}"
|
28
|
+
end
|
29
|
+
puts ' include:'
|
30
|
+
|
31
|
+
manifests = installed_template_manifests
|
32
|
+
if manifests.empty?
|
33
|
+
puts " -- none --"
|
34
|
+
else
|
35
|
+
manifests.each do |manifest|
|
36
|
+
pakname = manifest[0].gsub('.txt','')
|
37
|
+
manifestpath = manifest[1].gsub(home,'~')
|
38
|
+
puts "%16s (%s)" % [pakname,manifestpath]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end # method list
|
42
|
+
|
43
|
+
end # class Lister
|
44
|
+
|
45
|
+
end # module Pluto
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Pluto
|
4
|
+
|
5
|
+
###
|
6
|
+
# Note: requires/needs
|
7
|
+
# opts.config_path reference
|
8
|
+
|
9
|
+
|
10
|
+
module ManifestHelper
|
11
|
+
|
12
|
+
## shared methods for handling manifest lookups
|
13
|
+
##
|
14
|
+
# note: required attribs (in host class) include:
|
15
|
+
# - opts.config_path
|
16
|
+
|
17
|
+
def installed_template_manifest_patterns
|
18
|
+
|
19
|
+
# 1) search . # that is, working/current dir
|
20
|
+
# 2) search <config_dir>
|
21
|
+
# 3) search <gem>/templates
|
22
|
+
|
23
|
+
###
|
24
|
+
# Note
|
25
|
+
# -- for now - no longer ship w/ builtin template packs
|
26
|
+
# - download on demand if needed
|
27
|
+
|
28
|
+
builtin_patterns = [
|
29
|
+
## "#{Pluto.root}/templates/*.txt"
|
30
|
+
]
|
31
|
+
config_patterns = [
|
32
|
+
## "#{File.expand_path(opts.config_path)}/*.txt",
|
33
|
+
"#{File.expand_path(opts.config_path)}/*/*.txt"
|
34
|
+
]
|
35
|
+
current_patterns = [
|
36
|
+
## "*.txt",
|
37
|
+
"*/*.txt",
|
38
|
+
"node_modules/*/*.txt", # note: add support for npm installs - use/make slideshow required in name? for namespace in the future???
|
39
|
+
]
|
40
|
+
|
41
|
+
patterns = []
|
42
|
+
patterns += current_patterns
|
43
|
+
patterns += config_patterns
|
44
|
+
patterns += builtin_patterns
|
45
|
+
end
|
46
|
+
|
47
|
+
def installed_template_manifests
|
48
|
+
excludes = [
|
49
|
+
"Manifest.txt",
|
50
|
+
"*/Manifest.txt"
|
51
|
+
]
|
52
|
+
|
53
|
+
Pakman::Finder.new.find_manifests( installed_template_manifest_patterns, excludes )
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
end # module Manifest
|
58
|
+
end # module Slideshow
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
module PlutoMerge
|
5
|
+
|
6
|
+
MAJOR = 1
|
7
|
+
MINOR = 1
|
8
|
+
PATCH = 0
|
9
|
+
VERSION = [MAJOR,MINOR,PATCH].join('.')
|
10
|
+
|
11
|
+
def self.version
|
12
|
+
VERSION
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.banner
|
16
|
+
### todo: add RUBY_PATCHLEVEL or RUBY_PATCH_LEVEL e.g. -p124
|
17
|
+
"pluto-merge/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.root
|
21
|
+
"#{File.expand_path( File.dirname(File.dirname(File.dirname(File.dirname(__FILE__)))) )}"
|
22
|
+
end
|
23
|
+
|
24
|
+
end # module PlutoUpdate
|
25
|
+
|
metadata
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pluto-merge
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gerald Bauer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-12-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: pluto-models
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.2.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.2.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pakman
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.5.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.5.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: fetcher
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.4.4
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.4.4
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rdoc
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '4.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: hoe
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.13'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.13'
|
83
|
+
description: pluto-merge - planet site generator (that is, merge 'n' manage planet
|
84
|
+
templates)
|
85
|
+
email: feedreader@googlegroups.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files:
|
89
|
+
- HISTORY.md
|
90
|
+
- Manifest.txt
|
91
|
+
- README.md
|
92
|
+
files:
|
93
|
+
- HISTORY.md
|
94
|
+
- Manifest.txt
|
95
|
+
- README.md
|
96
|
+
- Rakefile
|
97
|
+
- config/pluto.index.yml
|
98
|
+
- lib/pluto/merge.rb
|
99
|
+
- lib/pluto/merge/formatter.rb
|
100
|
+
- lib/pluto/merge/installer.rb
|
101
|
+
- lib/pluto/merge/lister.rb
|
102
|
+
- lib/pluto/merge/manifest_helpers.rb
|
103
|
+
- lib/pluto/merge/version.rb
|
104
|
+
homepage: https://github.com/feedreader/pluto-merge
|
105
|
+
licenses:
|
106
|
+
- Public Domain
|
107
|
+
metadata: {}
|
108
|
+
post_install_message:
|
109
|
+
rdoc_options:
|
110
|
+
- "--main"
|
111
|
+
- README.md
|
112
|
+
require_paths:
|
113
|
+
- lib
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: 1.9.2
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
requirements: []
|
125
|
+
rubyforge_project:
|
126
|
+
rubygems_version: 2.4.2
|
127
|
+
signing_key:
|
128
|
+
specification_version: 4
|
129
|
+
summary: pluto-merge - planet site generator (that is, merge 'n' manage planet templates)
|
130
|
+
test_files: []
|