nrb 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,85 +1,103 @@
1
+ require 'pathname'
2
+
1
3
  module Nrb
2
4
  module Commands
3
- class Script < Thor::Group
4
- include Thor::Actions
5
-
6
- desc 'Creates a Ninja Ruby Script at the given path'
5
+ class Script < Commands::Base
6
+ desc 'Creates a Ninja Ruby Script at the given path.'
7
7
 
8
8
  argument :path_or_folder_name, type: :string, required: true,
9
9
  desc: 'The name of the project, or the path.'
10
10
 
11
11
  class_option :init_repo, default: true, type: :boolean,
12
- desc: 'Initialize a repository at the target location',
12
+ desc: 'Initialize a repository at the target location.',
13
13
  aliases: '-r'
14
- class_option :bundle_install, default: true, type: :boolean,
15
- desc: 'Run bundle install after generating the skeleton',
14
+
15
+ class_option :bundle_install, default: false, type: :boolean,
16
+ desc: 'Run bundle install after generating the skeleton.',
16
17
  aliases: '-b'
17
18
 
18
- def self.source_root
19
- File.expand_path('..', __dir__)
20
- end
19
+ class_option :local, default: false, type: :boolean,
20
+ desc: 'Add local path of the gem when generating the Gemfile. Useful for testing.'
21
21
 
22
22
  def gitignore
23
- template 'templates/.gitignore.tt', target('.gitignore')
23
+ template 'templates/.gitignore.tt', target('.gitignore'), opts
24
24
  end
25
25
 
26
26
  def readme
27
27
  template 'templates/README.md.tt', target('README.md'),
28
- title: name,
29
- version: Nrb::VERSION
28
+ opts.merge({ title: name, version: Nrb::VERSION })
30
29
  end
31
30
 
32
31
  def gemfile
33
32
  template 'templates/Gemfile.tt', target('Gemfile'),
34
- version: Nrb::VERSION
33
+ opts.merge({ nrb_gem: nrb_gem })
35
34
  end
36
35
 
37
36
  def rakefile
38
- template 'templates/Rakefile.tt', target('Rakefile')
37
+ template 'templates/Rakefile.tt', target('Rakefile'), opts
39
38
  end
40
39
 
41
40
  def config_nrb
42
41
  template 'templates/config/nrb.rb.tt', target('config/nrb.rb'),
43
- directories: Nrb.config.directories
42
+ opts.merge({ resources: Nrb.config.resources })
44
43
  end
45
44
 
46
- def directories
47
- Nrb.config.directories.each do |dir|
48
- create_file target("#{dir}/.keep")
45
+ def resources
46
+ Nrb.config.resources.each do |dir|
47
+ create_file target("#{dir}/.keep"), opts
49
48
  end
50
49
  end
51
50
 
52
51
  def boot
53
- template 'templates/config/boot.rb.tt', target('config/boot.rb')
52
+ template 'templates/config/boot.rb.tt', target('config/boot.rb'), opts
54
53
  end
55
54
 
56
55
  def db_config
57
56
  template 'templates/db/config.yml.tt', target('db/config.yml'),
58
- db: name
57
+ opts.merge({ db: name })
59
58
  end
60
59
 
61
60
  def script_file
62
- template 'templates/script.rb.tt', "#{target(name)}.rb"
61
+ template 'templates/script.rb.tt', "#{target(name)}.rb", opts
63
62
  end
64
63
 
65
64
  def initialize_repo
66
- return unless options[:repo]
65
+ return unless options[:init_repo]
67
66
 
68
- inside target, verbose: true do
69
- run 'git init'
67
+ inside target, opts do
68
+ Nrb.silently verbose: options[:verbose] do
69
+ run 'git init'
70
+ end
70
71
  end
71
72
  end
72
73
 
73
74
  def bundle_install
74
- return unless options[:bundle]
75
-
76
- inside target, verbose: true do
77
- run 'bundle install'
75
+ return unless options[:bundle_install]
76
+
77
+ inside target, opts do
78
+ Bundler.with_clean_env do
79
+ Nrb.silently verbose: options[:verbose] do
80
+ run 'bundle install'
81
+ end
82
+ end
78
83
  end
79
84
  end
80
85
 
81
86
  private
82
87
 
88
+ def nrb_gem
89
+ text = "gem 'nrb', '#{Nrb::VERSION}'"
90
+
91
+ if options[:local]
92
+ local_gem_path = Pathname.new(File.expand_path('../../..', __dir__))
93
+ target_path = Pathname.new(target)
94
+ relative_path = local_gem_path.relative_path_from(target_path)
95
+ text << ", path: '#{relative_path}'"
96
+ end
97
+
98
+ text
99
+ end
100
+
83
101
  def target(final = nil)
84
102
  File.join(File.expand_path(path_or_folder_name), final.to_s)
85
103
  end
@@ -1,9 +1,7 @@
1
- require 'nrb/commands/inside_group'
2
-
3
1
  module Nrb
4
2
  module Commands
5
- class Starter < InsideGroup
6
- desc_with_warning "Require the main file"
3
+ class Starter < Commands::Inside
4
+ desc 'Require the main file.'
7
5
 
8
6
  def start
9
7
  require_main_file
data/lib/nrb/errors.rb ADDED
@@ -0,0 +1,4 @@
1
+ module Nrb
2
+ class OutsideRootError < Thor::Error; end;
3
+ class InvalidResourceError < Thor::Error; end;
4
+ end
@@ -1,5 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- ruby '2.3.0'
4
-
5
- gem 'nrb', '<%= config[:version] %>'
3
+ <%= config[:nrb_gem] %>
@@ -1,6 +1,6 @@
1
1
  # Setup the listed gems in the gemfile
2
2
  require 'bundler/setup'
3
- <%# TODO: Maybe add gemfile groups? %>
3
+
4
4
  # Actually require the gems
5
5
  Bundler.require(:default)
6
6
 
@@ -8,7 +8,7 @@ Bundler.require(:default)
8
8
  Nrb.config.root = File.expand_path('..', __dir__)
9
9
 
10
10
  # Add the root to the load path
11
- $:.unshift(Nrb.root)
11
+ $:.unshift(Nrb.root) unless $:.include?(Nrb.root)
12
12
 
13
13
  # Require other configurations from the config/nrb.rb file
14
14
  require 'config/nrb'
@@ -19,7 +19,7 @@ ActiveRecord::Base.configurations = YAML.load_file('db/config.yml')
19
19
  ActiveRecord::Base.establish_connection(:development)
20
20
  ActiveRecord::Base.logger = Logger.new(STDOUT)
21
21
 
22
- # Finally require files inside config.directories
23
- Nrb.config.directories.each do |dir|
22
+ # Finally require files inside config.resources
23
+ Nrb.config.resources.each do |dir|
24
24
  Dir[File.join(dir, '*.rb')].each { |f| require(f) }
25
25
  end
@@ -2,6 +2,6 @@ Nrb.configure do |config|
2
2
  # Root of the script folder
3
3
  config.root = File.expand_path('..', __dir__)
4
4
 
5
- # Default directories to autoload
6
- # config.directories = %w(<%= config[:directories].join(' ') %>)
5
+ # Default resources to autoload
6
+ # config.resources = %w(<%= config[:resources].join(' ') %>)
7
7
  end
@@ -1,3 +1 @@
1
1
  require File.join(__dir__, 'config/boot')
2
-
3
- puts 'do the monkey with me!'
data/lib/nrb/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nrb
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
data/nrb.gemspec CHANGED
@@ -20,11 +20,16 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.11"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "minitest", "~> 5.0"
24
- spec.add_dependency "thor", "~> 0.19.1"
23
+ spec.add_development_dependency "minitest", "~> 5.8.0"
24
+ spec.add_development_dependency "guard", "~> 2.13.0"
25
+ spec.add_development_dependency "guard-minitest", "~> 2.4.0"
26
+ spec.add_development_dependency "guard-rubocop", "~> 1.2.0"
27
+ spec.add_development_dependency "coveralls", "~> 0.8.13"
28
+ spec.add_development_dependency "rubocop", "~> 0.38.0"
29
+ spec.add_dependency "thor", "~> 0.19.0"
30
+ spec.add_dependency "standalone_migrations", "~> 4.0.0"
31
+ spec.add_dependency "sqlite3", "~> 1.3.0"
25
32
  spec.add_dependency "pry"
26
33
  spec.add_dependency "pry-byebug"
27
34
  spec.add_dependency "binding_of_caller"
28
- spec.add_dependency "standalone_migrations", "~> 4.0.3"
29
- spec.add_dependency "sqlite3", "~> 1.3.11"
30
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - shuriu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-08 00:00:00.000000000 Z
11
+ date: 2016-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,58 +44,128 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '5.0'
47
+ version: 5.8.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '5.0'
54
+ version: 5.8.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: guard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.13.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.13.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 2.4.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.4.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard-rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.2.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.2.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: coveralls
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.8.13
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.8.13
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.38.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.38.0
55
125
  - !ruby/object:Gem::Dependency
56
126
  name: thor
57
127
  requirement: !ruby/object:Gem::Requirement
58
128
  requirements:
59
129
  - - "~>"
60
130
  - !ruby/object:Gem::Version
61
- version: 0.19.1
131
+ version: 0.19.0
62
132
  type: :runtime
63
133
  prerelease: false
64
134
  version_requirements: !ruby/object:Gem::Requirement
65
135
  requirements:
66
136
  - - "~>"
67
137
  - !ruby/object:Gem::Version
68
- version: 0.19.1
138
+ version: 0.19.0
69
139
  - !ruby/object:Gem::Dependency
70
- name: pry
140
+ name: standalone_migrations
71
141
  requirement: !ruby/object:Gem::Requirement
72
142
  requirements:
73
- - - ">="
143
+ - - "~>"
74
144
  - !ruby/object:Gem::Version
75
- version: '0'
145
+ version: 4.0.0
76
146
  type: :runtime
77
147
  prerelease: false
78
148
  version_requirements: !ruby/object:Gem::Requirement
79
149
  requirements:
80
- - - ">="
150
+ - - "~>"
81
151
  - !ruby/object:Gem::Version
82
- version: '0'
152
+ version: 4.0.0
83
153
  - !ruby/object:Gem::Dependency
84
- name: pry-byebug
154
+ name: sqlite3
85
155
  requirement: !ruby/object:Gem::Requirement
86
156
  requirements:
87
- - - ">="
157
+ - - "~>"
88
158
  - !ruby/object:Gem::Version
89
- version: '0'
159
+ version: 1.3.0
90
160
  type: :runtime
91
161
  prerelease: false
92
162
  version_requirements: !ruby/object:Gem::Requirement
93
163
  requirements:
94
- - - ">="
164
+ - - "~>"
95
165
  - !ruby/object:Gem::Version
96
- version: '0'
166
+ version: 1.3.0
97
167
  - !ruby/object:Gem::Dependency
98
- name: binding_of_caller
168
+ name: pry
99
169
  requirement: !ruby/object:Gem::Requirement
100
170
  requirements:
101
171
  - - ">="
@@ -109,33 +179,33 @@ dependencies:
109
179
  - !ruby/object:Gem::Version
110
180
  version: '0'
111
181
  - !ruby/object:Gem::Dependency
112
- name: standalone_migrations
182
+ name: pry-byebug
113
183
  requirement: !ruby/object:Gem::Requirement
114
184
  requirements:
115
- - - "~>"
185
+ - - ">="
116
186
  - !ruby/object:Gem::Version
117
- version: 4.0.3
187
+ version: '0'
118
188
  type: :runtime
119
189
  prerelease: false
120
190
  version_requirements: !ruby/object:Gem::Requirement
121
191
  requirements:
122
- - - "~>"
192
+ - - ">="
123
193
  - !ruby/object:Gem::Version
124
- version: 4.0.3
194
+ version: '0'
125
195
  - !ruby/object:Gem::Dependency
126
- name: sqlite3
196
+ name: binding_of_caller
127
197
  requirement: !ruby/object:Gem::Requirement
128
198
  requirements:
129
- - - "~>"
199
+ - - ">="
130
200
  - !ruby/object:Gem::Version
131
- version: 1.3.11
201
+ version: '0'
132
202
  type: :runtime
133
203
  prerelease: false
134
204
  version_requirements: !ruby/object:Gem::Requirement
135
205
  requirements:
136
- - - "~>"
206
+ - - ">="
137
207
  - !ruby/object:Gem::Version
138
- version: 1.3.11
208
+ version: '0'
139
209
  description:
140
210
  email:
141
211
  - stefan.rotariu@gmail.com
@@ -144,9 +214,12 @@ executables:
144
214
  extensions: []
145
215
  extra_rdoc_files: []
146
216
  files:
217
+ - ".codeclimate.yml"
147
218
  - ".gitignore"
219
+ - ".rubocop.yml"
148
220
  - ".travis.yml"
149
221
  - Gemfile
222
+ - Guardfile
150
223
  - LICENSE.txt
151
224
  - README.md
152
225
  - Rakefile
@@ -154,12 +227,17 @@ files:
154
227
  - bin/nrb
155
228
  - lib/nrb.rb
156
229
  - lib/nrb/cli.rb
230
+ - lib/nrb/commands/all.rb
231
+ - lib/nrb/commands/base/base.rb
232
+ - lib/nrb/commands/base/inside.rb
233
+ - lib/nrb/commands/base/resource.rb
234
+ - lib/nrb/commands/concerns/resource_generator.rb
157
235
  - lib/nrb/commands/console.rb
158
236
  - lib/nrb/commands/destroy.rb
159
237
  - lib/nrb/commands/generate.rb
160
- - lib/nrb/commands/inside_group.rb
161
238
  - lib/nrb/commands/script.rb
162
239
  - lib/nrb/commands/starter.rb
240
+ - lib/nrb/errors.rb
163
241
  - lib/nrb/templates/.gitignore.tt
164
242
  - lib/nrb/templates/Gemfile.tt
165
243
  - lib/nrb/templates/README.md.tt
@@ -197,3 +275,4 @@ signing_key:
197
275
  specification_version: 4
198
276
  summary: Ninja Ruby scripts with easy persistence for your experimenting needs.
199
277
  test_files: []
278
+ has_rdoc: