rails-new 0.0.5 → 0.0.6

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: 4796dc67275bd498094319869adcf14864198733
4
- data.tar.gz: 3cbdcf5b99f8be252ae5699c90e8df4d23302107
3
+ metadata.gz: 2574d8e6e14dafba2a540d34dcea2ae52e6f7614
4
+ data.tar.gz: 915ba3662d5a33c03121bcf74b1a0be4103c3c80
5
5
  SHA512:
6
- metadata.gz: 06e7ac0ab0068a4c92b32ad51c19f94f21130066bb4202af19573213f16786886ca54901d95601c7ff51a6169e37f9c0cf18d90486c11f9291acb7867e173831
7
- data.tar.gz: 05a97a083d462f38d886b2f5ebcaa9f07a2411a08d940209b177c2b6b2cba06a67a6e29a74343407887142b0fd8cec8f4e338709227a6598184c70eac7f363b5
6
+ metadata.gz: 626a7cb24ebb747869b6fc4a68726da8e0f013cc834872629b04ad4e5c6ffe8f2e56aef9f4da0a681657a8af3c307ad953be2a7c00d8d389f36c1d89fb172999
7
+ data.tar.gz: 30319c83146979c7ec93e8a27df8302ed1a77c41ac8534b6c35e232e23cfe9e63449b7069a51018eb64f86bcc62d902c02362b0630d814395ac2aae274ae3538
@@ -1,85 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
-
3
- require "thor"
4
- require "thor/group"
5
- require 'httparty'
6
- require 'tmpdir'
7
-
8
2
  require_relative '../lib/rails_new'
9
3
 
10
- class RailsNewWrapper < Thor::Group
11
- desc "run `rails new` with the requirements of the template"
12
-
13
- argument :template_key,
14
- :type => :string,
15
- :desc => "The template key in the format user/template",
16
- :required => true
17
-
18
- argument :app_name,
19
- :type => :string,
20
- :desc => "The application name to pass to Rails",
21
- :required => true
22
-
23
- def request_template_data
24
- url = RailsNew::Api.template_url_for(template_key)
25
-
26
- say "Fetching template data from ", :green, false
27
- say url, :blue
28
-
29
- @response = HTTParty.get(url)
30
- if @response.code != 200
31
- raise "The response of the server to #{@response.request.uri} was not 200."
32
- end
33
- end
34
-
35
- def parse_template_data
36
- @template_data = JSON.parse(@response.body)['template']
37
- @git_repository = @template_data['git_repository']
38
- @git_branch = @template_data['git_branch']
39
- @main_file_location = @template_data["main_file_location"]
40
- @arguments = build_arguments_array(@template_data['arguments'])
41
- end
42
-
43
- def run_template
44
- Dir.mktmpdir do |temp_dir|
45
- template_location = Pathname.new(temp_dir).join(@main_file_location).to_s
46
-
47
- say "Cloning git repository ", :green, false
48
- say @git_repository, :blue
49
- Kernel.system %w{git clone -b #{@git_branch} #{@git_repository} #{temp_dir}}
50
-
51
- command = [
52
- "rails", "new", @app_name, "-m", template_location, *@arguments, *extra_rails_arguments
53
- ]
54
-
55
- say "The following command will be executed:", :green, false
56
-
57
- puts "\n\n"
58
- say command.join(' '), :blue
59
- puts
60
-
61
- if yes? "Is this command safe?"
62
- say "Executing template", :green
63
- Kernel.system *command
64
- else
65
- say "Aborted command. Please review the template #{template_key}.", :red
66
- end
67
- end
68
- end
69
-
70
- private
71
-
72
- def build_arguments_array(arguments)
73
- arguments.map do |arg|
74
- tokens = [arg['key']]
75
- tokens << [arg['value']] if arg['has_value']
76
- tokens
77
- end.flatten
78
- end
79
-
80
- def extra_rails_arguments
81
- @extra_rails_arguments ||= ARGV[2..-1]
82
- end
4
+ if ['-v', '--version'].include?(ARGV.first)
5
+ require_relative '../lib/rails_new/version'
6
+ puts RailsNew::VERSION
7
+ exit(0)
83
8
  end
84
9
 
85
- RailsNewWrapper.start(ARGV)
10
+ RailsNew::CLI.start(ARGV)
@@ -2,3 +2,5 @@ module RailsNew
2
2
  end
3
3
 
4
4
  require_relative './rails_new/api'
5
+ require_relative './rails_new/command'
6
+ require_relative './rails_new/cli'
@@ -0,0 +1,89 @@
1
+ require "thor"
2
+ require "thor/group"
3
+ require "httparty"
4
+ require "tmpdir"
5
+
6
+ module RailsNew
7
+ class CLI < Thor::Group
8
+ desc "run `rails new` with the requirements of the template"
9
+
10
+ argument :template_key,
11
+ :type => :string,
12
+ :desc => "The template key in the format user/template",
13
+ :required => true
14
+
15
+ argument :app_name,
16
+ :type => :string,
17
+ :desc => "The application name to pass to Rails",
18
+ :required => true
19
+
20
+ class_option :version, :type => :string, :required => false
21
+
22
+ def request_template_data
23
+ url = RailsNew::Api.template_url_for(template_key)
24
+
25
+ say "Fetching template data from ", :green, false
26
+ say url, :blue
27
+
28
+ @response = HTTParty.get(url)
29
+ if @response.code != 200
30
+ raise "The response of the server to #{@response.request.uri} was not 200."
31
+ end
32
+ end
33
+
34
+ def parse_template_data
35
+ @template_data = JSON.parse(@response.body)['template']
36
+ @git_repository = @template_data['git_repository']
37
+ @git_branch = @template_data['git_branch']
38
+ @main_file_location = @template_data["main_file_location"]
39
+ @arguments = build_arguments_array(@template_data['arguments'])
40
+ end
41
+
42
+ def run_template
43
+ Dir.mktmpdir do |temp_dir|
44
+ template_location = Pathname.new(temp_dir).join(@main_file_location).to_s
45
+
46
+ say "Cloning git repository ", :green, false
47
+ say @git_repository, :blue
48
+ clone_command = RailsNew::Command.new("git", "clone", "-b", @git_branch, @git_repository, temp_dir)
49
+ clone_command.run
50
+
51
+ rails_command = RailsNew::Command.new(
52
+ "rails", "new", @app_name, "-m", template_location, *@arguments, *extra_rails_arguments
53
+ )
54
+
55
+ say "The following command will be executed:", :green, false
56
+
57
+ puts "\n\n"
58
+ say rails_command.to_s, :blue
59
+ puts
60
+
61
+ if yes? "Is this command safe?"
62
+ say "Executing template", :green
63
+ rails_command.run
64
+ else
65
+ say "Aborted command. Please review the template #{template_key}.", :red
66
+ exit(1)
67
+ end
68
+ end
69
+ end
70
+
71
+ def exit_on_failure?
72
+ true
73
+ end
74
+
75
+ private
76
+
77
+ def build_arguments_array(arguments)
78
+ arguments.map do |arg|
79
+ tokens = [arg['key']]
80
+ tokens << [arg['value']] if arg['has_value']
81
+ tokens
82
+ end.flatten
83
+ end
84
+
85
+ def extra_rails_arguments
86
+ @extra_rails_arguments ||= ARGV[2..-1]
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,24 @@
1
+ module RailsNew
2
+ class Command
3
+ attr_reader :command
4
+
5
+ def initialize(*command)
6
+ self.command = command
7
+ end
8
+
9
+ def run
10
+ result = Kernel.system *command
11
+ unless result
12
+ raise "Command #{to_s} failed."
13
+ end
14
+ end
15
+
16
+ def to_s
17
+ command.join(' ')
18
+ end
19
+
20
+ private
21
+
22
+ attr_writer :command
23
+ end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module RailsNew
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-new
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - juliogarciag
@@ -83,6 +83,8 @@ files:
83
83
  - lib/rails_new.rb
84
84
  - lib/rails_new/.DS_Store
85
85
  - lib/rails_new/api.rb
86
+ - lib/rails_new/cli.rb
87
+ - lib/rails_new/command.rb
86
88
  - lib/rails_new/version.rb
87
89
  - rails-new.gemspec
88
90
  homepage: ''