shogun 6.0.0 → 6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6396c8ee65107b226bdada664bbb77f1efd04e98
4
- data.tar.gz: 19ab3c9d51572fad6159330d5986daadd8e0dce2
3
+ metadata.gz: 74c3d6d6b7a445c63db19ce0e3f28ecb13fe20e9
4
+ data.tar.gz: 9b650a266e6d426282b56ac4462e712a57993167
5
5
  SHA512:
6
- metadata.gz: 2ad86b25c9d3c7afc3c4b930e0bc1917346a51420f739fe520af4f7b020e2bca1ef184c6b94ddcbc737f2ad4915fc26cf50075d23783cd2ca7281129e57e4de2
7
- data.tar.gz: 5866f371ab83e38b949019d884c49b7f1fcc32e63bd7a57029c2d7751278489a48448a5f04a34d672a741016379621c4269432ed2462296db789cab332cb9e02
6
+ metadata.gz: ab48a6ce3df54742e4c7d2a15f7fbeccc0f5688bfb622d50420492fb714281f57745b91514095afd72aacca293ba4bc42efcb018252635617d35ed3e3b7a8090
7
+ data.tar.gz: 3cf59b44cdb445d986c59375754dbdf60f1745a97d0ba2d3382a4f7aa8a5777c2a3367f96792f367d3cb0e9f977dbf8e328531042f9213591426c414ad241700
data/bin/shogun CHANGED
@@ -1,18 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "shogun"
3
+ require "shogun/command"
4
4
  require "pry"
5
- require Dir["./lib/*.rb"].first
6
5
 
7
- case ARGV.shift
8
- when "database" then
9
- case ARGV.shift
10
- when "reset" then
11
- Shogun::Database.setup!(logger: Logger.new(STDOUT))
12
- when "console" then
13
- Shogun::Database.new(logger: Logger.new(STDOUT))
14
- binding.pry
15
- end
16
- when "console" then
17
- binding.pry
18
- end
6
+ # shogun [namespace] [command] [options]
7
+ # shogun blankapi generate flags
8
+ Shogun::Command.new(*ARGV)
@@ -0,0 +1,30 @@
1
+ require "architecture/dsl"
2
+ require "active_support/all"
3
+ require "shogun"
4
+
5
+ module Shogun
6
+ class Command
7
+ require_relative "command/generate"
8
+
9
+ def initialize(namespace, command, *parameters)
10
+ @namespace = namespace
11
+ @command = command
12
+ @parameters = parameters
13
+
14
+ case @command
15
+ when "generate" then
16
+ ::Shogun::Command::Generate.new(@namespace, *@parameters)
17
+ when "database" then
18
+ case ARGV.shift
19
+ when "reset" then
20
+ ::Shogun::Database.setup!(logger: Logger.new(STDOUT))
21
+ when "console" then
22
+ ::Shogun::Database.new(logger: Logger.new(STDOUT))
23
+ binding.pry
24
+ end
25
+ when "console" then
26
+ binding.pry
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,90 @@
1
+ module Shogun
2
+ class Command
3
+ class Generate
4
+ include Architecture
5
+
6
+ def initialize(namespace, resource, *parameters)
7
+ @namespace = namespace
8
+ @resource = resource
9
+ @parameters = parameters
10
+
11
+ architecture(source: scaffold_directory, destination: namespace_directory) do |architect|
12
+ architect.copy file: "resource.rb", as: "#{resource}.rb", context: context()
13
+ architect.create directory: architect.destination(resource)
14
+ architect.within source: "resource", destination: resource do |scope|
15
+ scope.copy file: "endpoint.rb", context: context()
16
+ scope.copy file: "model.rb", context: context()
17
+ scope.copy file: "null.rb", context: context()
18
+ scope.copy file: "presenter.rb", context: context()
19
+ subresource(scope, "show")
20
+ subresource(scope, "list")
21
+ subresource(scope, "create")
22
+ subresource(scope, "update")
23
+ subresource(scope, "destroy")
24
+ end
25
+ end
26
+ end
27
+
28
+ private def subresource(architect, name)
29
+ architect.copy file: "#{name}.rb", context: context()
30
+ architect.create directory: architect.destination(name)
31
+ architect.within source: name, destination: name do |scope|
32
+ scope.copy file: "authorizer.rb", context: context()
33
+ scope.copy file: "control.rb", context: context()
34
+ scope.copy file: "denormalizer.rb", context: context()
35
+ scope.copy file: "normalizer.rb", context: context()
36
+ scope.copy file: "validator.rb", context: context()
37
+ end
38
+ end
39
+
40
+ private def scaffold_directory
41
+ File.join(gem_directory, "scaffold")
42
+ end
43
+
44
+ private def namespace_directory
45
+ File.join(current_directory, "lib", @namespace)
46
+ end
47
+
48
+ private def resource_directory
49
+ destination(@parameters.first)
50
+ end
51
+
52
+ private def gem_directory
53
+ Gem::Specification.find_by_name("shogun").gem_dir
54
+ end
55
+
56
+ private def current_directory
57
+ Dir.pwd
58
+ end
59
+
60
+ private def context
61
+ {
62
+ namespace_module: namespace_module,
63
+ resource_module: resource_module,
64
+ namespace: namespace,
65
+ resource: resource
66
+ }
67
+ end
68
+
69
+ private def namespace_module
70
+ @namespace.camelcase
71
+ end
72
+
73
+ private def resource_module
74
+ @resource.camelcase
75
+ end
76
+
77
+ private def namespace
78
+ @namespace.downcase
79
+ end
80
+
81
+ private def resource
82
+ @resource.downcase
83
+ end
84
+
85
+ private def resource_signular
86
+ resource.singular
87
+ end
88
+ end
89
+ end
90
+ end
@@ -1,3 +1,3 @@
1
1
  module Shogun
2
- VERSION = "6.0.0"
2
+ VERSION = "6.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shogun
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0
4
+ version: 6.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kurtis Rainbolt-Greene
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-15 00:00:00.000000000 Z
11
+ date: 2015-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: adamantium
@@ -206,6 +206,20 @@ dependencies:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
208
  version: '10.1'
209
+ - !ruby/object:Gem::Dependency
210
+ name: activesupport
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '4.1'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '4.1'
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: activerecord
211
225
  requirement: !ruby/object:Gem::Requirement
@@ -220,6 +234,20 @@ dependencies:
220
234
  - - "~>"
221
235
  - !ruby/object:Gem::Version
222
236
  version: '4.1'
237
+ - !ruby/object:Gem::Dependency
238
+ name: architecture
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - "~>"
242
+ - !ruby/object:Gem::Version
243
+ version: '5.2'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - "~>"
249
+ - !ruby/object:Gem::Version
250
+ version: '5.2'
223
251
  - !ruby/object:Gem::Dependency
224
252
  name: bundler
225
253
  requirement: !ruby/object:Gem::Requirement
@@ -301,6 +329,8 @@ files:
301
329
  - bin/shogun
302
330
  - lib/shogun.rb
303
331
  - lib/shogun/authorizer.rb
332
+ - lib/shogun/command.rb
333
+ - lib/shogun/command/generate.rb
304
334
  - lib/shogun/control.rb
305
335
  - lib/shogun/control/null.rb
306
336
  - lib/shogun/database.rb