turple 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +13 -5
- data/.gitignore +1 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +0 -2
- data/lib/turple.rb +71 -34
- data/lib/turple/cli.rb +6 -12
- data/lib/turple/interpolate.rb +5 -5
- data/lib/turple/source.rb +63 -0
- data/lib/turple/template.rb +40 -38
- metadata +28 -42
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZmZhYWE4ZDVkOWIwYTc0ZTJmZmUwYWYyNzY2MmQ1ZmZhMmFmZTg3ZA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
Yzg5ODBiYzc1ZDQ5MGRmYTA0N2M3OGM0MzBkMmYwMTg4NTYzNDBiOA==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YWRhMDZmNjBjZDIxYzJjNWY4YWE0Mzk4NDM2YjViNTk4M2Y1MmJiMjhhN2U0
|
10
|
+
ZmQyMDk2YTYxMTU5OWY3YzgzM2VlMWUyOGQ1OGFmMWU3NjZlMjM3OGYzOGQ2
|
11
|
+
ZjdmODFiNzQyNTZmMTY5YjgzYTljMzhlN2Q1NDY0NDkzNzM3YzU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
OGYzNjg3MzkyZTI2ZGQ5NGFmMmU0NjcxNWEyODk1NzA2OGRjMjM2NWJkM2Zl
|
14
|
+
ZjI5N2FlMDk0NGY5ZmY3MGMyMGU3Mjc4NTI1ZjIzODczNDViYjc0MGJmM2M3
|
15
|
+
MjliYmI1NmQwMzdkYTM2MWJkN2M2NTM2MjUwOTI0M2UzMzdiYWQ=
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -14,7 +14,6 @@ GEM
|
|
14
14
|
cli_miami (0.0.6)
|
15
15
|
term-ansicolor (~> 1.3)
|
16
16
|
coderay (1.1.0)
|
17
|
-
colorize (0.7.5)
|
18
17
|
coveralls (0.7.1)
|
19
18
|
multi_json (~> 1.3)
|
20
19
|
rest-client
|
@@ -103,7 +102,6 @@ PLATFORMS
|
|
103
102
|
DEPENDENCIES
|
104
103
|
activesupport (~> 4.1)
|
105
104
|
cli_miami (~> 0.0)
|
106
|
-
colorize (~> 0.7)
|
107
105
|
coveralls (~> 0.7)
|
108
106
|
guard (~> 2.6)
|
109
107
|
guard-rspec (~> 4.3)
|
data/lib/turple.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'active_support/core_ext/hash/deep_merge'
|
2
2
|
require 'active_support/core_ext/hash/keys'
|
3
3
|
require 'cli_miami'
|
4
|
+
require 'sourcerer'
|
5
|
+
require 'tmpdir'
|
4
6
|
require 'yaml'
|
5
7
|
|
6
8
|
class Turple
|
@@ -8,41 +10,26 @@ class Turple
|
|
8
10
|
require 'turple/cli'
|
9
11
|
require 'turple/data'
|
10
12
|
require 'turple/interpolate'
|
13
|
+
require 'turple/source'
|
11
14
|
require 'turple/template'
|
12
15
|
|
13
|
-
#
|
14
|
-
|
15
|
-
CliMiami.set_preset :error, {
|
16
|
-
:color => :red,
|
17
|
-
:style => :bold
|
18
|
-
}
|
19
|
-
CliMiami.set_preset :prompt, {
|
20
|
-
:color => :blue,
|
21
|
-
:style => :bright
|
22
|
-
}
|
23
|
-
CliMiami.set_preset :header, CliMiami.presets[:prompt].merge({
|
24
|
-
:justify => :center,
|
25
|
-
:padding => @@line_size
|
26
|
-
})
|
27
|
-
CliMiami.set_preset :key, CliMiami.presets[:prompt].merge({
|
28
|
-
:justify => :rjust,
|
29
|
-
:padding => @@line_size / 2,
|
30
|
-
:preset => :prompt,
|
31
|
-
:newline => false
|
32
|
-
})
|
33
|
-
CliMiami.set_preset :value, {
|
34
|
-
:indent => 1
|
35
|
-
}
|
36
|
-
|
37
|
-
# Allows Turple.ate vs Turple.new
|
38
|
-
class << self
|
39
|
-
alias_method :ate, :new
|
40
|
-
end
|
16
|
+
# Turple internal configuration
|
17
|
+
CLI_LINE_LENGTH = 80
|
41
18
|
|
19
|
+
# Turple user configuration defaults
|
42
20
|
@@turpleobject = {
|
43
21
|
:template => '',
|
44
22
|
:data => {},
|
45
23
|
:data_map => {},
|
24
|
+
|
25
|
+
# default sources to download
|
26
|
+
:sources => {
|
27
|
+
:default => 'brewster1134/turple-templates'
|
28
|
+
},
|
29
|
+
|
30
|
+
# default destination
|
31
|
+
:destination => File.join(Dir.pwd, 'turple'),
|
32
|
+
|
46
33
|
:configuration => {
|
47
34
|
# default regex for file names to interpolate content of
|
48
35
|
# matches files with an extension of `.turple`
|
@@ -73,6 +60,38 @@ class Turple
|
|
73
60
|
}
|
74
61
|
}
|
75
62
|
|
63
|
+
# CLI Miami
|
64
|
+
# presets
|
65
|
+
#
|
66
|
+
CliMiami.set_preset :error, {
|
67
|
+
:color => :red,
|
68
|
+
:style => :bold
|
69
|
+
}
|
70
|
+
CliMiami.set_preset :prompt, {
|
71
|
+
:color => :blue,
|
72
|
+
:style => :bright
|
73
|
+
}
|
74
|
+
CliMiami.set_preset :header, CliMiami.presets[:prompt].merge({
|
75
|
+
:justify => :center,
|
76
|
+
:padding => CLI_LINE_LENGTH
|
77
|
+
})
|
78
|
+
CliMiami.set_preset :key, CliMiami.presets[:prompt].merge({
|
79
|
+
:justify => :rjust,
|
80
|
+
:padding => CLI_LINE_LENGTH / 2,
|
81
|
+
:preset => :prompt,
|
82
|
+
:newline => false
|
83
|
+
})
|
84
|
+
CliMiami.set_preset :value, {
|
85
|
+
:indent => 1
|
86
|
+
}
|
87
|
+
|
88
|
+
attr_reader :sources
|
89
|
+
|
90
|
+
# Allows Turple.ate vs Turple.new
|
91
|
+
class << self
|
92
|
+
alias_method :ate, :new
|
93
|
+
end
|
94
|
+
|
76
95
|
# Get loaded turplefiles contents
|
77
96
|
# @return [Hash]
|
78
97
|
#
|
@@ -90,27 +109,45 @@ class Turple
|
|
90
109
|
# @return [Hash]
|
91
110
|
#
|
92
111
|
def self.load_turplefile turplefile_path
|
93
|
-
# return false if file doesnt exist
|
94
112
|
turplefile_path = File.expand_path turplefile_path
|
113
|
+
|
114
|
+
# return false if file doesnt exist
|
95
115
|
return false unless File.exists? turplefile_path
|
96
116
|
|
97
117
|
self.turpleobject = YAML.load File.read turplefile_path
|
98
118
|
end
|
99
119
|
|
100
120
|
# Add additional data to the collective turplefile
|
121
|
+
#
|
101
122
|
# @param hash [Hash] any hash of data to be merged into existing turplefile data
|
102
123
|
# @return [Hash] merged turplefile data with symbolized keys
|
124
|
+
#
|
103
125
|
def self.turpleobject= hash
|
104
126
|
@@turpleobject.deep_merge! hash.deep_symbolize_keys
|
105
127
|
end
|
106
128
|
|
107
129
|
private
|
108
130
|
|
109
|
-
def initialize template_path, data_hash, configuration_hash
|
131
|
+
def initialize template_path, data_hash = {}, configuration_hash = {}
|
110
132
|
data_hash = Turple.data.deep_merge data_hash
|
111
133
|
data_map_hash = Turple.data_map
|
112
134
|
configuration_hash = Turple.configuration.deep_merge configuration_hash
|
113
|
-
@destination_path =
|
135
|
+
@destination_path = Turple.destination
|
136
|
+
|
137
|
+
# load Turplefiles in order...
|
138
|
+
# home, template, destination
|
139
|
+
[
|
140
|
+
'~',
|
141
|
+
template_path,
|
142
|
+
@destination_path
|
143
|
+
].each do |path|
|
144
|
+
Turple.load_turplefile File.join(File.expand_path(path), 'Turplefile')
|
145
|
+
end
|
146
|
+
|
147
|
+
# create turplefile sources
|
148
|
+
Turple.sources.each do |source_name, source_path|
|
149
|
+
Turple::Source.new source_name, source_path
|
150
|
+
end
|
114
151
|
|
115
152
|
if configuration_hash[:cli]
|
116
153
|
S.ay 'Saving to: ', :preset => :prompt, :newline => false
|
@@ -126,9 +163,9 @@ private
|
|
126
163
|
end
|
127
164
|
|
128
165
|
def output_summary
|
129
|
-
S.ay '=' *
|
166
|
+
S.ay '=' * CLI_LINE_LENGTH, :prompt
|
130
167
|
S.ay '!TURPLE SUCCESS!', :preset => :header
|
131
|
-
S.ay '=' *
|
168
|
+
S.ay '=' * CLI_LINE_LENGTH, :prompt
|
132
169
|
|
133
170
|
S.ay 'Turpleated ', :newline => false, :indent => 2
|
134
171
|
S.ay @template.name, :newline => false, :preset => :prompt
|
@@ -139,6 +176,6 @@ private
|
|
139
176
|
S.ay Dir[File.join(@destination_path, '**/*')].count.to_s, :value
|
140
177
|
S.ay 'Turpleated in:', :key
|
141
178
|
S.ay (@interpolate.time * 1000).round(1).to_s + 'ms', :value
|
142
|
-
S.ay '=' *
|
179
|
+
S.ay '=' * CLI_LINE_LENGTH, :prompt
|
143
180
|
end
|
144
181
|
end
|
data/lib/turple/cli.rb
CHANGED
@@ -1,27 +1,21 @@
|
|
1
|
-
require 'cli_miami'
|
2
1
|
require 'thor'
|
3
2
|
|
4
3
|
class Turple::Cli < Thor
|
5
|
-
desc 'ate', 'Interpolate
|
6
|
-
option :template, :type => :string, :desc => 'Path to a turple template.'
|
7
|
-
option :destination, :type => :string, :
|
4
|
+
desc 'ate', 'Interpolate a template!'
|
5
|
+
option :template, :type => :string, :aliases => ['-t'], :desc => 'Path to, or name of, a turple template.'
|
6
|
+
option :destination, :type => :string, :aliases => ['-d'], :desc => 'Path to save interpolated template to.'
|
8
7
|
def ate
|
9
|
-
destination = File.expand_path options['destination']
|
10
|
-
|
11
|
-
# load destination turplefile if it exists
|
12
|
-
Turple.load_turplefile File.join(destination, 'Turplefile')
|
13
|
-
|
14
8
|
# update turpleobject object with cli options
|
15
9
|
Turple.turpleobject = {
|
16
|
-
template:
|
10
|
+
template: options['template'] || Turple.template,
|
11
|
+
destination: options['destination'] || Turple.destination,
|
17
12
|
configuration: {
|
18
|
-
destination: destination,
|
19
13
|
cli: true
|
20
14
|
}
|
21
15
|
}
|
22
16
|
|
23
17
|
# initialize turple
|
24
|
-
Turple.ate Turple.template
|
18
|
+
Turple.ate Turple.template
|
25
19
|
end
|
26
20
|
|
27
21
|
default_task :ate
|
data/lib/turple/interpolate.rb
CHANGED
@@ -8,10 +8,10 @@ class Turple::Interpolate
|
|
8
8
|
private
|
9
9
|
|
10
10
|
def initialize template, data, destination
|
11
|
-
@template = template
|
11
|
+
@template = template
|
12
12
|
@data = data.data
|
13
13
|
@destination = destination
|
14
|
-
@configuration = template.configuration
|
14
|
+
@configuration = template.configuration.to_hash
|
15
15
|
@tmp_dir = Dir.mktmpdir
|
16
16
|
@project_name = File.basename @destination
|
17
17
|
|
@@ -36,9 +36,9 @@ private
|
|
36
36
|
# Copy template to tmp dir and get the new path
|
37
37
|
#
|
38
38
|
def create_tmp_project!
|
39
|
-
FileUtils.cp_r @template, @tmp_dir
|
39
|
+
FileUtils.cp_r @template.path, @tmp_dir
|
40
40
|
|
41
|
-
@tmp_project = File.join(@tmp_dir, File.basename(@template))
|
41
|
+
@tmp_project = File.join(@tmp_dir, File.basename(@template.path))
|
42
42
|
end
|
43
43
|
|
44
44
|
# Collect paths to interpolate
|
@@ -145,7 +145,7 @@ private
|
|
145
145
|
# get new template name based on the first directory of the destination
|
146
146
|
turplefile_path = File.join(@destination, 'Turplefile')
|
147
147
|
turplefile_object = Turple.turpleobject.deep_merge({
|
148
|
-
template: @template,
|
148
|
+
template: @template.original_path,
|
149
149
|
:created_on => Date.today.to_s
|
150
150
|
})
|
151
151
|
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'sourcerer'
|
2
|
+
|
3
|
+
class Turple::Source
|
4
|
+
attr_reader :template_paths
|
5
|
+
|
6
|
+
# find a template from multiple sources (unless one is specified)
|
7
|
+
#
|
8
|
+
# @param template_name [String] template name generated from the folder name
|
9
|
+
# @param source_name [String] source name provided from the user's Turplefile
|
10
|
+
#
|
11
|
+
# @return [String] path to the desired template
|
12
|
+
#
|
13
|
+
def self.find_template_path template_name, source_name = nil
|
14
|
+
# if source is specified, target it directly
|
15
|
+
if source_name
|
16
|
+
return @@sources[source_name].template_paths[template_name]
|
17
|
+
|
18
|
+
# otherwise loop through sources until a template is found
|
19
|
+
else
|
20
|
+
@@sources.values.each do |source|
|
21
|
+
return source.template_paths[template_name] || next
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
return nil
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
@@sources = {}
|
31
|
+
|
32
|
+
def initialize source_name, source_path
|
33
|
+
@template_paths = {}
|
34
|
+
@source = Sourcerer.new(source_path)
|
35
|
+
|
36
|
+
add_templates @source.destination
|
37
|
+
|
38
|
+
# add new source to hash
|
39
|
+
@@sources[source_name] = self
|
40
|
+
end
|
41
|
+
|
42
|
+
# search through source and add any directory with a Turplefile as a turple template
|
43
|
+
#
|
44
|
+
# @param source_path [String] a path to a source. this will be a generated tmp dir from Sourcerer
|
45
|
+
#
|
46
|
+
def add_templates source_path
|
47
|
+
@source.files('**/Turplefile').each do |turplefile_path|
|
48
|
+
template_path = File.dirname(turplefile_path)
|
49
|
+
template_name = File.basename(template_path)
|
50
|
+
|
51
|
+
add_template template_name, template_path
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# add a template path to the instance var
|
56
|
+
#
|
57
|
+
# @param template_name [String]
|
58
|
+
# @param template_path [String]
|
59
|
+
#
|
60
|
+
def add_template template_name, template_path
|
61
|
+
@template_paths[template_name] = template_path
|
62
|
+
end
|
63
|
+
end
|
data/lib/turple/template.rb
CHANGED
@@ -4,56 +4,30 @@ require 'find'
|
|
4
4
|
require 'sourcerer'
|
5
5
|
|
6
6
|
class Turple::Template
|
7
|
-
|
8
|
-
|
9
|
-
# character used to split a remote source from a template name
|
10
|
-
SOURCE_SPLITTER = '|'
|
7
|
+
SOURCE_TEMPLATE_SPLITTER = '##'
|
8
|
+
attr_accessor :configuration, :name, :original_path, :path, :required_data
|
11
9
|
|
12
10
|
private
|
13
11
|
|
14
12
|
def initialize path, configuration
|
15
|
-
@
|
13
|
+
@original_path = path
|
16
14
|
@configuration = configuration
|
17
15
|
|
18
|
-
# validate
|
19
|
-
|
16
|
+
# validate configuration and path
|
17
|
+
valid_configuration?
|
18
|
+
unless valid_path? path
|
20
19
|
if @configuration[:cli]
|
21
20
|
prompt_for_path
|
22
21
|
else
|
23
|
-
raise S.ay "Invalid Path `#{
|
22
|
+
raise S.ay "Invalid Template Path `#{path}`", :error
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
27
|
-
# load template turplefile after validating path
|
28
|
-
Turple.load_turplefile File.join(@path, 'Turplefile')
|
29
|
-
|
30
|
-
# validate configuration after loading turplefile
|
31
|
-
valid_configuration?
|
32
|
-
|
33
26
|
# set data variables after validating path and configuration
|
34
27
|
@required_data = scan_for_data @path
|
35
28
|
@name = Turple.turpleobject[:name] || File.basename(@path)
|
36
29
|
end
|
37
30
|
|
38
|
-
# process path for possible a remote source
|
39
|
-
# use Sourcerer to download source
|
40
|
-
#
|
41
|
-
# @param path [String] template path
|
42
|
-
# @return [String] valid path to local directory containing template
|
43
|
-
#
|
44
|
-
def get_path path
|
45
|
-
# detect a remote source
|
46
|
-
if path.include? SOURCE_SPLITTER
|
47
|
-
source_template = path.split SOURCE_SPLITTER
|
48
|
-
source = Sourcerer.new source_template[0]
|
49
|
-
template = source_template[1]
|
50
|
-
|
51
|
-
File.join(source.destination, template)
|
52
|
-
else
|
53
|
-
return File.expand_path path
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
31
|
# Scan a path and determine the required data needed to interpolate it
|
58
32
|
# @param template_path [String] path to a template file
|
59
33
|
# @return [Hash] a hash of all the data needed
|
@@ -103,20 +77,48 @@ private
|
|
103
77
|
# check that the path is a valid template
|
104
78
|
# @return [Boolean]
|
105
79
|
#
|
106
|
-
def valid_path?
|
107
|
-
|
80
|
+
def valid_path? potential_path
|
81
|
+
# with source included in template path...
|
82
|
+
new_path = if potential_path.include? SOURCE_TEMPLATE_SPLITTER
|
83
|
+
# split source from template
|
84
|
+
source_template = potential_path.split SOURCE_TEMPLATE_SPLITTER
|
85
|
+
|
86
|
+
# create new source
|
87
|
+
begin
|
88
|
+
Turple::Source.new source_template[1], source_template[0]
|
89
|
+
rescue
|
90
|
+
return false
|
91
|
+
end
|
92
|
+
|
93
|
+
# look up template path from new source
|
94
|
+
Turple::Source.find_template_path source_template[1], source_template[1]
|
95
|
+
|
96
|
+
# if just the template name/path is passed...
|
97
|
+
else
|
98
|
+
# check for template name in existing sources or treat it as a local path
|
99
|
+
Turple::Source.find_template_path(potential_path) || File.expand_path(potential_path)
|
100
|
+
end
|
101
|
+
|
102
|
+
# set path var if new path is a valid template
|
103
|
+
if !new_path.nil? && File.directory?(new_path) && File.file?(File.join(new_path, 'Turplefile'))
|
104
|
+
@path = new_path
|
105
|
+
return true
|
106
|
+
else
|
107
|
+
return false
|
108
|
+
end
|
108
109
|
end
|
109
110
|
|
110
111
|
# prompt the user for a template path until a vaid one is entered
|
111
112
|
# @return [String] valid template path
|
112
113
|
#
|
113
114
|
def prompt_for_path
|
114
|
-
until
|
115
|
+
until @path
|
115
116
|
A.sk 'Enter a path to a Turple Template', :preset => :prompt, :readline => true do |response|
|
116
|
-
|
117
|
+
valid_path? response
|
117
118
|
end
|
118
119
|
end
|
119
|
-
|
120
|
+
|
121
|
+
return @path
|
120
122
|
end
|
121
123
|
|
122
124
|
# check the configuration is valid
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: turple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Brewster
|
@@ -14,154 +14,140 @@ dependencies:
|
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '4.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: cli_miami
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: colorize
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.7'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.7'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: coveralls
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- -
|
45
|
+
- - ~>
|
60
46
|
- !ruby/object:Gem::Version
|
61
47
|
version: '0.7'
|
62
48
|
type: :runtime
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- -
|
52
|
+
- - ~>
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '0.7'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: recursive-open-struct
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- -
|
59
|
+
- - ~>
|
74
60
|
- !ruby/object:Gem::Version
|
75
61
|
version: '0.5'
|
76
62
|
type: :runtime
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- -
|
66
|
+
- - ~>
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0.5'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: sourcerer_
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- -
|
73
|
+
- - ~>
|
88
74
|
- !ruby/object:Gem::Version
|
89
75
|
version: '0.0'
|
90
76
|
type: :runtime
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- -
|
80
|
+
- - ~>
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '0.0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: thor
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
|
-
- -
|
87
|
+
- - ~>
|
102
88
|
- !ruby/object:Gem::Version
|
103
89
|
version: '0.19'
|
104
90
|
type: :runtime
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
|
-
- -
|
94
|
+
- - ~>
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: '0.19'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: guard
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ~>
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '2.6'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
|
-
- -
|
108
|
+
- - ~>
|
123
109
|
- !ruby/object:Gem::Version
|
124
110
|
version: '2.6'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: guard-rspec
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
|
-
- -
|
115
|
+
- - ~>
|
130
116
|
- !ruby/object:Gem::Version
|
131
117
|
version: '4.3'
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
|
-
- -
|
122
|
+
- - ~>
|
137
123
|
- !ruby/object:Gem::Version
|
138
124
|
version: '4.3'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: rspec
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
|
-
- -
|
129
|
+
- - ~>
|
144
130
|
- !ruby/object:Gem::Version
|
145
131
|
version: '3.1'
|
146
132
|
type: :development
|
147
133
|
prerelease: false
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
149
135
|
requirements:
|
150
|
-
- -
|
136
|
+
- - ~>
|
151
137
|
- !ruby/object:Gem::Version
|
152
138
|
version: '3.1'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
140
|
name: terminal-notifier-guard
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
|
-
- -
|
143
|
+
- - ~>
|
158
144
|
- !ruby/object:Gem::Version
|
159
145
|
version: '1.5'
|
160
146
|
type: :development
|
161
147
|
prerelease: false
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
163
149
|
requirements:
|
164
|
-
- -
|
150
|
+
- - ~>
|
165
151
|
- !ruby/object:Gem::Version
|
166
152
|
version: '1.5'
|
167
153
|
description:
|
@@ -171,9 +157,9 @@ executables:
|
|
171
157
|
extensions: []
|
172
158
|
extra_rdoc_files: []
|
173
159
|
files:
|
174
|
-
-
|
175
|
-
-
|
176
|
-
-
|
160
|
+
- .gitignore
|
161
|
+
- .rspec
|
162
|
+
- .travis.yml
|
177
163
|
- Gemfile
|
178
164
|
- Gemfile.lock
|
179
165
|
- Guardfile
|
@@ -183,6 +169,7 @@ files:
|
|
183
169
|
- lib/turple/cli.rb
|
184
170
|
- lib/turple/data.rb
|
185
171
|
- lib/turple/interpolate.rb
|
172
|
+
- lib/turple/source.rb
|
186
173
|
- lib/turple/template.rb
|
187
174
|
- yuyi_menu
|
188
175
|
homepage: https://github.com/brewster1134/turple
|
@@ -195,19 +182,18 @@ require_paths:
|
|
195
182
|
- lib
|
196
183
|
required_ruby_version: !ruby/object:Gem::Requirement
|
197
184
|
requirements:
|
198
|
-
- -
|
185
|
+
- - ! '>='
|
199
186
|
- !ruby/object:Gem::Version
|
200
187
|
version: '0'
|
201
188
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
202
189
|
requirements:
|
203
|
-
- -
|
190
|
+
- - ! '>='
|
204
191
|
- !ruby/object:Gem::Version
|
205
192
|
version: '0'
|
206
193
|
requirements: []
|
207
194
|
rubyforge_project:
|
208
|
-
rubygems_version: 2.
|
195
|
+
rubygems_version: 2.4.5
|
209
196
|
signing_key:
|
210
197
|
specification_version: 4
|
211
198
|
summary: Quick Project Templating
|
212
199
|
test_files: []
|
213
|
-
has_rdoc:
|