turple 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 085546359d95c95a2ff9606bb32064200bc47932
4
- data.tar.gz: 15530e590730ead076deed65817663344ca45a5a
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZmZhYWE4ZDVkOWIwYTc0ZTJmZmUwYWYyNzY2MmQ1ZmZhMmFmZTg3ZA==
5
+ data.tar.gz: !binary |-
6
+ Yzg5ODBiYzc1ZDQ5MGRmYTA0N2M3OGM0MzBkMmYwMTg4NTYzNDBiOA==
5
7
  SHA512:
6
- metadata.gz: 44c35d882b0707901ec0cde574f906862efbddcc4c17f4c8e02ade91d167781918e3439ccb6a3eb9d5e1e914e5e785f35244ead47b370fcbce2b3889182cf242
7
- data.tar.gz: dcb66d642ab9d988c66fb8204bb79308e3c12fe7ee812c554142dde958d7ad9b299b627818a3ce6aab29883a30c27cd128e1c3cefce596001105c058639927d6
8
+ metadata.gz: !binary |-
9
+ YWRhMDZmNjBjZDIxYzJjNWY4YWE0Mzk4NDM2YjViNTk4M2Y1MmJiMjhhN2U0
10
+ ZmQyMDk2YTYxMTU5OWY3YzgzM2VlMWUyOGQ1OGFmMWU3NjZlMjM3OGYzOGQ2
11
+ ZjdmODFiNzQyNTZmMTY5YjgzYTljMzhlN2Q1NDY0NDkzNzM3YzU=
12
+ data.tar.gz: !binary |-
13
+ OGYzNjg3MzkyZTI2ZGQ5NGFmMmU0NjcxNWEyODk1NzA2OGRjMjM2NWJkM2Zl
14
+ ZjI5N2FlMDk0NGY5ZmY3MGMyMGU3Mjc4NTI1ZjIzODczNDViYjc0MGJmM2M3
15
+ MjliYmI1NmQwMzdkYTM2MWJkN2M2NTM2MjUwOTI0M2UzMzdiYWQ=
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ .ruby-version
1
2
  .yardoc
2
3
  coverage
3
4
  tmp
data/Gemfile CHANGED
@@ -2,7 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'activesupport', '~> 4.1'
4
4
  gem 'cli_miami', '~> 0.0'
5
- gem 'colorize', '~> 0.7'
6
5
  gem 'coveralls', '~> 0.7', :require => false
7
6
  gem 'recursive-open-struct', '~> 0.5'
8
7
  gem 'sourcerer_', '~> 0.0', :require => 'sourcerer'
@@ -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)
@@ -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
- # Create CLI Miami presets
14
- @@line_size = 80
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 = configuration_hash[:destination]
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 '=' * @@line_size, :prompt
166
+ S.ay '=' * CLI_LINE_LENGTH, :prompt
130
167
  S.ay '!TURPLE SUCCESS!', :preset => :header
131
- S.ay '=' * @@line_size, :prompt
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 '=' * @@line_size, :prompt
179
+ S.ay '=' * CLI_LINE_LENGTH, :prompt
143
180
  end
144
181
  end
@@ -1,27 +1,21 @@
1
- require 'cli_miami'
2
1
  require 'thor'
3
2
 
4
3
  class Turple::Cli < Thor
5
- desc 'ate', 'Interpolate your template!'
6
- option :template, :type => :string, :desc => 'Path to a turple template.'
7
- option :destination, :type => :string, :default => File.join(Dir.pwd, 'turple'), :desc => 'Path to save interpolated template to.'
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: (options['template'] || Turple.template rescue nil),
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, Turple.data, Turple.configuration
18
+ Turple.ate Turple.template
25
19
  end
26
20
 
27
21
  default_task :ate
@@ -8,10 +8,10 @@ class Turple::Interpolate
8
8
  private
9
9
 
10
10
  def initialize template, data, destination
11
- @template = template.path
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
@@ -4,56 +4,30 @@ require 'find'
4
4
  require 'sourcerer'
5
5
 
6
6
  class Turple::Template
7
- attr_accessor :path, :required_data, :configuration, :name
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
- @path = get_path path
13
+ @original_path = path
16
14
  @configuration = configuration
17
15
 
18
- # validate template path
19
- unless valid_path?
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 `#{@path}`", :error
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
- File.exists?(@path) && File.exists?(File.join(@path, 'Turplefile'))
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 valid_path?
115
+ until @path
115
116
  A.sk 'Enter a path to a Turple Template', :preset => :prompt, :readline => true do |response|
116
- @path = File.expand_path response
117
+ valid_path? response
117
118
  end
118
119
  end
119
- @path
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.3
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
- - ".gitignore"
175
- - ".rspec"
176
- - ".travis.yml"
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.2.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: