-
Notifications
You must be signed in to change notification settings - Fork 7
/
template.rb
126 lines (98 loc) · 2.92 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
def add_gems
gem "foreman", "~> 0.85.0"
gem "webpacker", "~> 3.5", ">= 3.5.5"
end
def set_application_name
environment "config.application_name = Rails.application.class.parent_name"
end
def install_webpacker
rails_command "webpacker:install"
end
def change_webpacker_config_file
gsub_file "config/webpacker.yml",
/source_path: app\/javascript/,
"source_path: frontend"
end
def move_webpacker_javascript_directory_to_root
run "mv app/javascript frontend"
change_webpacker_config_file
end
def setup_images_for_webpack
file "frontend/packs/images.js", <<-CODE
import "../images"
CODE
file "frontend/images/index.js", <<-CODE
function importAll(r) {
return r.keys().map(r);
}
const images = importAll(require.context("./", false, /\.(png|jpe?g|svg)$/));
CODE
end
def setup_tailwindcss
run "yarn add tailwindcss@next"
run "mkdir -p frontend/stylesheets"
inject_into_file "./.postcssrc.yml", "\n tailwindcss: {}", after: "postcss-cssnext: {}"
file "frontend/stylesheets/application.css", <<-CODE
/* All your Css goes here */
CODE
end
def setup_stimulus
run "bundle exec rails webpacker:install:stimulus"
end
def remove_default_assets
run "rm -rf app/assets/"
end
def add_foreman
file "Procfile.dev", <<-CODE
web: rails server
webpack: ./bin/webpack-dev-server --watch --colors --progress
CODE
file ".foreman", <<-CODE
procfile: Procfile.dev
CODE
end
def setup_application_pack_file
remove_file "frontend/packs/application.js"
file "frontend/packs/application.js", <<-CODE
/* eslint no-console:0 */
import { Application } from "stimulus"
import { definitionsFromContext } from "stimulus/webpack-helpers"
const application = Application.start()
const context = require.context("controllers", true, /.js$/)
application.load(definitionsFromContext(context))
import "../stylesheets/application.css"
CODE
end
def replace_application_include_tags
gsub_file "app/views/layouts/application.html.erb", /stylesheet_link_tag/, "stylesheet_pack_tag"
gsub_file "app/views/layouts/application.html.erb", /javascript_include_tag/, "javascript_pack_tag"
end
def stop_spring
run "spring stop"
end
add_gems
after_bundle do
set_application_name
stop_spring
install_webpacker
move_webpacker_javascript_directory_to_root
setup_images_for_webpack
setup_tailwindcss
setup_stimulus
add_foreman
remove_default_assets
setup_application_pack_file
replace_application_include_tags
rails_command "db:create"
rails_command "db:migrate"
git :init
git add: "."
git commit: %Q{ -m "Initial commit" }
say "============================================================="
say ""
say "💡 Sjabloon LITE is successfully installed! ✨", :yellow
say "For more features, designed templates, fully configuration,", :yellow
say "UI components and billing with Stripe, check out https://www.getsjabloon.com (💡 cmd + click to open).", :yellow
say ""
say "============================================================="
end