nrb 1.0.0 → 1.1.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.
@@ -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: