htcht 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +3 -1
- data/lib/htcht/cli/rails/rails.rb +18 -8
- data/lib/htcht/cli/rails/templates/api_build_files/seeds.rb +19 -0
- data/lib/htcht/cli/rails/templates/{api_bootstrap_template.rb → api_init_template.rb} +16 -4
- data/lib/htcht/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec30c53f8e25b42c1b119536c829c434562aeb18
|
4
|
+
data.tar.gz: affeeb15ceb6c3cacbc4034150ba9e0d846269b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 578361f294a77e21773df29fb22b5b8ea250a615aea08eb609645cc82b095301685b6272b6f8864e375ba656a7851dcc10985ad042167c422c12be0baacf775b
|
7
|
+
data.tar.gz: 257d9920e4dfba6547988d88c05c46b5ceb955b36119f9b3fbcbd091000ff8edffbaf2ae2db9b6e9c8711433fcd6ad40416454538969035c10ca31b807b56724
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,8 @@ The internal CLI of Trim Agency. Used to setup new projects, build, test, etc.
|
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
+
Htcht requires Docker and has only been tested on MacOS.
|
8
|
+
|
7
9
|
Run this command to install
|
8
10
|
|
9
11
|
$ gem install htcht
|
@@ -20,7 +22,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
20
22
|
|
21
23
|
## Contributing
|
22
24
|
|
23
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
25
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/TrimAgency/htcht. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
24
26
|
|
25
27
|
|
26
28
|
## License
|
@@ -11,34 +11,36 @@ module Htcht
|
|
11
11
|
|
12
12
|
desc 'new AppName', 'Create a new base Rails App inside a Docker Container with Postgres setup as the database.'
|
13
13
|
method_option :verbose, type: :boolean, default: false, :aliases => '-v', :desc => 'default: [--no-verbose] By default rails new will be run with the quiet flag, this turns it off.'
|
14
|
-
method_option :api, type: :boolean, default: false, :desc => 'default: [--no-api] Generate Rails App in API mode.'
|
15
|
-
method_option :
|
14
|
+
method_option :api, type: :boolean, default: false, :aliases => '-a', :desc => 'default: [--no-api] Generate Rails App in API mode.'
|
15
|
+
method_option :init, type: :boolean, default: false, :aliases => '-i', :desc => 'default: [--no-init] Generate a base Rails app with custom Gemfile and configs. (This along with "--api" is the base for new Rails APIs at Trim Agency).'
|
16
16
|
method_option :test, type: :boolean, default: false, :desc => 'default: [--no-test]'
|
17
17
|
def new(appname)
|
18
18
|
|
19
19
|
# Format the appname as snake case for folders, etc.
|
20
20
|
# This code is taken straight from Rails
|
21
|
+
# TODO: Move to a helper file
|
21
22
|
snake_name = appname.gsub(/::/, '/').
|
22
23
|
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
23
24
|
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
24
25
|
tr("-", "_").
|
25
26
|
downcase
|
26
27
|
|
27
|
-
rails_new_command = 'docker-compose run app rails new . --database=postgresql
|
28
|
+
rails_new_command = 'docker-compose run app rails new . --database=postgresql --skip-bundle'
|
28
29
|
|
29
30
|
# Set the application template
|
30
31
|
# TODO: Refactor to be dynamic from a directory
|
31
|
-
if options[:
|
32
|
-
copy_file('templates/
|
32
|
+
if options[:init] && options[:api]
|
33
|
+
copy_file('templates/api_init_template.rb', "#{snake_name}/api_init_template.rb")
|
33
34
|
copy_file('templates/api_build_files/user_spec.rb', "#{snake_name}/build_files/user_spec.rb")
|
34
35
|
copy_file('templates/api_build_files/users.rb', "#{snake_name}/build_files/users.rb")
|
35
36
|
copy_file('templates/api_build_files/email_validator.rb', "#{snake_name}/build_files/email_validator.rb")
|
36
37
|
copy_file('templates/api_build_files/factory_girl.rb', "#{snake_name}/build_files/factory_girl.rb")
|
37
38
|
copy_file('templates/api_build_files/shoulda_matchers.rb', "#{snake_name}/build_files/shoulda_matchers.rb")
|
38
39
|
copy_file('templates/api_build_files/rails_helper.rb', "#{snake_name}/build_files/rails_helper.rb")
|
39
|
-
|
40
|
-
|
41
|
-
|
40
|
+
copy_file('templates/api_build_files/seeds.rb', "#{snake_name}/build_files/seeds.rb")
|
41
|
+
rails_new_command.concat(' -m api_init_template.rb -T')
|
42
|
+
elsif options[:init]
|
43
|
+
puts "--init must be used with --api for now."
|
42
44
|
return
|
43
45
|
else
|
44
46
|
copy_file 'templates/default_template.rb', "#{snake_name}/default_template.rb"
|
@@ -86,7 +88,15 @@ module Htcht
|
|
86
88
|
run('docker-compose run app rake db:create')
|
87
89
|
run('docker-compose run app rake db:migrate')
|
88
90
|
|
91
|
+
# Clean up the template and build files
|
92
|
+
if options[:init] && options[:api]
|
93
|
+
remove_file("api_init_template.rb")
|
94
|
+
remove_dir("build_files/")
|
95
|
+
else
|
96
|
+
remove_file("default_template.rb")
|
97
|
+
end
|
89
98
|
end
|
99
|
+
|
90
100
|
end
|
91
101
|
end
|
92
102
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# This file should contain all the record creation needed to seed the database with its default values.
|
2
|
+
# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
|
3
|
+
#
|
4
|
+
# Enviroment Specific Seed data is handled with the seedbank gem and follows this structure
|
5
|
+
#
|
6
|
+
# db/seeds/
|
7
|
+
# bar.seeds.rb
|
8
|
+
# development/
|
9
|
+
# users.seeds.rb
|
10
|
+
# foo.seeds.rb
|
11
|
+
#
|
12
|
+
# This would generate the following Rake tasks
|
13
|
+
#
|
14
|
+
# rake db:seed Load the seed data from db/seeds.rb, db/seeds/*.seeds.rb and db/seeds/ENVIRONMENT/*.seeds.rb. ENVIRONMENT is the current environment in Rails.env.
|
15
|
+
# rake db:seed:bar Load the seed data from db/seeds/bar.seeds.rb
|
16
|
+
# rake db:seed:common Load the seed data from db/seeds.rb and db/seeds/*.seeds.rb.
|
17
|
+
# rake db:seed:development Load the seed data from db/seeds.rb, db/seeds/*.seeds.rb and db/seeds/development/*.seeds.rb.
|
18
|
+
# rake db:seed:development:users Load the seed data from db/seeds/development/users.seeds.rb
|
19
|
+
# rake db:seed:original Load the seed data from db/seeds.rb
|
@@ -73,13 +73,21 @@ run('bundle install')
|
|
73
73
|
|
74
74
|
# Setup Rspec for Testing
|
75
75
|
# ----------------------------
|
76
|
-
|
77
76
|
run('rails generate rspec:install')
|
78
77
|
|
78
|
+
# Setup Figaro for ENV
|
79
|
+
# ----------------------------
|
80
|
+
run('bundle exec figaro install')
|
81
|
+
|
82
|
+
# Setup Knock for JWT
|
83
|
+
# ----------------------------
|
84
|
+
run('rails generate knock:install')
|
85
|
+
run('rails generate knock:token_controller user')
|
86
|
+
insert_into_file("app/controllers/application_controller.rb", "\s\sinclude Knock::Authenticable\n", :after => "class ApplicationController < ActionController::API\n")
|
87
|
+
|
79
88
|
# Generate User Model
|
80
89
|
# and add validations to user.rb
|
81
90
|
# ----------------------------
|
82
|
-
|
83
91
|
generate(:model, 'User', 'email:uniq:index', 'password:digest')
|
84
92
|
user_migration = Dir.glob('db/migrate/*.rb')[0].to_s
|
85
93
|
gsub_file(user_migration, 't.string :email', 't.string :email, null: false')
|
@@ -106,6 +114,8 @@ insert_into_file('app/models/user.rb', after: 'has_secure_password') do
|
|
106
114
|
)
|
107
115
|
end
|
108
116
|
|
117
|
+
# Copy remaining files to their respective locations
|
118
|
+
# ----------------------------
|
109
119
|
remove_file('spec/models/user_spec.rb')
|
110
120
|
copy_file('build_files/user_spec.rb', 'spec/models/user_spec.rb')
|
111
121
|
copy_file('build_files/users.rb', 'spec/factories/users.rb')
|
@@ -113,5 +123,7 @@ copy_file('build_files/email_validator.rb', 'app/validators/email_validator.rb')
|
|
113
123
|
copy_file('build_files/factory_girl.rb', 'spec/support/factory_girl.rb')
|
114
124
|
copy_file('build_files/rails_helper.rb', 'spec/rails_helper.rb')
|
115
125
|
copy_file('build_files/shoulda_matchers.rb', 'spec/support/shoulda_matchers.rb')
|
116
|
-
|
117
|
-
|
126
|
+
copy_file('build_files/seeds.rb', 'db/seeds.rb')
|
127
|
+
empty_directory('db/seeds')
|
128
|
+
empty_directory('db/seeds/development')
|
129
|
+
empty_directory('db/seeds/test')
|
data/lib/htcht/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: htcht
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Trim Agency
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -90,13 +90,14 @@ files:
|
|
90
90
|
- lib/htcht/cli/rails/Dockerfile
|
91
91
|
- lib/htcht/cli/rails/docker-compose.yml
|
92
92
|
- lib/htcht/cli/rails/rails.rb
|
93
|
-
- lib/htcht/cli/rails/templates/api_bootstrap_template.rb
|
94
93
|
- lib/htcht/cli/rails/templates/api_build_files/email_validator.rb
|
95
94
|
- lib/htcht/cli/rails/templates/api_build_files/factory_girl.rb
|
96
95
|
- lib/htcht/cli/rails/templates/api_build_files/rails_helper.rb
|
96
|
+
- lib/htcht/cli/rails/templates/api_build_files/seeds.rb
|
97
97
|
- lib/htcht/cli/rails/templates/api_build_files/shoulda_matchers.rb
|
98
98
|
- lib/htcht/cli/rails/templates/api_build_files/user_spec.rb
|
99
99
|
- lib/htcht/cli/rails/templates/api_build_files/users.rb
|
100
|
+
- lib/htcht/cli/rails/templates/api_init_template.rb
|
100
101
|
- lib/htcht/cli/rails/templates/default_template.rb
|
101
102
|
- lib/htcht/main.rb
|
102
103
|
- lib/htcht/version.rb
|