class SinatraWebsocketTemplate::CLI
Public Class Methods
source_root()
click to toggle source
# File lib/sinatra_websocket_template/cli.rb, line 8 def self.source_root File.join(__dir__, 'templates') end
Public Instance Methods
edit_gemspec(file)
click to toggle source
# File lib/sinatra_websocket_template/cli.rb, line 56 def edit_gemspec(file) content = File.read(file) content.sub!(/^end\n$/, '') content.concat(<<-EOS) spec.add_development_dependency "foreman" spec.add_dependency "faye-websocket" spec.add_dependency "puma" spec.add_dependency "sinatra" spec.add_dependency "haml" spec.required_ruby_version = ">= 2.0.0" end EOS File.write(file, content) end
execute_and_edit_bundle_gem(project_name, options)
click to toggle source
# File lib/sinatra_websocket_template/cli.rb, line 42 def execute_and_edit_bundle_gem(project_name, options) dir = options[:dir] opts = %i(test bin).map do |k| "--#{k}=#{options[k]}" if options[k] end.join(" ") FileUtils.mkdir_p(dir) Dir.chdir(dir) { system("bundle gem #{project_name} #{opts}") } gemspec = File.join(dir, project_name, "#{project_name}.gemspec") edit_gemspec(gemspec) rescue => e abort "Execute 'bundle gem' failed: #{e.message}" end
new(project_name)
click to toggle source
# File lib/sinatra_websocket_template/cli.rb, line 16 def new(project_name) target = File.join(options[:dir], project_name) opts = { module_name: project_name.split('_').map(&:capitalize).join, namespaced_path: project_name } template("project/Procfile.tt", File.join(target, "Procfile")) template("project/config.ru.tt", File.join(target, "config.ru"), opts) lib_path = File.join(target, "lib") template("project/lib/app.rb.tt", File.join(lib_path, "app.rb"), opts) template("project/lib/views/index.haml.tt", File.join(lib_path, "views", "index.haml"), opts) template("project/lib/public/css/main.css.tt", File.join(lib_path, "public", "css", "main.css")) template("project/lib/public/js/application.js.tt", File.join(lib_path, "public", "js", "application.js")) template("project/lib/project/backend.rb.tt", File.join(lib_path, project_name, "backend.rb"), opts) execute_and_edit_bundle_gem(project_name, options) end
version()
click to toggle source
# File lib/sinatra_websocket_template/cli.rb, line 36 def version puts "SinatraWebsocketTemplate version #{SinatraWebsocketTemplate::VERSION}" end