shogun 6.0.0 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
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