require_relative 'install_generator_base'
module Hyperloop
class InstallBootstrapGenerator < Rails::Generators::Base
desc "Adds the bits you need for the Bootstrap 3.0 framework"
class_option 'no-build', type: :boolean
def insure_yarn_loaded
begin
yarn_version = `yarn --version`
raise Errno::ENOENT if yarn_version.blank?
rescue Errno::ENOENT
raise Thor::Error.new("please insure the yarn command is available if using webpacker")
end
end
def add_to_manifests
add_to_manifest 'client_and_server.js' do
"BS = require('react-bootstrap');\n"
end
end
def add_style_sheet_pack_tag
inject_into_file 'app/views/layouts/application.html.erb', after: /stylesheet_link_tag.*$/ do
<<-JAVASCRIPT
JAVASCRIPT
end
end
def run_yarn
yarn 'react-bootstrap'
yarn 'bootstrap@3'
end
def build_webpack
system('bin/webpack') unless options['no-build']
end
def add_sample_component
create_file 'app/hyperloop/components/bs_sampler.rb' do
<<-RUBY
class BsSampler < Hyperloop::Component
render(DIV) do
BS::Grid() do
BS::Row(class: "show-grid") do
BS::Col(xs: 12, md: 8) do
CODE { "BS::Col(xs: 12, md: 8)" }
end
BS::Col(xs: 6, md: 4) do
CODE { "BS::Col(xs: 6, md: 4)" }
end
end
BS::Row() do
BS::Alert(bsStyle: "warning") do
STRONG { "Holy guacamole!" }
SPAN { " Best check yo self, you're not looking too good." }
end
end
end
end
end
RUBY
end
end
end
end