grape-cli 0.2.1 → 0.2.2

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +18 -0
  3. data/Gemfile +7 -0
  4. data/Guardfile +12 -0
  5. data/README.md +31 -7
  6. data/Rakefile +5 -5
  7. data/bin/_guard-core +15 -0
  8. data/bin/console +3 -3
  9. data/bin/grape +3 -3
  10. data/bin/guard +15 -0
  11. data/grape-cli.gemspec +19 -19
  12. data/lib/grape_cli/actions/create_application.rb +13 -0
  13. data/lib/grape_cli/actions/setup_database.rb +14 -0
  14. data/lib/grape_cli/actions/setup_test_framework.rb +46 -0
  15. data/lib/{grape → grape_cli}/application_factory.rb +1 -1
  16. data/lib/{grape → grape_cli}/class_name_generator.rb +1 -1
  17. data/lib/{grape → grape_cli}/command_generator.rb +4 -0
  18. data/lib/grape_cli/config.rb +39 -0
  19. data/lib/grape_cli/core.rb +59 -0
  20. data/lib/grape_cli/grape_cli.rb +6 -0
  21. data/lib/{grape/cli/template → grape_cli/templates}/application/Gemfile.tt +13 -1
  22. data/lib/{grape/cli/template → grape_cli/templates}/application/Rakefile.tt +17 -0
  23. data/lib/{grape/cli/template → grape_cli/templates}/application/app/api.rb.tt +0 -0
  24. data/lib/{grape/cli/template → grape_cli/templates}/application/app/resources/hello_world.rb.tt +0 -0
  25. data/lib/{grape/cli/template → grape_cli/templates}/application/config/application.rb +0 -0
  26. data/lib/{grape/cli/template → grape_cli/templates}/application/config/boot.rb +0 -0
  27. data/lib/{grape/cli/template → grape_cli/templates}/application/config/environment.rb +0 -0
  28. data/lib/{grape/cli/template → grape_cli/templates}/application/config.ru.tt +0 -0
  29. data/lib/{grape/cli/template → grape_cli/templates}/database/postgres.yml.tt +2 -2
  30. data/lib/{grape/cli/template → grape_cli/templates}/database/sqlite.yml.tt +4 -4
  31. data/lib/grape_cli/templates/minitest/requests/hello_world_test.rb.tt +15 -0
  32. data/lib/grape_cli/templates/minitest/test_helper.rb +9 -0
  33. data/lib/grape_cli/templates/rspec/requests/hello_world_spec.rb.tt +21 -0
  34. data/lib/grape_cli/templates/rspec/spec_helper.rb +14 -0
  35. data/lib/grape_cli/templates/rspec_config +2 -0
  36. data/lib/grape_cli/version.rb +3 -0
  37. metadata +33 -22
  38. data/lib/grape/cli/console.rb +0 -15
  39. data/lib/grape/cli/new.rb +0 -49
  40. data/lib/grape/cli/server.rb +0 -15
  41. data/lib/grape/cli/version.rb +0 -5
  42. data/lib/grape/cli.rb +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e733867df759d8c66d267d85eb8fc85a713eff22
4
- data.tar.gz: 0dd0ccca48c4826afa9c428900c8d1b5551fa806
3
+ metadata.gz: 98a78fca4ad2ed7b4ff0011f4d7136bfe6631532
4
+ data.tar.gz: 12c6e20d4701ce4f12ff982a77459eb7ac7f6f80
5
5
  SHA512:
6
- metadata.gz: 3e87c6c604d550f5e6ee3c9e8c69edc41414e9c39edcb5e3edb9b34dfd2a582995478a332486681c5ae0612d705a5456dddceef6587a254e53e0034ab70ec4c6
7
- data.tar.gz: 40b8fbc552e6ec7f7735ed88f63c70d37ad7a5398305fda0898270779a01b879273d93b98ffb346039a1ca060390d13f582765c06ba66a147cba3d5489862e67
6
+ metadata.gz: 5547baf4b7274cba44ae79d402b0b153059c56706f949774d79dab8aab814a5a9ec82aff244a4f9d03396b9a2714453fd0f57068f070d1a16c223ba9f64d6d36
7
+ data.tar.gz: 9ba742abb0f7b2d49949a0be5e4d2476adda1e42856a2f0ead89198429a23ebff08bd933c4c2717ff408dc2ce339baa166e1c73cc7dac64f5874d80d09a7706c
data/.rubocop.yml ADDED
@@ -0,0 +1,18 @@
1
+ Documentation:
2
+ Enabled: false
3
+
4
+ Metrics/LineLength:
5
+ Max: 120
6
+ Exclude:
7
+ - grape-cli.gemspec
8
+ - bin/_guard-core
9
+
10
+ Style/SignalException:
11
+ EnforcedStyle: only_raise
12
+
13
+ Style/ClassVars:
14
+ Enabled: false
15
+
16
+ Style/FileName:
17
+ Exclude:
18
+ - bin/_guard-core
data/Gemfile CHANGED
@@ -2,3 +2,10 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in grape-cli.gemspec
4
4
  gemspec
5
+
6
+ group :development do
7
+ gem 'rubocop', '0.34.2'
8
+ gem 'guard'
9
+ gem 'guard-minitest'
10
+ gem 'guard-rubocop'
11
+ end
data/Guardfile ADDED
@@ -0,0 +1,12 @@
1
+ group :red_green_refactor, halt_on_fail: true do
2
+ guard :minitest, all_on_start: false do
3
+ watch(%r{^test/(.*)\/?(.*)_test\.rb$})
4
+ watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}#{m[2]}_test.rb" }
5
+ watch(%r{^test/test_helper\.rb$}) { 'test' }
6
+ end
7
+
8
+ guard :rubocop, all_on_start: false do
9
+ watch(%r{/.+\/.rb$})
10
+ watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
11
+ end
12
+ end
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # grape-cli [![Build Status](https://travis-ci.org/elpassion/grape-cli.svg?branch=master)](https://travis-ci.org/elpassion/grape-cli) [![Code Climate](https://codeclimate.com/github/elpassion/grape-cli/badges/gpa.svg)](https://codeclimate.com/github/elpassion/grape-cli)
1
+ # grape-cli [![Build Status](https://travis-ci.org/elpassion/grape-cli.svg?branch=master)](https://travis-ci.org/elpassion/grape-cli) [![Code Climate](https://codeclimate.com/github/elpassion/grape-cli/badges/gpa.svg)](https://codeclimate.com/github/elpassion/grape-cli) [![Gem Version](https://badge.fury.io/rb/grape-cli.svg)](http://badge.fury.io/rb/grape-cli)
2
2
 
3
- Grape-CLI is a gem for bootstraping standalone Grape application.
3
+ Grape-CLI is a gem for bootstraping standalone Grape application.
4
4
  It is heavily inspired by Rails/Ember generators.
5
5
 
6
6
  ## Installation
@@ -20,26 +20,50 @@ Or install it yourself as:
20
20
  $ gem install grape-cli
21
21
 
22
22
  ## Usage
23
+
24
+ ###New application
23
25
  Create new Grape app in current directory with provided application name
24
26
 
25
27
  $ grape new application_name
26
-
27
- Start application server
28
+
29
+ For new command you can provide multiple options:
30
+
31
+ ###Test framework
32
+
33
+ $ grape new application_name --test=minitest
34
+
35
+
36
+ will create new application with minitest as test framework,
37
+ running new command without specifying `--test` option will setup application with RSpec as it's default one.
38
+
39
+ ###Database
40
+
41
+ $ grape new application_name --database=postgres
42
+
43
+
44
+ will create new application with postgres as database,
45
+ running new command without specifying `--database` option will setup application with sqlite as it's default one.
46
+
47
+ ###Start application server
28
48
 
29
49
  $ cd application_name
30
50
  $ grape server
31
- or
51
+ or
32
52
 
33
53
  $ grape s
34
54
  Go to http://localhost:9292/
35
55
 
36
- Start application console
56
+ ###Start application console
37
57
 
38
58
  $ grape console
39
- or
59
+ or
40
60
 
41
61
  $ grape c
42
62
 
63
+ ###Run your application tets
64
+
65
+ $ grape test
66
+
43
67
 
44
68
  ## Contributing
45
69
 
data/Rakefile CHANGED
@@ -1,10 +1,10 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
3
 
4
4
  Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
5
+ t.libs << 'test'
6
+ t.libs << 'lib'
7
7
  t.test_files = FileList['test/**/*_test.rb']
8
8
  end
9
9
 
10
- task :default => :test
10
+ task default: :test
data/bin/_guard-core ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application '_guard-core' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', Pathname.new(__FILE__).realpath)
11
+
12
+ require 'rubygems'
13
+ require 'bundler/setup'
14
+
15
+ load Gem.bin_path('guard', '_guard-core')
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "grape/cli"
3
+ require 'bundler/setup'
4
+ require 'grape/cli'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "grape/cli"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start
data/bin/grape CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $:.unshift File.dirname(__FILE__) + '/../lib'
3
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
4
4
 
5
- require "grape/cli"
5
+ require 'grape_cli/grape_cli'
6
6
 
7
- GrapeCli.start(ARGV)
7
+ GrapeCli::Core.start(ARGV)
data/bin/guard ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'guard' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', Pathname.new(__FILE__).realpath)
11
+
12
+ require 'rubygems'
13
+ require 'bundler/setup'
14
+
15
+ load Gem.bin_path('guard', 'guard')
data/grape-cli.gemspec CHANGED
@@ -1,37 +1,37 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'grape/cli/version'
4
+ require 'grape_cli/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "grape-cli"
8
- spec.version = Grape::Cli::VERSION
9
- spec.authors = ["wswidzinski", "michalwarda", "koszcz", "ghostbuster91"]
10
- spec.email = ["swidzinskiw@gmail.com"]
7
+ spec.name = 'grape-cli'
8
+ spec.version = GrapeCli::VERSION
9
+ spec.authors = %w(wswidzinski michalwarda koszcz ghostbuster91)
10
+ spec.email = %w(swidzinskiw@gmail.com)
11
11
 
12
- spec.summary = %q{ Grape-CLI is a gem for bootstraping standalone Grape application. }
13
- spec.description = %q{ Grape-CLI is a gem for bootstraping standalone Grape application. It is heavily inspired by Rails/Ember generators. }
14
- spec.homepage = "http://github.com/elpassion/grape-cli"
15
- spec.license = "MIT"
12
+ spec.summary = 'Grape-CLI is a gem for bootstraping standalone Grape application.'
13
+ spec.description = 'Grape-CLI is a gem for bootstraping standalone Grape application. It is heavily inspired by Rails/Ember generators.'
14
+ spec.homepage = 'http://github.com/elpassion/grape-cli'
15
+ spec.license = 'MIT'
16
16
 
17
17
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
18
  # delete this section to allow pushing this gem to any host.
19
19
  if spec.respond_to?(:metadata)
20
20
  spec.metadata['allowed_push_host'] = 'https://rubygems.org'
21
21
  else
22
- raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
+ raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
23
23
  end
24
24
 
25
25
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
- spec.bindir = "bin"
27
- spec.executables = ["grape"]
28
- spec.require_paths = ["lib"]
26
+ spec.bindir = 'bin'
27
+ spec.executables = ['grape']
28
+ spec.require_paths = ['lib']
29
29
 
30
- spec.add_dependency "thor", "~> 0.19"
31
- spec.add_dependency "bundler", "~> 1.10"
32
- spec.add_dependency "racksh"
30
+ spec.add_dependency 'thor', '~> 0.19'
31
+ spec.add_dependency 'bundler', '~> 1.10'
32
+ spec.add_dependency 'racksh'
33
33
 
34
- spec.add_development_dependency "rake", "~> 10.0"
35
- spec.add_development_dependency "minitest"
36
- spec.add_development_dependency "pry"
34
+ spec.add_development_dependency 'rake', '~> 10.0'
35
+ spec.add_development_dependency 'minitest'
36
+ spec.add_development_dependency 'pry'
37
37
  end
@@ -0,0 +1,13 @@
1
+ require 'delegate'
2
+
3
+ module GrapeCli
4
+ module Actions
5
+ class CreateApplication < SimpleDelegator
6
+ def run(config, destination_path)
7
+ source_path = File.join(config[:source_root], 'templates', 'application')
8
+
9
+ directory(source_path, destination_path, config)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ require 'delegate'
2
+
3
+ module GrapeCli
4
+ module Actions
5
+ class SetupDatabase < SimpleDelegator
6
+ def run(config)
7
+ source_path = File.join(config[:source_root], 'templates', 'database', "#{options[:database]}.yml.tt")
8
+ destination_path = File.join(options[:work_dir], config[:app_name], 'config', 'database.yml')
9
+
10
+ template(source_path, destination_path, config)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,46 @@
1
+ module GrapeCli
2
+ module Actions
3
+ class SetupTestFramework
4
+ include Thor::Base
5
+ include Thor::Actions
6
+
7
+ attr_reader :options, :config
8
+
9
+ def self.source_root
10
+ File.dirname(__FILE__)
11
+ end
12
+
13
+ def initialize(args = [], local_options = {}, config = {})
14
+ super
15
+ @options = local_options
16
+ @config = config
17
+ end
18
+
19
+ # rubocop:disable Metrics/AbcSize
20
+ def run
21
+ source_path = File.join(config[:source_root], 'templates', options[:test])
22
+ destination_path = File.join(options[:work_dir], config[:app_name], test_directory_name)
23
+
24
+ directory(source_path, destination_path, config)
25
+
26
+ copy_rspec_config if options[:test] == 'rspec'
27
+ end
28
+
29
+ private
30
+
31
+ def test_directory_name
32
+ {
33
+ minitest: 'test',
34
+ rspec: 'spec'
35
+ }[options[:test].to_sym]
36
+ end
37
+
38
+ def copy_rspec_config
39
+ source_path = File.join(config[:source_root], 'templates', 'rspec_config')
40
+ destination_path = File.join(options[:work_dir], config[:app_name], '.rspec')
41
+
42
+ template(source_path, destination_path, config)
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,4 +1,4 @@
1
- require 'grape/command_generator'
1
+ require 'grape_cli/command_generator'
2
2
 
3
3
  class ApplicationFactory
4
4
  @@instance = ApplicationFactory.new
@@ -6,4 +6,4 @@ class ClassNameGenerator
6
6
  def generate
7
7
  @app_name.split('_').collect(&:capitalize).join
8
8
  end
9
- end
9
+ end
@@ -10,4 +10,8 @@ class CommandGenerator
10
10
  def run_console
11
11
  'racksh'
12
12
  end
13
+
14
+ def run_tests
15
+ 'bundle exec rake'
16
+ end
13
17
  end
@@ -0,0 +1,39 @@
1
+ require 'grape_cli/class_name_generator'
2
+ require 'grape_cli/application_factory'
3
+
4
+ module GrapeCli
5
+ class Config
6
+ attr_reader :app_name, :options, :source_root
7
+
8
+ def initialize(app_name, source_root, options = {})
9
+ @app_name = app_name
10
+ @options = options
11
+ @source_root = source_root
12
+ end
13
+
14
+ def config
15
+ {
16
+ source_root: source_root,
17
+ app_name: app_name,
18
+ class_name: ClassNameGenerator.new(app_name).generate,
19
+ database: options[:database],
20
+ database_gem: database_gem,
21
+ rspec: rspec?,
22
+ verbose: ApplicationFactory.instance.verbose_output
23
+ }
24
+ end
25
+
26
+ private
27
+
28
+ def rspec?
29
+ options[:test] == 'rspec'
30
+ end
31
+
32
+ def database_gem
33
+ {
34
+ postgres: 'pg',
35
+ sqlite: 'sqlite3'
36
+ }[options[:database].to_sym]
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,59 @@
1
+ require 'grape_cli/application_factory'
2
+ require 'grape_cli/config'
3
+ require 'grape_cli/actions/create_application'
4
+ require 'grape_cli/actions/setup_database'
5
+ require 'grape_cli/actions/setup_test_framework'
6
+
7
+ module GrapeCli
8
+ class Core < Thor
9
+ include Thor::Actions
10
+
11
+ desc 'new APP_NAME', 'Create a new Grape application'
12
+
13
+ method_option :work_dir, default: Dir.pwd
14
+ method_option :database, aliases: 'd', default: 'sqlite', enum: %w(postgres sqlite)
15
+ method_option :test, aliases: 't', default: 'minitest', enum: %w(minitest rspec)
16
+
17
+ def self.source_root
18
+ File.dirname(__FILE__)
19
+ end
20
+
21
+ # rubocop:disable Metrics/AbcSize
22
+ def new(app_name)
23
+ config = GrapeCli::Config.new(app_name, GrapeCli::Core.source_root, options).config
24
+ application_path = File.join(options[:work_dir], app_name)
25
+
26
+ GrapeCli::Actions::CreateApplication.new(self).run(config, application_path)
27
+ GrapeCli::Actions::SetupDatabase.new(self).run(config)
28
+ GrapeCli::Actions::SetupTestFramework.new(args, options, config).run
29
+
30
+ inside application_path do
31
+ run(ApplicationFactory.instance.command_generator.bundle_install, config)
32
+ end
33
+ end
34
+
35
+ desc 'server', 'Start the Grape server, alias "s"'
36
+ map 's' => 'server'
37
+
38
+ def server
39
+ puts 'Starting Grape server...'
40
+
41
+ run(ApplicationFactory.new.command_generator.run_server, verbose: false)
42
+ end
43
+
44
+ desc 'console', 'Start the Grape console, alias "c"'
45
+ map 'c' => 'console'
46
+
47
+ def console
48
+ puts 'Starting Grape console...'
49
+
50
+ run(ApplicationFactory.instance.command_generator.run_console, verbose: false)
51
+ end
52
+
53
+ desc 'test', 'Start tests'
54
+
55
+ def test
56
+ run(ApplicationFactory.instance.command_generator.run_tests, verbose: false)
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,6 @@
1
+ require 'thor'
2
+ require 'grape_cli/core'
3
+ require 'grape_cli/version'
4
+
5
+ module GrapeCli
6
+ end
@@ -8,7 +8,19 @@ gem 'activerecord', '~> 4.2.1', require: 'active_record'
8
8
  gem 'grape-activerecord'
9
9
  gem 'grape-swagger', '~> 0.10.2'
10
10
  gem 'rack', '~> 1.6.0'
11
- gem 'racksh'
11
+
12
+ <% if config[:rspec] %>
13
+ group :test do
14
+ gem 'rspec', '~> 3.3'
15
+ gem 'rack-test', '~> 0.6.3'
16
+ end
17
+ <% else %>
18
+ group :test do
19
+ gem 'minitest', '~> 5.8.0'
20
+ gem 'minitest-reporters'
21
+ gem 'rack-test', '~> 0.6.3'
22
+ end
23
+ <% end %>
12
24
 
13
25
  group :development, :test do
14
26
  gem 'rake', '~> 10.4.2'
@@ -11,6 +11,23 @@ rescue Bundler::BundlerError => e
11
11
  end
12
12
 
13
13
  require 'rake'
14
+ <% if config[:rspec] %>
15
+ require 'rspec/core/rake_task'
16
+
17
+ RSpec::Core::RakeTask.new(:spec)
18
+
19
+ task :default => :spec
20
+ <% else %>
21
+ require "rake/testtask"
22
+
23
+ Rake::TestTask.new(:test) do |t|
24
+ t.libs << "test"
25
+ t.libs << "lib"
26
+ t.test_files = FileList['test/**/*_test.rb']
27
+ end
28
+
29
+ task :default => :test
30
+ <% end %>
14
31
 
15
32
  task :environment do
16
33
  ENV['RACK_ENV'] ||= 'development'
@@ -7,11 +7,11 @@ default: &default
7
7
 
8
8
  development:
9
9
  <<: *default
10
- database: <%= config[:app_name] %>_api_development
10
+ database: <%= config[:app_name] %>_development
11
11
 
12
12
  test:
13
13
  <<: *default
14
- database: <%= config[:app_name] %>_api_test
14
+ database: <%= config[:app_name] %>_test
15
15
 
16
16
  production:
17
17
  url: <%= ENV['DATABASE_URL'] %>
@@ -8,18 +8,18 @@ default: &default
8
8
  adapter: sqlite3
9
9
  pool: 5
10
10
  timeout: 5000
11
-
11
+
12
12
  development:
13
13
  <<: *default
14
14
  database: db/development.sqlite3
15
-
15
+
16
16
  # Warning: The database defined as "test" will be erased and
17
17
  # re-generated from your development database when you run "rake".
18
18
  # Do not set this db to the same as development or production.
19
19
  test:
20
20
  <<: *default
21
21
  database: db/test.sqlite3
22
-
22
+
23
23
  production:
24
24
  <<: *default
25
- database: db/production.sqlite3
25
+ database: db/production.sqlite3
@@ -0,0 +1,15 @@
1
+ require 'test_helper'
2
+
3
+ class HelloWorldTest < MiniTest::Test
4
+ include Rack::Test::Methods
5
+
6
+ def app
7
+ <%= config[:class_name] %>::API
8
+ end
9
+
10
+ def test_api_get_hello_world
11
+ get '/api/hello_world'
12
+ assert last_response.ok?
13
+ assert_equal 'hello world', JSON.parse(last_response.body)['message']
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ require 'rack/test'
2
+ require 'minitest/autorun'
3
+ require 'minitest/reporters'
4
+
5
+ ENV['RACK_ENV'] = 'test'
6
+
7
+ Minitest::Reporters.use!(Minitest::Reporters::ProgressReporter.new, ENV)
8
+
9
+ require File.expand_path('../../config/environment', __FILE__)
@@ -0,0 +1,21 @@
1
+ describe 'Hello World Resource' do
2
+ include Rack::Test::Methods
3
+
4
+ def app
5
+ <%= config[:class_name] %>::API
6
+ end
7
+
8
+ describe 'GET /api/hello_world' do
9
+ subject { get '/api/hello_world' }
10
+
11
+ it 'returns 200 status code' do
12
+ subject
13
+ expect(last_response.status).to eq 200
14
+ end
15
+
16
+ it 'returns proper body' do
17
+ subject
18
+ expect(JSON.parse(last_response.body)['message']).to eq 'hello world'
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,14 @@
1
+ require 'rack/test'
2
+
3
+ ENV['RACK_ENV'] = 'test'
4
+
5
+ require File.expand_path('../../config/environment', __FILE__)
6
+
7
+ ActiveRecord::Base.logger = nil
8
+
9
+ RSpec.configure do |config|
10
+ config.mock_with :rspec
11
+ config.expect_with :rspec
12
+ config.raise_errors_for_deprecations!
13
+ config.order = 'random'
14
+ end
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
@@ -0,0 +1,3 @@
1
+ module GrapeCli
2
+ VERSION = '0.2.2'
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - wswidzinski
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-09-25 00:00:00.000000000 Z
14
+ date: 2015-10-04 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: thor
@@ -97,8 +97,8 @@ dependencies:
97
97
  - - ">="
98
98
  - !ruby/object:Gem::Version
99
99
  version: '0'
100
- description: " Grape-CLI is a gem for bootstraping standalone Grape application. It
101
- is heavily inspired by Rails/Ember generators. "
100
+ description: Grape-CLI is a gem for bootstraping standalone Grape application. It
101
+ is heavily inspired by Rails/Ember generators.
102
102
  email:
103
103
  - swidzinskiw@gmail.com
104
104
  executables:
@@ -107,34 +107,45 @@ extensions: []
107
107
  extra_rdoc_files: []
108
108
  files:
109
109
  - ".gitignore"
110
+ - ".rubocop.yml"
110
111
  - ".travis.yml"
111
112
  - CODE_OF_CONDUCT.md
112
113
  - Gemfile
114
+ - Guardfile
113
115
  - LICENSE.txt
114
116
  - README.md
115
117
  - Rakefile
118
+ - bin/_guard-core
116
119
  - bin/console
117
120
  - bin/grape
121
+ - bin/guard
118
122
  - bin/setup
119
123
  - grape-cli.gemspec
120
- - lib/grape/application_factory.rb
121
- - lib/grape/class_name_generator.rb
122
- - lib/grape/cli.rb
123
- - lib/grape/cli/console.rb
124
- - lib/grape/cli/new.rb
125
- - lib/grape/cli/server.rb
126
- - lib/grape/cli/template/application/Gemfile.tt
127
- - lib/grape/cli/template/application/Rakefile.tt
128
- - lib/grape/cli/template/application/app/api.rb.tt
129
- - lib/grape/cli/template/application/app/resources/hello_world.rb.tt
130
- - lib/grape/cli/template/application/config.ru.tt
131
- - lib/grape/cli/template/application/config/application.rb
132
- - lib/grape/cli/template/application/config/boot.rb
133
- - lib/grape/cli/template/application/config/environment.rb
134
- - lib/grape/cli/template/database/postgres.yml.tt
135
- - lib/grape/cli/template/database/sqlite.yml.tt
136
- - lib/grape/cli/version.rb
137
- - lib/grape/command_generator.rb
124
+ - lib/grape_cli/actions/create_application.rb
125
+ - lib/grape_cli/actions/setup_database.rb
126
+ - lib/grape_cli/actions/setup_test_framework.rb
127
+ - lib/grape_cli/application_factory.rb
128
+ - lib/grape_cli/class_name_generator.rb
129
+ - lib/grape_cli/command_generator.rb
130
+ - lib/grape_cli/config.rb
131
+ - lib/grape_cli/core.rb
132
+ - lib/grape_cli/grape_cli.rb
133
+ - lib/grape_cli/templates/application/Gemfile.tt
134
+ - lib/grape_cli/templates/application/Rakefile.tt
135
+ - lib/grape_cli/templates/application/app/api.rb.tt
136
+ - lib/grape_cli/templates/application/app/resources/hello_world.rb.tt
137
+ - lib/grape_cli/templates/application/config.ru.tt
138
+ - lib/grape_cli/templates/application/config/application.rb
139
+ - lib/grape_cli/templates/application/config/boot.rb
140
+ - lib/grape_cli/templates/application/config/environment.rb
141
+ - lib/grape_cli/templates/database/postgres.yml.tt
142
+ - lib/grape_cli/templates/database/sqlite.yml.tt
143
+ - lib/grape_cli/templates/minitest/requests/hello_world_test.rb.tt
144
+ - lib/grape_cli/templates/minitest/test_helper.rb
145
+ - lib/grape_cli/templates/rspec/requests/hello_world_spec.rb.tt
146
+ - lib/grape_cli/templates/rspec/spec_helper.rb
147
+ - lib/grape_cli/templates/rspec_config
148
+ - lib/grape_cli/version.rb
138
149
  homepage: http://github.com/elpassion/grape-cli
139
150
  licenses:
140
151
  - MIT
@@ -1,15 +0,0 @@
1
- require 'grape/application_factory'
2
-
3
- class GrapeCli < Thor
4
- include Thor::Actions
5
-
6
- desc 'console', 'Start the Grape console, alias "c"'
7
-
8
- def console
9
- puts 'Starting Grape console...'
10
-
11
- run(ApplicationFactory.instance.command_generator.run_console, verbose: false)
12
- end
13
-
14
- map 'c' => 'console'
15
- end
data/lib/grape/cli/new.rb DELETED
@@ -1,49 +0,0 @@
1
- require 'grape/application_factory'
2
- require 'grape/class_name_generator'
3
-
4
- class GrapeCli < Thor
5
- include Thor::Actions
6
-
7
- desc "new APP_NAME", "Create a new Grape application"
8
-
9
- method_option :work_dir, default: Dir.pwd
10
- method_option :database, aliases: 'd', default: 'postgres'
11
-
12
- def self.source_root
13
- File.dirname(__FILE__)
14
- end
15
-
16
- def new(app_name)
17
- template_path = File.join(GrapeCli.source_root, 'template')
18
- application_template_path = File.join(template_path, 'application')
19
- destination_path = File.join(options[:work_dir], app_name)
20
- config = create_config(app_name)
21
-
22
- directory(application_template_path, destination_path, config)
23
- template(File.join(template_path, 'database', "#{options[:database]}.yml.tt"),
24
- File.join(destination_path, 'config', 'database.yml'), config)
25
- inside destination_path do
26
- run(ApplicationFactory.instance.command_generator.bundle_install, config)
27
- end
28
- end
29
-
30
- private
31
-
32
- def create_config(app_name)
33
- {
34
- app_name: app_name,
35
- class_name: ClassNameGenerator.new(app_name).generate,
36
- database: options[:database],
37
- database_gem: database_gem(options[:database]),
38
- verbose: ApplicationFactory.instance.verbose_output
39
- }
40
- end
41
-
42
-
43
- def database_gem(database)
44
- {
45
- postgres: 'pg',
46
- sqlite: 'sqlite3'
47
- }[database.to_sym]
48
- end
49
- end
@@ -1,15 +0,0 @@
1
- require 'grape/application_factory'
2
-
3
- class GrapeCli < Thor
4
- include Thor::Actions
5
-
6
- desc 'server', 'Start the Grape server, alias "s"'
7
-
8
- def server
9
- puts 'Starting Grape server...'
10
-
11
- run(ApplicationFactory.instance.command_generator.run_server, verbose: false)
12
- end
13
-
14
- map 's' => 'server'
15
- end
@@ -1,5 +0,0 @@
1
- module Grape
2
- module Cli
3
- VERSION = "0.2.1"
4
- end
5
- end
data/lib/grape/cli.rb DELETED
@@ -1,8 +0,0 @@
1
- require 'thor'
2
- require 'grape/cli/new'
3
- require 'grape/cli/server'
4
- require 'grape/cli/console'
5
- require 'grape/cli/version'
6
-
7
- module Grape
8
- end