fox 0.0.2 → 0.4.0
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 +4 -4
- data/README.md +196 -14
- data/bin/fox +28 -8
- data/fox.gemspec +41 -3
- data/lib/fox.rb +23 -10
- data/lib/fox/cli.rb +17 -0
- data/lib/fox/configuration.rb +48 -0
- data/lib/fox/core_ext.rb +8 -0
- data/lib/fox/core_ext/array.rb +51 -0
- data/lib/fox/core_ext/hash.rb +17 -0
- data/lib/fox/core_ext/io_binary_read.rb +20 -0
- data/lib/fox/error.rb +8 -0
- data/lib/fox/error/errors.rb +232 -0
- data/lib/fox/interface/thor/all.rb +34 -0
- data/lib/fox/interface/thor/configuration.rb +71 -0
- data/lib/fox/interface/thor/create.rb +49 -0
- data/lib/fox/interface/thor/default.rb +67 -0
- data/lib/fox/interface/thor/init.rb +57 -0
- data/lib/fox/interface/thor/mixin/config_choice.rb +3 -3
- data/lib/fox/interface/thor/mixin/configuration.rb +1 -1
- data/lib/fox/interface/thor/mixin/database.rb +129 -0
- data/lib/fox/interface/thor/mixin/default.rb +6 -0
- data/lib/fox/interface/thor/mixin/default_model.rb +13 -0
- data/lib/fox/interface/thor/mixin/generators/base_generator.rb +35 -0
- data/lib/fox/interface/thor/mixin/generators/structure.rb +41 -0
- data/lib/fox/interface/thor/mixin/generators/template_loader.rb +48 -0
- data/lib/fox/interface/thor/mixin/history.rb +12 -0
- data/lib/fox/interface/thor/mixin/logger.rb +2 -2
- data/lib/fox/interface/thor/mixin/model.rb +19 -0
- data/lib/fox/interface/thor/new.thor +74 -0
- data/lib/fox/interface/thor/version.rb +59 -0
- data/lib/fox/library/choice.rb +160 -0
- data/lib/fox/library/logger.rb +175 -0
- data/lib/fox/library/project_builder.rb +83 -0
- data/lib/fox/library/secure_config.rb +114 -0
- metadata +298 -7
- data/lib/fox/interface/thor/version.thor +0 -33
@@ -0,0 +1,83 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
|
4
|
+
# System
|
5
|
+
require 'thor'
|
6
|
+
require 'andand'
|
7
|
+
require 'fileutils'
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
class ProjectBuilder
|
12
|
+
|
13
|
+
attr_reader :name
|
14
|
+
|
15
|
+
TEMPLATES = {
|
16
|
+
:exe =>
|
17
|
+
<<-EOT
|
18
|
+
#!/usr/bin/ruby -w
|
19
|
+
|
20
|
+
require 'rubygems'
|
21
|
+
require 'commandline
|
22
|
+
require '%name%'
|
23
|
+
|
24
|
+
class %name.capitalize%App < CommandLine::Application
|
25
|
+
def initialize
|
26
|
+
end
|
27
|
+
|
28
|
+
def main
|
29
|
+
end
|
30
|
+
end#class %name.capitalize%App
|
31
|
+
EOT
|
32
|
+
}
|
33
|
+
|
34
|
+
def initialize name
|
35
|
+
@name = name
|
36
|
+
@top_level_dir = Dir.pwd
|
37
|
+
@project_dir = File.join(@top_level_dir, @name)
|
38
|
+
|
39
|
+
FileUtils.mkdir_p( @project_dir )
|
40
|
+
|
41
|
+
@cwd = @project_dir
|
42
|
+
end
|
43
|
+
|
44
|
+
def create_project
|
45
|
+
yield
|
46
|
+
end # of def create_project }}}
|
47
|
+
|
48
|
+
def self.load project_name, dsl
|
49
|
+
proj = new( project_name )
|
50
|
+
proj = proj.instance_eval( File.read(dsl), dsl )
|
51
|
+
proj
|
52
|
+
end # of def self.load }}}
|
53
|
+
|
54
|
+
def dir dir_name
|
55
|
+
old_cwd = @cwd
|
56
|
+
@cwd = File.join(@cwd, dir_name)
|
57
|
+
FileUtils.mkdir_p(@cwd)
|
58
|
+
yield self if block_given?
|
59
|
+
ensure
|
60
|
+
@cwd = old_cwd
|
61
|
+
end # of def dir }}}
|
62
|
+
|
63
|
+
def touch *file_names
|
64
|
+
file_names.flatten.each do |file|
|
65
|
+
FileUtils.touch( File.join(@cwd, "#{file}") )
|
66
|
+
end
|
67
|
+
end # of def touch }}}
|
68
|
+
|
69
|
+
# def create_rb_file(file_names)
|
70
|
+
# file_names.each { |file| touch(file + ".rb") }
|
71
|
+
# end
|
72
|
+
|
73
|
+
# def create_from_template(template_id, filename)
|
74
|
+
# File.open(File.join(@cwd, filename), "w+") { |f|
|
75
|
+
# str = TEMPLATES[template_id]
|
76
|
+
# str.gsub!(/%[^%]+%/) { |m| instance_eval m[1..-2] }
|
77
|
+
# f.puts str
|
78
|
+
# }
|
79
|
+
# end
|
80
|
+
|
81
|
+
end # of class ProjectBuilder
|
82
|
+
|
83
|
+
# vim:ts=2:tw=100:wm=100:syntax=ruby
|
@@ -0,0 +1,114 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
|
4
|
+
# System includes
|
5
|
+
require 'secure_yaml'
|
6
|
+
|
7
|
+
|
8
|
+
# @class class SecureConfig
|
9
|
+
# @brief Handles secure configs
|
10
|
+
class SecureConfig
|
11
|
+
|
12
|
+
# @fn def initialize filename, mode = :standard # {{{
|
13
|
+
# @brief Default constructor for SecureConfig
|
14
|
+
#
|
15
|
+
# @param [String] filename Valid filename of a file we want to decrypt
|
16
|
+
# @param [Symbol] mode Default mode for SecureConfig
|
17
|
+
def initialize filename, mode = :standard
|
18
|
+
|
19
|
+
sane = check_sanity( filename )
|
20
|
+
type = detect_type( filename )
|
21
|
+
|
22
|
+
if mode == :standard
|
23
|
+
if( type == :yaml )
|
24
|
+
@contents = decrypt_yaml( filename )
|
25
|
+
else
|
26
|
+
raise NotImplementedError, "Don't know how to handle that file type (#{type.to_s})"
|
27
|
+
end
|
28
|
+
|
29
|
+
end # of if mode ==
|
30
|
+
|
31
|
+
end # }}}
|
32
|
+
|
33
|
+
# @fn def check_sanity filename # {{{
|
34
|
+
# @brief Performs various checks on the file to ensure sanity
|
35
|
+
#
|
36
|
+
# @param [String] filename Valid filename of a file we want to decrypt
|
37
|
+
# @param [Boolean] strict Strict checking, if enabled will terminate app if not correct
|
38
|
+
#
|
39
|
+
# @return [Boolean] True, if sane, false if soemthing is wrong
|
40
|
+
def check_sanity filename, strict = true
|
41
|
+
|
42
|
+
result = false
|
43
|
+
|
44
|
+
raise ArgumentError, "File is not a file but a directory" if( File.directory?( filename ) )
|
45
|
+
raise ArgumentError, "File is a socket" if( File.socket?( filename ) )
|
46
|
+
|
47
|
+
raise ArgumentError, "File is not readable" unless( File.readable?( filename ) )
|
48
|
+
raise ArgumentError, "File does not exist" unless( File.exists?( filename ) )
|
49
|
+
raise ArgumentError, "File is empty" if( File.zero?( filename ) )
|
50
|
+
|
51
|
+
if( strict )
|
52
|
+
raise ArgumentError, "ENV[ 'PROPERTIES_ENCRYPTION_PASSWORD' ] missing - fatal error" if( ENV[ "PROPERTIES_ENCRYPTION_PASSWORD" ].nil? )
|
53
|
+
else
|
54
|
+
puts "(WW) Assuming empty PROPERTIES_ENCRYPTION_PASSWORD ! Decryption of secure yaml will fail !"
|
55
|
+
ENV[ "PROPERTIES_ENCRYPTION_PASSWORD" ] = ""
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
result = true
|
61
|
+
|
62
|
+
return result
|
63
|
+
end # }}}
|
64
|
+
|
65
|
+
# @fn def detect_type filename = @filename # {{{
|
66
|
+
# @brief Detects file type
|
67
|
+
#
|
68
|
+
# @param [String] filename Valid filename of a file we want to decrypt
|
69
|
+
#
|
70
|
+
# @return [Function]
|
71
|
+
def detect_type filename = @filename
|
72
|
+
|
73
|
+
filename = File.basename( filename )
|
74
|
+
|
75
|
+
# sometimes files end in .yaml.encrypted
|
76
|
+
filename.gsub!( ".encrypted", "" )
|
77
|
+
extension = filename.split( "." ).last
|
78
|
+
response = nil
|
79
|
+
|
80
|
+
raise ArgumentError, "Error in guessing file type" if( extension.empty? )
|
81
|
+
|
82
|
+
case extension
|
83
|
+
when "yaml"
|
84
|
+
response = :yaml
|
85
|
+
else
|
86
|
+
raise NotImplementedError, "Couldn't detect file type correctly"
|
87
|
+
end
|
88
|
+
|
89
|
+
return response
|
90
|
+
end # }}}
|
91
|
+
|
92
|
+
# @fn def decrypt_yaml filename = @filename # {{{
|
93
|
+
# @brief Decrypts a given file
|
94
|
+
#
|
95
|
+
# @param [String] filename Valid filename of a file we want to decrypt
|
96
|
+
def decrypt_yaml filename = @filename
|
97
|
+
|
98
|
+
password = ENV[ "PROPERTIES_ENCRYPTION_PASSWORD" ]
|
99
|
+
decrypted_yaml = SecureYaml::load( File.open( filename ) )
|
100
|
+
|
101
|
+
return decrypted_yaml
|
102
|
+
end # }}}
|
103
|
+
|
104
|
+
|
105
|
+
attr_reader :contents
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
|
110
|
+
# Direct Invocation
|
111
|
+
if __FILE__ == $0
|
112
|
+
end # of if __FILE__ == $0
|
113
|
+
|
114
|
+
# vim:ts=2:tw=100:wm=100
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bjoern Rennhak
|
@@ -25,19 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: fpm
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '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
|
-
version:
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: ptools
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,272 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: datamapper
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: data_mapper
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: dm-core
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: dm-tags
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: dm-migrations
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: dm-types
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: dm-enum
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: dm-validations
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: dm-timestamps
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: dm-sqlite-adapter
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: dm-do-adapter
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :runtime
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: msgpack
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :runtime
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: faraday
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
type: :runtime
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: mime-types
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - ">="
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0'
|
258
|
+
type: :runtime
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ">="
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: oj
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '0'
|
272
|
+
type: :runtime
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '0'
|
279
|
+
- !ruby/object:Gem::Dependency
|
280
|
+
name: moneta
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - ">="
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '0'
|
286
|
+
type: :runtime
|
287
|
+
prerelease: false
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
289
|
+
requirements:
|
290
|
+
- - ">="
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '0'
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: pony
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - ">="
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: '0'
|
300
|
+
type: :runtime
|
301
|
+
prerelease: false
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
303
|
+
requirements:
|
304
|
+
- - ">="
|
305
|
+
- !ruby/object:Gem::Version
|
306
|
+
version: '0'
|
307
|
+
- !ruby/object:Gem::Dependency
|
308
|
+
name: gettext
|
309
|
+
requirement: !ruby/object:Gem::Requirement
|
310
|
+
requirements:
|
311
|
+
- - ">="
|
312
|
+
- !ruby/object:Gem::Version
|
313
|
+
version: '0'
|
314
|
+
type: :runtime
|
315
|
+
prerelease: false
|
316
|
+
version_requirements: !ruby/object:Gem::Requirement
|
317
|
+
requirements:
|
318
|
+
- - ">="
|
319
|
+
- !ruby/object:Gem::Version
|
320
|
+
version: '0'
|
321
|
+
- !ruby/object:Gem::Dependency
|
322
|
+
name: rack
|
323
|
+
requirement: !ruby/object:Gem::Requirement
|
324
|
+
requirements:
|
325
|
+
- - ">="
|
326
|
+
- !ruby/object:Gem::Version
|
327
|
+
version: '0'
|
328
|
+
type: :runtime
|
329
|
+
prerelease: false
|
330
|
+
version_requirements: !ruby/object:Gem::Requirement
|
331
|
+
requirements:
|
332
|
+
- - ">="
|
333
|
+
- !ruby/object:Gem::Version
|
334
|
+
version: '0'
|
69
335
|
- !ruby/object:Gem::Dependency
|
70
336
|
name: andand
|
71
337
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,6 +367,14 @@ files:
|
|
101
367
|
- bin/fox
|
102
368
|
- fox.gemspec
|
103
369
|
- lib/fox.rb
|
370
|
+
- lib/fox/cli.rb
|
371
|
+
- lib/fox/configuration.rb
|
372
|
+
- lib/fox/core_ext.rb
|
373
|
+
- lib/fox/core_ext/array.rb
|
374
|
+
- lib/fox/core_ext/hash.rb
|
375
|
+
- lib/fox/core_ext/io_binary_read.rb
|
376
|
+
- lib/fox/error.rb
|
377
|
+
- lib/fox/error/errors.rb
|
104
378
|
- lib/fox/interface/rake/cucumber.rb
|
105
379
|
- lib/fox/interface/rake/default.rb
|
106
380
|
- lib/fox/interface/rake/documentation.rb
|
@@ -109,15 +383,32 @@ files:
|
|
109
383
|
- lib/fox/interface/rake/library.rb
|
110
384
|
- lib/fox/interface/rake/metric.rb
|
111
385
|
- lib/fox/interface/rake/rspec.rb
|
386
|
+
- lib/fox/interface/thor/all.rb
|
387
|
+
- lib/fox/interface/thor/configuration.rb
|
388
|
+
- lib/fox/interface/thor/create.rb
|
389
|
+
- lib/fox/interface/thor/default.rb
|
112
390
|
- lib/fox/interface/thor/info.thor
|
391
|
+
- lib/fox/interface/thor/init.rb
|
113
392
|
- lib/fox/interface/thor/mixin/config_choice.rb
|
114
393
|
- lib/fox/interface/thor/mixin/configuration.rb
|
394
|
+
- lib/fox/interface/thor/mixin/database.rb
|
115
395
|
- lib/fox/interface/thor/mixin/default.rb
|
116
396
|
- lib/fox/interface/thor/mixin/default_config.rb
|
397
|
+
- lib/fox/interface/thor/mixin/default_model.rb
|
398
|
+
- lib/fox/interface/thor/mixin/generators/base_generator.rb
|
399
|
+
- lib/fox/interface/thor/mixin/generators/structure.rb
|
400
|
+
- lib/fox/interface/thor/mixin/generators/template_loader.rb
|
117
401
|
- lib/fox/interface/thor/mixin/guess.rb
|
402
|
+
- lib/fox/interface/thor/mixin/history.rb
|
118
403
|
- lib/fox/interface/thor/mixin/logger.rb
|
404
|
+
- lib/fox/interface/thor/mixin/model.rb
|
119
405
|
- lib/fox/interface/thor/mixin/shell.rb
|
120
|
-
- lib/fox/interface/thor/
|
406
|
+
- lib/fox/interface/thor/new.thor
|
407
|
+
- lib/fox/interface/thor/version.rb
|
408
|
+
- lib/fox/library/choice.rb
|
409
|
+
- lib/fox/library/logger.rb
|
410
|
+
- lib/fox/library/project_builder.rb
|
411
|
+
- lib/fox/library/secure_config.rb
|
121
412
|
- lib/fox/version.rb
|
122
413
|
- spec/fox_spec.rb
|
123
414
|
- spec/spec_helper.rb
|