-
Notifications
You must be signed in to change notification settings - Fork 0
/
template.rb
executable file
·199 lines (171 loc) · 6.14 KB
/
template.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
require 'fileutils'
require 'shellwords'
#########################################################################
# Copied from: https://github.com/mattbrictson/rails-template
# Add this template directory to source_paths so that Thor actions like
# copy_file and template resolve against our source files. If this file was
# invoked remotely via HTTP, that means the files are not present locally.
# In that case, use `git clone` to download them to a local temporary dir.
#########################################################################
def add_template_repository_to_source_path
if __FILE__ =~ %r{\Ahttps?://}
require 'tmpdir'
source_paths.unshift(temp_dir = Dir.mktmpdir('jumpstart-'))
at_exit { FileUtils.remove_entry(temp_dir) }
git clone: [
'--quiet',
'https://github.com/drgcms/drg-portal-jumpstart.git',
temp_dir
].map(&:shellescape).join(' ')
if (branch = __FILE__[%r{jumpstart/(.+)/template.rb}, 1])
Dir.chdir(temp_dir) { git checkout: branch }
end
else
source_paths.unshift(File.dirname(__FILE__))
end
end
#########################################################################
# Reads data from terminal input
#########################################################################
def read_input(message, default = '')
message.split("\n").each { |e| print "#{e} " }
response = STDIN.gets.chomp
response.blank? ? default : response
end
#########################################################################
#
#########################################################################
def set_application_name
# Add Application Name to Config
environment 'config.application_name = Rails.application.class.parent_name'
# Announce the user where he can change the application name in the future.
puts 'You can change application name inside: ./config/application.rb'
end
#########################################################################
#
#########################################################################
def copy_templates
directory 'app', force: true
directory 'config', force: true
directory 'lib', force: true
end
#def add_webpack
# rails_command 'webpacker:install'
#end
#########################################################################
#
#########################################################################
def update_routes
insert_into_file 'config/routes.rb', %(
root :to => 'portal#page'
DrgCms.routes
put '/portal/process_login'
post '/reports/diary'
resources :init # remove after initial run
get '*path' => 'portal#page'
),
after: 'Rails.application.routes.draw do'
end
#########################################################################
#
#########################################################################
def update_initializers
# assets.rb
append_to_file 'config/initializers/assets.rb',
'Rails.application.config.assets.precompile += %w( cms.css cms.js)'
end
#########################################################################
#
#########################################################################
def add_stage
# duplicate production.rb
begin
FileUtils.cp File.join(@app_path,'config/environments/production.rb'),
File.join(@app_path,'config/environments/stage.rb')
rescue Exception => e
p 'Error creating stage.rb file. If you are going to use staging environment just copy config/environments/production.rb to stage.rb!'
end
end
#########################################################################
#
#########################################################################
def update_application
# action cable is not required
gsub_file 'config/application.rb',
/require \"action_cable\/engine\"/,
'## require "action_cable/engine"'
# add default forms path
append_to_file 'config/application.rb', "DrgCms.add_forms_path Rails.root.join('app/forms')"
end
#########################################################################
#
#########################################################################
def update_mongoid_setup
# update database names
gsub_file 'config/mongoid.yml', /drgcms_/, "#{@app_name}_"
end
#########################################################################
#
#########################################################################
def update_layout
# update database names
gsub_file 'app/views/layouts/application.html.erb', 'javascript_pack_tag', 'javascript_include_tag'
end
#########################################################################
#
#########################################################################
def copy_gemfile
copy_file 'Gemfile', force: true
end
#########################################################################
#
#########################################################################
def copy_ck_config
copy_file 'public/files/ck_config.js', force: true
copy_file 'public/files/ck_css.css', force: true
# I am cheating here, but couldn't get these icons displayed in development
copy_file 'public/icons.png', force: true
end
#########################################################################
#
#########################################################################
def copy_bundler_setup
directory '.bundle', force: true
end
#########################################################################
#
#########################################################################
def update_gitignore
append_to_file '.gitignore', %(
#added by DRG
.gitignore
/vendor/ruby
/.bundle
)
end
#########################################################################
#########################################################################
# Main setup
add_template_repository_to_source_path
copy_templates
copy_bundler_setup
copy_gemfile
copy_ck_config
update_gitignore
update_mongoid_setup
update_application
update_initializers
update_layout
add_stage
after_bundle do
#conflict with own application.js
FileUtils.rm 'app/javascript/application.js' rescue nil
begin
git :init
git add: '.'
git commit: %( -m 'Initial commit' --quiet )
p 'Git initial commit created.'
rescue Exception
p 'Error creating Git repository!'
end
end