corneal 1.1.0 → 1.2.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: b04ca4b0bfe84f93a60c4269a6834d11db6ba59e
4
- data.tar.gz: fe39aff8397ed7bf2b702027ba23fd977986551a
3
+ metadata.gz: 6c444b14f7fcbe5a6ce779b8a08fdb28dbdf0453
4
+ data.tar.gz: 0e3c5c61d406f57bae0b615fd92a1b14be18c370
5
5
  SHA512:
6
- metadata.gz: dc82867fab95ca36c7eb4dbfc30e06f09fb07dfa4602d4b6c854a537f82ca8724cf805d13f9a4f02f6502ccac52d3461f0f745f457a0fa9b713c4e6ef6e5edba
7
- data.tar.gz: 4a542289889739a72a008dbee98192b3f356558ea86b35895370bc21f3f4eadfec7d42492195b1a5be0845fd27ef66ed2da82e563aa5bdaeb368d281d0560f76
6
+ metadata.gz: 54de13986c030394f0e94d1f69b5715e4c32e5455bd62d6d46dbdf8396544bb499a30115e21a035283af35695248014b70e354e8de2c50a3187df4efd430aa1f
7
+ data.tar.gz: c3fa201a44db0de2d5f3e4d8baaa87b5053f1987b826d344a17339bc286e6a50ff772b902e7320664779e16ed0dd83d2928f3ac6d4d43de9d3f2e8161405154f
data/README.md CHANGED
@@ -54,10 +54,12 @@ Directory structure:
54
54
  ```
55
55
  corneal -v # Show Corneal version number
56
56
  corneal help [COMMAND] # Describe available commands or one specific command
57
+ corneal new APP_PATH # Creates a new Sinatra application
57
58
  corneal model NAME # Generate a model
58
- corneal scaffold NAME # Generates your model, controller, and views
59
- corneal new APP-NAME # Creates a new Sinatra application
59
+ corneal controller NAME # Generate a controller
60
+ corneal scaffold NAME # Generate a model with its associated views and controllers
60
61
  ```
62
+ The controller generator also have an optional views flag `--no-views` to create controllers without views.
61
63
 
62
64
  ## Using Corneal
63
65
 
@@ -80,7 +82,7 @@ You can generate a model and migration file:
80
82
 
81
83
  You can also generate an entire MVC structure complete with a migration file:
82
84
 
83
- corneal scaffold NAME
85
+ corneal scaffold NAME
84
86
 
85
87
  The resulting structure will look like this:
86
88
 
@@ -2,6 +2,7 @@ require "extensions/string"
2
2
  require "corneal/generators/app/app_generator"
3
3
  require "corneal/generators/model/model_generator"
4
4
  require "corneal/generators/scaffold/scaffold_generator"
5
+ require "corneal/generators/controller/controller_generator"
5
6
  require "corneal/version"
6
7
  require "corneal/cli"
7
8
 
@@ -14,6 +14,7 @@ module Corneal
14
14
  # register(class_name, subcommand_alias, usage_list_string, description_string)
15
15
  register Corneal::Generators::AppGenerator, "new", "new APP_PATH", "Creates a new Sinatra application"
16
16
  register Corneal::Generators::ModelGenerator, "model", "model NAME", "Generate a model"
17
+ register Corneal::Generators::ControllerGenerator, "controller", "controller NAME", "Generate a controller"
17
18
  register Corneal::Generators::ScaffoldGenerator, "scaffold", "scaffold NAME", "Generate a model with its associated views and controllers"
18
19
 
19
20
  def self.exit_on_failure
@@ -0,0 +1,37 @@
1
+ require "thor/group"
2
+ require "active_support/inflector"
3
+
4
+ module Corneal
5
+ module Generators
6
+ class ControllerGenerator < Thor::Group
7
+ include Thor::Actions
8
+ attr_reader :controller_name, :class_name, :file_name
9
+
10
+ desc "Generate an Controller with associated views"
11
+ argument :name, type: :string, desc: "Name of the controller"
12
+
13
+ # --no-views make views optional
14
+ class_option :views, type: :boolean, default: true, desc: "Generate views for controller"
15
+
16
+ def self.source_root
17
+ File.dirname(__FILE__)
18
+ end
19
+
20
+ def setup
21
+ @controller_name = name.pluralize.underscore
22
+ @class_name = "#{controller_name.camel_case}Controller"
23
+ @file_name = class_name.underscore
24
+ end
25
+
26
+ def create_controller
27
+ template "templates/controller.rb.erb", File.join("app/controllers", "#{file_name}.rb")
28
+ insert_into_file "config.ru", "use #{class_name}\n", after: "run ApplicationController\n"
29
+ end
30
+
31
+ def create_views
32
+ return unless options[:views]
33
+ directory "templates/views", File.join("app/views", "#{controller_name}")
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ class <%= class_name %> < ApplicationController
2
+
3
+ # GET: /<%= controller_name %>
4
+ get "/<%= controller_name %>" do
5
+ erb :"/<%= controller_name %>/index.html"
6
+ end
7
+
8
+ # GET: /<%= controller_name %>/new
9
+ get "/<%= controller_name %>/new" do
10
+ erb :"/<%= controller_name %>/new.html"
11
+ end
12
+
13
+ # POST: /<%= controller_name %>
14
+ post "/<%= controller_name %>" do
15
+ redirect "/<%= controller_name %>"
16
+ end
17
+
18
+ # GET: /<%= controller_name %>/5
19
+ get "/<%= controller_name %>/:id" do
20
+ erb :"/<%= controller_name %>/show.html"
21
+ end
22
+
23
+ # GET: /<%= controller_name %>/5/edit
24
+ get "/<%= controller_name %>/:id/edit" do
25
+ erb :"/<%= controller_name %>/edit.html"
26
+ end
27
+
28
+ # PATCH: /<%= controller_name %>/5
29
+ patch "/<%= controller_name %>/:id" do
30
+ redirect "/<%= controller_name %>/:id"
31
+ end
32
+
33
+ # DELETE: /<%= controller_name %>/5/delete
34
+ delete "/<%= controller_name %>/:id/delete" do
35
+ redirect "/<%= controller_name %>"
36
+ end
37
+ end
@@ -1,5 +1,5 @@
1
1
  require "thor/group"
2
- require 'active_support/inflector'
2
+ require "active_support/inflector"
3
3
 
4
4
  module Corneal
5
5
  module Generators
@@ -8,9 +8,10 @@ module Corneal
8
8
  attr_reader :file_name, :class_name, :model_name, :migration_name, :migration_class_name, :table_name
9
9
 
10
10
  desc "Generate an ActiveRecord model"
11
- argument :name, :type => :string, :desc => "Name of the model"
11
+ argument :name, type: :string, desc: "Name of the model"
12
12
  argument :attributes, type: :array, default: [], banner: "field:type field:type"
13
13
 
14
+ # --no-migration make migrations optional
14
15
  class_option :migration, type: :boolean, default: true, desc: "Generate migration for model"
15
16
 
16
17
  def self.source_root
@@ -20,14 +21,14 @@ module Corneal
20
21
  def setup
21
22
  @model_name = name.singularize
22
23
  @class_name = model_name.camel_case
23
- @file_name = model_name.file_name
24
- @table_name = @file_name.pluralize
25
- @migration_name = "create_#{@table_name}"
26
- @migration_class_name = @migration_name.camel_case
24
+ @file_name = model_name.underscore
25
+ @table_name = file_name.pluralize
26
+ @migration_name = "create_#{table_name}"
27
+ @migration_class_name = migration_name.camel_case
27
28
 
28
29
  attributes.map! do |attribute|
29
30
  field = attribute.split(":")
30
- { name: field[0], type: (field[1] || "string") }
31
+ { name: field[0], type: field[1] || "string" }
31
32
  end
32
33
  end
33
34
 
@@ -5,63 +5,17 @@ module Corneal
5
5
  module Generators
6
6
  class ScaffoldGenerator < Thor::Group
7
7
  include Thor::Actions
8
- attr_reader :file_name, :class_name, :controller_class_name, :model_name, :migration_name, :migration_class_name, :table_name
9
8
 
10
9
  desc "Generate an ActiveRecord model with it's associated views and controllers"
11
- argument :name, :type => :string, :desc => "Name of the model"
10
+ argument :name, type: :string, desc: "Name of the model"
12
11
  argument :attributes, type: :array, default: [], banner: "field:type field:type"
13
12
 
14
- class_option :migration, type: :boolean, default: true, desc: "Generate migration for model"
15
-
16
- def self.source_root
17
- File.dirname(__FILE__)
18
- end
19
-
20
- def setup
21
- @model_name = name.singularize
22
- @class_name = model_name.camel_case
23
- @controller_class_name = "#{@class_name.pluralize}Controller"
24
- @file_name = model_name.file_name
25
- @table_name = @file_name.pluralize
26
- @migration_name = "create_#{@table_name}"
27
- @migration_class_name = @migration_name.camel_case
28
-
29
- attributes.map! do |attribute|
30
- field = attribute.split(":")
31
- { name: field[0], type: (field[1] || "string") }
32
- end
33
- end
34
-
35
13
  def create_model
36
- unless model_name == name
37
- say "[WARNING] The model name '#{name}' was recognized as a plural, using the singular '#{model_name}' instead."
38
- end
39
-
40
- template "templates/model.rb.erb", File.join("app/models", "#{file_name}.rb")
41
- end
42
-
43
- def create_views
44
- directory "templates/views", File.join("app/views", "#{table_name}")
14
+ ModelGenerator.new([name, attributes]).invoke_all
45
15
  end
46
16
 
47
17
  def create_controller
48
- template "templates/controller.rb.erb", File.join("app/controllers", "#{file_name}_controller.rb")
49
- insert_into_file "config.ru", "use #{controller_class_name}\n", :after => "run ApplicationController\n"
50
- end
51
-
52
- def create_migration
53
- return unless options[:migration]
54
-
55
- migration_files = Dir.entries("db/migrate").select { |path| !File.directory? path }
56
-
57
- if duplicate = migration_files.find { |file| file.include?(migration_name) }
58
- say_status :identical, "db/migrate/#{duplicate}", :blue
59
- else
60
- version = Time.now.utc.strftime("%Y%m%d%H%M%S")
61
- migration_file_name = "#{version}_#{migration_name}.rb"
62
-
63
- template "templates/migration.rb.erb", File.join("db/migrate", migration_file_name)
64
- end
18
+ ControllerGenerator.new([name]).invoke_all
65
19
  end
66
20
  end
67
21
  end
@@ -1,7 +1,7 @@
1
1
  module Corneal
2
2
  module VERSION
3
3
  MAJOR = 1
4
- MINOR = 1
4
+ MINOR = 2
5
5
  TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: corneal
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Emory
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-25 00:00:00.000000000 Z
11
+ date: 2017-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -108,17 +108,16 @@ files:
108
108
  - lib/corneal/generators/app/templates/public/stylesheets/main.css
109
109
  - lib/corneal/generators/app/templates/spec/application_controller_spec.rb
110
110
  - lib/corneal/generators/app/templates/spec/spec_helper.rb
111
+ - lib/corneal/generators/controller/controller_generator.rb
112
+ - lib/corneal/generators/controller/templates/controller.rb.erb
113
+ - lib/corneal/generators/controller/templates/views/edit.html.erb
114
+ - lib/corneal/generators/controller/templates/views/index.html.erb
115
+ - lib/corneal/generators/controller/templates/views/new.html.erb
116
+ - lib/corneal/generators/controller/templates/views/show.html.erb
111
117
  - lib/corneal/generators/model/migration.rb.erb
112
118
  - lib/corneal/generators/model/model.rb.erb
113
119
  - lib/corneal/generators/model/model_generator.rb
114
120
  - lib/corneal/generators/scaffold/scaffold_generator.rb
115
- - lib/corneal/generators/scaffold/templates/controller.rb.erb
116
- - lib/corneal/generators/scaffold/templates/migration.rb.erb
117
- - lib/corneal/generators/scaffold/templates/model.rb.erb
118
- - lib/corneal/generators/scaffold/templates/views/edit.html.erb
119
- - lib/corneal/generators/scaffold/templates/views/index.html.erb
120
- - lib/corneal/generators/scaffold/templates/views/new.html.erb
121
- - lib/corneal/generators/scaffold/templates/views/show.html.erb
122
121
  - lib/corneal/version.rb
123
122
  - lib/extensions/string.rb
124
123
  - spec/corneal/cli_spec.rb
@@ -145,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
144
  version: '0'
146
145
  requirements: []
147
146
  rubyforge_project:
148
- rubygems_version: 2.6.4
147
+ rubygems_version: 2.5.1
149
148
  signing_key:
150
149
  specification_version: 4
151
150
  summary: A Sinatra app generator.
@@ -1,35 +0,0 @@
1
- class <%= @controller_class_name %> < ApplicationController
2
-
3
- #Index Controller
4
- get "/<%=@table_name%>" do
5
- erb :"/<%=@table_name%>/index.html"
6
- end
7
-
8
- # New Item Controllers
9
- get "/<%=@table_name%>/new" do
10
- erb :"/<%=@table_name%>/new.html"
11
- end
12
-
13
- post "/<%=@table_name%>" do
14
- redirect "/<%=@table_name%>"
15
- end
16
-
17
- # Show Item Controller
18
- get "/<%=@table_name%>/:id" do
19
- erb :"/<%=@table_name%>/show.html"
20
- end
21
-
22
- # Edit Item Controller
23
- get "/<%=@table_name%>/:id/edit" do
24
- erb :"/<%=@table_name%>/edit.html"
25
- end
26
-
27
- patch "/<%=@table_name%>" do
28
- redirect "/<%=@table_name%>/:id"
29
- end
30
-
31
- # Delete Item Controller
32
- delete "/<%=@table_name%>/:id/delete" do
33
- redirect "/<%=@table_name%>"
34
- end
35
- end
@@ -1,10 +0,0 @@
1
- class <%= migration_class_name %> < ActiveRecord::Migration
2
- def change
3
- create_table :<%= table_name %> do |t|
4
- <% attributes.each do |attribute| -%>
5
- t.<%= attribute[:type] %> :<%= attribute[:name] %>
6
- <% end %>
7
- t.timestamps null: false
8
- end
9
- end
10
- end
@@ -1,2 +0,0 @@
1
- class <%= class_name %> < ActiveRecord::Base
2
- end