grape-cli 0.2.1 → 0.2.2

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