cogy 0.0.3 → 0.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +20 -0
  3. data/README.md +140 -52
  4. data/Rakefile +4 -14
  5. data/app/controllers/cogy/cogy_controller.rb +26 -5
  6. data/app/views/cogy/error.text.erb +1 -1
  7. data/lib/cogy/command.rb +33 -16
  8. data/lib/cogy/context.rb +52 -0
  9. data/lib/cogy/engine.rb +2 -8
  10. data/lib/cogy/invocation.rb +37 -0
  11. data/lib/cogy/version.rb +1 -1
  12. data/lib/cogy.rb +111 -20
  13. data/lib/generators/cogy/config_generator.rb +15 -0
  14. data/lib/generators/cogy/install_generator.rb +25 -0
  15. data/lib/generators/cogy/templates/cogy_config.rb +8 -0
  16. data/lib/generators/cogy/templates/cogy_folder_readme.md +4 -0
  17. data/lib/generators/cogy/templates/command_file.rb +8 -0
  18. data/test/dummy/cogy/foo.rb +24 -0
  19. data/test/dummy/cogy/fully_fledged.rb +14 -0
  20. data/test/dummy/config/application.rb +3 -4
  21. data/test/dummy/config/environments/development.rb +4 -4
  22. data/test/dummy/config/environments/test.rb +1 -1
  23. data/test/dummy/config/initializers/cogy.rb +10 -0
  24. data/test/dummy/config/routes.rb +2 -1
  25. data/test/dummy/log/development.log +84 -0
  26. data/test/dummy/log/test.log +18184 -0
  27. data/test/integration/command_test.rb +47 -0
  28. data/test/integration/helpers_test.rb +19 -0
  29. data/test/integration/inventory_test.rb +54 -0
  30. data/test/support/helpers.rb +30 -0
  31. data/test/test_helper.rb +4 -10
  32. metadata +71 -13
  33. data/lib/cogy/handler.rb +0 -14
  34. data/test/cogy_test.rb +0 -7
  35. data/test/dummy/app/assets/javascripts/application.js +0 -13
  36. data/test/dummy/app/assets/stylesheets/application.css +0 -15
  37. data/test/integration/navigation_test.rb +0 -8
@@ -0,0 +1,47 @@
1
+ require "test_helper"
2
+
3
+ module Cogy
4
+ class CommandTest < ActionDispatch::IntegrationTest
5
+ include Engine.routes.url_helpers
6
+
7
+ setup { @routes = Engine.routes }
8
+
9
+ def test_error_tmpl_message
10
+ get "/cogy/cmd/raiser/george"
11
+ assert response.body.include?("boom")
12
+ end
13
+
14
+ def test_error_tmpl_contenttype
15
+ get "/cogy/cmd/raiser/george"
16
+ assert_equal "text/plain", response.content_type.to_s
17
+ end
18
+
19
+ def test_error_response_code
20
+ get "/cogy/cmd/raiser/george"
21
+ assert_equal 500, response.status
22
+ end
23
+
24
+ def test_calc_command
25
+ get "/cogy/cmd/calc/george", cog_opt_op: "+", cog_argv_0: 1, cog_argv_1: 2
26
+ assert_equal "Hello george, the answer is: 3", response.body
27
+
28
+ get "/cogy/cmd/calc/george", cog_opt_op: "/", cog_argv_0: 10, cog_argv_1: 5
29
+ assert_equal "Hello george, the answer is: 2", response.body
30
+ end
31
+
32
+ def test_command_not_found
33
+ get "/cogy/cmd/idontexist/foo"
34
+ assert_equal 404, response.status
35
+ end
36
+
37
+ def test_cogy_env
38
+ get "/cogy/cmd/print_env/george", cogy_foo: "bar"
39
+ assert_equal "bar", response.body
40
+ end
41
+
42
+ def test_rails_url_helpers
43
+ get "/cogy/cmd/rails_url_helpers/george"
44
+ assert_equal "http://dummy.com/baz /baz", response.body
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,19 @@
1
+ require "test_helper"
2
+
3
+ module Cogy
4
+ class HelpersTest < ActionDispatch::IntegrationTest
5
+ include Engine.routes.url_helpers
6
+
7
+ setup { @routes = Engine.routes }
8
+
9
+ def test_custom_helpers_can_access_default_helpers
10
+ get "/cogy/cmd/foohelper/george", cogy_foo: "bar"
11
+ assert_equal "bar", response.body
12
+ end
13
+
14
+ def test_custom_helper_with_arguments
15
+ get "/cogy/cmd/titleize/george"
16
+ assert_equal "This Should Be Titleized", response.body
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,54 @@
1
+ require "test_helper"
2
+ require "yaml"
3
+
4
+ module Cogy
5
+ class InventoryTest < ActionDispatch::IntegrationTest
6
+ include Engine.routes.url_helpers
7
+
8
+ setup { @routes = Engine.routes }
9
+
10
+ def test_valid_yaml
11
+ with_config(bundle_name: "hyu", bundle_version: "5.0",
12
+ bundle_description: "Yet another bundle",
13
+ command_load_paths: ["cogy"]) do |inv|
14
+ assert_equal "hyu", inv["name"]
15
+ assert_equal "5.0", inv["version"]
16
+ assert_equal "Yet another bundle", inv["description"]
17
+ end
18
+ end
19
+
20
+ def test_cog_bundle_version
21
+ assert_equal 4, fetch_inventory["cog_bundle_version"]
22
+ end
23
+
24
+ def test_bundle_version_lambda
25
+ with_config(bundle_version: -> { 1 + 2 }) do |inv|
26
+ assert_equal 3, inv["version"]
27
+ end
28
+ end
29
+
30
+ def test_commands_section
31
+ with_config(executable_path: "/bin/no") do |inv|
32
+ expected = {
33
+ "executable" => "/bin/no",
34
+ "description" => "Print a foo",
35
+ "rules" => ["allow"]
36
+ }
37
+
38
+ assert_equal expected, inv["commands"]["say_foo"]
39
+ end
40
+ end
41
+
42
+ def test_without_commands
43
+ without_commands do
44
+ refute_includes fetch_inventory.keys, "commands"
45
+ end
46
+ end
47
+
48
+ def test_content_type
49
+ get "/cogy/inventory"
50
+ assert_equal "application/x-yaml", response.content_type
51
+ end
52
+ end
53
+ end
54
+
@@ -0,0 +1,30 @@
1
+ require 'active_support/test_case'
2
+
3
+ class ActiveSupport::TestCase
4
+ def fetch_inventory
5
+ get "/cogy/inventory"
6
+ YAML.load(response.body)
7
+ end
8
+
9
+ def with_config(opts={})
10
+ old = {}
11
+
12
+ opts.each do |k, v|
13
+ old[k] = Cogy.send(k)
14
+ Cogy.send("#{k}=", v)
15
+ end
16
+
17
+ yield fetch_inventory
18
+
19
+ old.each do |k, v|
20
+ Cogy.send("#{k}=", v)
21
+ end
22
+ end
23
+
24
+ def without_commands
25
+ old = Cogy.commands
26
+ Cogy.commands = {}
27
+ yield
28
+ Cogy.commands = old
29
+ end
30
+ end
data/test/test_helper.rb CHANGED
@@ -2,20 +2,14 @@
2
2
  ENV["RAILS_ENV"] = "test"
3
3
 
4
4
  require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
5
- ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
6
- ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__)
7
5
  require "rails/test_help"
6
+ require "minitest/spec"
7
+
8
+ require "minitest/reporters"
9
+ Minitest::Reporters.use!(Minitest::Reporters::DefaultReporter.new)
8
10
 
9
11
  # Filter out Minitest backtrace while allowing backtrace from other libraries
10
12
  # to be shown.
11
13
  Minitest.backtrace_filter = Minitest::BacktraceFilter.new
12
14
 
13
- # Load support files
14
15
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
15
-
16
- # Load fixtures from the engine
17
- if ActiveSupport::TestCase.respond_to?(:fixture_path=)
18
- ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
19
- ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
20
- ActiveSupport::TestCase.fixtures :all
21
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cogy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Agis Anastasopoulos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-04 00:00:00.000000000 Z
11
+ date: 2016-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -44,13 +44,57 @@ dependencies:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: '0'
47
- description: Cogy makes writing and maintaining Cog commands in Rails a breeze
47
+ - !ruby/object:Gem::Dependency
48
+ name: pry-byebug
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: minitest-reporters
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: yard
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ description: Cogy integrates Cog with Rails in a way that writing and deploying commands
90
+ from your application is a breeze.
48
91
  email:
49
92
  - agis.anast@gmail.com
50
93
  executables: []
51
94
  extensions: []
52
95
  extra_rdoc_files: []
53
96
  files:
97
+ - LICENSE
54
98
  - README.md
55
99
  - Rakefile
56
100
  - app/controllers/cogy/application_controller.rb
@@ -59,15 +103,18 @@ files:
59
103
  - config/routes.rb
60
104
  - lib/cogy.rb
61
105
  - lib/cogy/command.rb
106
+ - lib/cogy/context.rb
62
107
  - lib/cogy/engine.rb
63
- - lib/cogy/handler.rb
108
+ - lib/cogy/invocation.rb
64
109
  - lib/cogy/version.rb
110
+ - lib/generators/cogy/config_generator.rb
111
+ - lib/generators/cogy/install_generator.rb
112
+ - lib/generators/cogy/templates/cogy_config.rb
113
+ - lib/generators/cogy/templates/cogy_folder_readme.md
114
+ - lib/generators/cogy/templates/command_file.rb
65
115
  - lib/tasks/cogy_tasks.rake
66
- - test/cogy_test.rb
67
116
  - test/dummy/README.rdoc
68
117
  - test/dummy/Rakefile
69
- - test/dummy/app/assets/javascripts/application.js
70
- - test/dummy/app/assets/stylesheets/application.css
71
118
  - test/dummy/app/controllers/application_controller.rb
72
119
  - test/dummy/app/helpers/application_helper.rb
73
120
  - test/dummy/app/views/layouts/application.html.erb
@@ -75,6 +122,8 @@ files:
75
122
  - test/dummy/bin/rails
76
123
  - test/dummy/bin/rake
77
124
  - test/dummy/bin/setup
125
+ - test/dummy/cogy/foo.rb
126
+ - test/dummy/cogy/fully_fledged.rb
78
127
  - test/dummy/config.ru
79
128
  - test/dummy/config/application.rb
80
129
  - test/dummy/config/boot.rb
@@ -85,6 +134,7 @@ files:
85
134
  - test/dummy/config/environments/test.rb
86
135
  - test/dummy/config/initializers/assets.rb
87
136
  - test/dummy/config/initializers/backtrace_silencers.rb
137
+ - test/dummy/config/initializers/cogy.rb
88
138
  - test/dummy/config/initializers/cookies_serializer.rb
89
139
  - test/dummy/config/initializers/filter_parameter_logging.rb
90
140
  - test/dummy/config/initializers/inflections.rb
@@ -94,12 +144,16 @@ files:
94
144
  - test/dummy/config/locales/en.yml
95
145
  - test/dummy/config/routes.rb
96
146
  - test/dummy/config/secrets.yml
147
+ - test/dummy/log/development.log
97
148
  - test/dummy/log/test.log
98
149
  - test/dummy/public/404.html
99
150
  - test/dummy/public/422.html
100
151
  - test/dummy/public/500.html
101
152
  - test/dummy/public/favicon.ico
102
- - test/integration/navigation_test.rb
153
+ - test/integration/command_test.rb
154
+ - test/integration/helpers_test.rb
155
+ - test/integration/inventory_test.rb
156
+ - test/support/helpers.rb
103
157
  - test/test_helper.rb
104
158
  homepage: https://github.com/skroutz/cogy
105
159
  licenses:
@@ -124,11 +178,8 @@ rubyforge_project:
124
178
  rubygems_version: 2.2.5
125
179
  signing_key:
126
180
  specification_version: 4
127
- summary: Easily manage Cog commands from your Rails apps
181
+ summary: Develop & deploy Cog commands from your Rails app
128
182
  test_files:
129
- - test/cogy_test.rb
130
- - test/dummy/app/assets/javascripts/application.js
131
- - test/dummy/app/assets/stylesheets/application.css
132
183
  - test/dummy/app/controllers/application_controller.rb
133
184
  - test/dummy/app/helpers/application_helper.rb
134
185
  - test/dummy/app/views/layouts/application.html.erb
@@ -136,6 +187,8 @@ test_files:
136
187
  - test/dummy/bin/rails
137
188
  - test/dummy/bin/rake
138
189
  - test/dummy/bin/setup
190
+ - test/dummy/cogy/foo.rb
191
+ - test/dummy/cogy/fully_fledged.rb
139
192
  - test/dummy/config/application.rb
140
193
  - test/dummy/config/boot.rb
141
194
  - test/dummy/config/database.yml
@@ -145,6 +198,7 @@ test_files:
145
198
  - test/dummy/config/environments/test.rb
146
199
  - test/dummy/config/initializers/assets.rb
147
200
  - test/dummy/config/initializers/backtrace_silencers.rb
201
+ - test/dummy/config/initializers/cogy.rb
148
202
  - test/dummy/config/initializers/cookies_serializer.rb
149
203
  - test/dummy/config/initializers/filter_parameter_logging.rb
150
204
  - test/dummy/config/initializers/inflections.rb
@@ -155,6 +209,7 @@ test_files:
155
209
  - test/dummy/config/routes.rb
156
210
  - test/dummy/config/secrets.yml
157
211
  - test/dummy/config.ru
212
+ - test/dummy/log/development.log
158
213
  - test/dummy/log/test.log
159
214
  - test/dummy/public/404.html
160
215
  - test/dummy/public/422.html
@@ -162,5 +217,8 @@ test_files:
162
217
  - test/dummy/public/favicon.ico
163
218
  - test/dummy/Rakefile
164
219
  - test/dummy/README.rdoc
165
- - test/integration/navigation_test.rb
220
+ - test/integration/command_test.rb
221
+ - test/integration/helpers_test.rb
222
+ - test/integration/inventory_test.rb
223
+ - test/support/helpers.rb
166
224
  - test/test_helper.rb
data/lib/cogy/handler.rb DELETED
@@ -1,14 +0,0 @@
1
- module Cogy
2
- class Handler
3
- attr_accessor :command
4
-
5
- def initialize(blk)
6
- @blk = blk
7
- @command = nil
8
- end
9
-
10
- def run(args, opts, user)
11
- @blk.call(args, opts, user)
12
- end
13
- end
14
- end
data/test/cogy_test.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'test_helper'
2
-
3
- class CogyTest < ActiveSupport::TestCase
4
- test "truth" do
5
- assert_kind_of Module, Cogy
6
- end
7
- end
@@ -1,13 +0,0 @@
1
- // This is a manifest file that'll be compiled into application.js, which will include all the files
2
- // listed below.
3
- //
4
- // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
- // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
- //
7
- // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
- // compiled file.
9
- //
10
- // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
- // about supported directives.
12
- //
13
- //= require_tree .
@@ -1,15 +0,0 @@
1
- /*
2
- * This is a manifest file that'll be compiled into application.css, which will include all the files
3
- * listed below.
4
- *
5
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
- * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
- *
8
- * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
- * compiled file so the styles you add here take precedence over styles defined in any styles
10
- * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
- * file per style scope.
12
- *
13
- *= require_tree .
14
- *= require_self
15
- */
@@ -1,8 +0,0 @@
1
- require 'test_helper'
2
-
3
- class NavigationTest < ActionDispatch::IntegrationTest
4
- # test "the truth" do
5
- # assert true
6
- # end
7
- end
8
-