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 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: