Class: Scaffold
- Inherits:
-
Object
- Object
- Scaffold
- Extended by:
- FileUtils
- Defined in:
- lib/glimmer/scaffold.rb
Constant Summary collapse
- VERSION =
File.read(File.('../../../VERSION', __FILE__)).strip
- RUBY_VERSION =
File.read(File.('../../../RUBY_VERSION', __FILE__)).strip
- GITIGNORE =
TODO externalize all constants into scaffold/files
<<~MULTI_LINE_STRING *.gem *.rbc /.config /coverage/ /InstalledFiles /pkg/ /spec/reports/ /spec/examples.txt /test/tmp/ /test/version_tmp/ /tmp/ # Used by dotenv library to load environment variables. # .env ## Specific to RubyMotion: .dat* .repl_history build/ *.bridgesupport build-iPhoneOS/ build-iPhoneSimulator/ ## Specific to RubyMotion (use of CocoaPods): # # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control # # vendor/Pods/ ## Documentation cache and generated files: /.yardoc/ /_yardoc/ /doc/ /rdoc/ ## Environment normalization: /.bundle/ /vendor/bundle /lib/bundler/man/ # for a library or gem, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: Gemfile.lock # .ruby-version # .ruby-gemset # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: .rvmrc # Mac .DS_Store # Gladiator (Glimmer Editor) .gladiator # Glimmer dist packages MULTI_LINE_STRING
- GEMFILE_APP =
<<~MULTI_LINE_STRING # frozen_string_literal: true source "https://rubygems.org" git_source(:github) {|repo_name| "https://github.com/\#{repo_name}" } gem 'glimmer', '~> #{VERSION}' group :test do gem 'rspec' end MULTI_LINE_STRING
- GEMFILE_GEM =
<<~MULTI_LINE_STRING # frozen_string_literal: true source "https://rubygems.org" git_source(:github) {|repo_name| "https://github.com/\#{repo_name}" } gem 'glimmer', '~> #{VERSION}' group :development do gem "rspec", "~> 3.5.0" gem "jeweler", "2.3.9" gem "simplecov", ">= 0" end MULTI_LINE_STRING
- RAKEFILE =
<<~MULTI_LINE_STRING require 'glimmer/rake_task' ## Uncomment the following section if you would like to customize javapackager ## arguments for `glimmer package` command. # # Glimmer::Package.javapackager_extra_args = # " -BlicenseType=" + # " -Bmac.CFBundleIdentifier=" + # " -Bmac.category=" + # " -Bmac.signing-key-developer-id-app=" MULTI_LINE_STRING
- RVM_FUNCTION =
<<~MULTI_LINE_STRING # Load RVM into a shell session *as a function* if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then # First try to load from a user install source "$HOME/.rvm/scripts/rvm" elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then # Then try to load from a root install source "/usr/local/rvm/scripts/rvm" fi MULTI_LINE_STRING
Class Method Summary collapse
- .app(app_name) ⇒ Object
- .custom_shell(custom_shell_name, namespace) ⇒ Object
- .custom_shell_gem(custom_shell_name, namespace) ⇒ Object
- .custom_widget(custom_widget_name, namespace) ⇒ Object
- .custom_widget_gem(custom_widget_name, namespace) ⇒ Object
Class Method Details
.app(app_name) ⇒ Object
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 |
# File 'lib/glimmer/scaffold.rb', line 135 def app(app_name) mkdir app_name cd app_name write '.gitignore', GITIGNORE write '.ruby-version', RUBY_VERSION write '.ruby-gemset', app_name write 'VERSION', '1.0.0' write 'LICENSE.txt', "Copyright (c) #{Time.now.year} #{app_name}" write 'Gemfile', GEMFILE_APP write 'Rakefile', RAKEFILE mkdir 'app' write "app/#{file_name(app_name)}.rb", app_main_file(app_name) mkdir 'app/models' mkdir 'app/views' custom_shell('AppView', current_dir_name) if OS.mac? mkdir_p 'package/macosx' icon_file = "package/macosx/#{human_name(app_name)}.icns" cp File.('../../../icons/scaffold_app.icns', __FILE__), icon_file puts "Created #{current_dir_name}/#{icon_file}" end mkdir 'bin' write "bin/#{file_name(app_name)}", app_bin_file(app_name) FileUtils.chmod 0755, "bin/#{app_name.underscore}" system "bash -c '#{RVM_FUNCTION}\n cd .\n bundle\n glimmer package\n'" system "open packages/bundles/#{human_name(app_name).gsub(' ', '\ ')}.app" # TODO generate rspec test suite end |
.custom_shell(custom_shell_name, namespace) ⇒ Object
164 165 166 167 168 169 170 |
# File 'lib/glimmer/scaffold.rb', line 164 def custom_shell(custom_shell_name, namespace) namespace ||= current_dir_name root_dir = File.exists?('app') ? 'app' : 'lib' parent_dir = "#{root_dir}/views/#{file_name(namespace)}" mkdir_p parent_dir unless File.exists?(parent_dir) write "#{parent_dir}/#{file_name(custom_shell_name)}.rb", custom_shell_file(custom_shell_name, namespace) end |
.custom_shell_gem(custom_shell_name, namespace) ⇒ Object
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
# File 'lib/glimmer/scaffold.rb', line 180 def custom_shell_gem(custom_shell_name, namespace) gem_name = "glimmer-cs-#{compact_name(custom_shell_name)}" gem_summary = "Glimmer Custom Widget - #{human_name(custom_shell_name)}" if namespace gem_name += "-#{compact_name(namespace)}" gem_summary += " (#{human_name(namespace)})" else namespace = 'glimmer' end system "jeweler --rspec --summary '#{gem_summary}' --description '#{gem_summary}' #{gem_name}" cd gem_name write '.gitignore', GITIGNORE write '.ruby-version', RUBY_VERSION write '.ruby-gemset', gem_name write 'VERSION', '1.0.0' write 'Gemfile', GEMFILE_GEM write 'Rakefile', gem_rakefile append "lib/#{gem_name}.rb", gem_main_file(custom_shell_name, namespace) mkdir 'lib/views' custom_shell(custom_shell_name, namespace) system "bash -c '#{RVM_FUNCTION}\n cd .\n bundle\n'" puts "Finished creating #{gem_name} Ruby gem." puts 'Edit Rakefile to configure gem details.' puts 'Run `rake` to execute specs.' puts 'Run `rake build` to build gem.' puts 'Run `rake release` to release into rubygems.org once ready.' end |
.custom_widget(custom_widget_name, namespace) ⇒ Object
172 173 174 175 176 177 178 |
# File 'lib/glimmer/scaffold.rb', line 172 def (, namespace) namespace ||= current_dir_name root_dir = File.exists?('app') ? 'app' : 'lib' parent_dir = "#{root_dir}/views/#{file_name(namespace)}" mkdir_p parent_dir unless File.exists?(parent_dir) write "#{parent_dir}/#{file_name()}.rb", (, namespace) end |
.custom_widget_gem(custom_widget_name, namespace) ⇒ Object
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 |
# File 'lib/glimmer/scaffold.rb', line 208 def (, namespace) gem_name = "glimmer-cw-#{compact_name()}" gem_summary = "Glimmer Custom Widget - #{human_name()}" if namespace gem_name += "-#{compact_name(namespace)}" gem_summary += " (#{human_name(namespace)})" else namespace = 'glimmer' end system "jeweler --rspec --summary '#{gem_summary}' --description '#{gem_summary}' #{gem_name}" cd gem_name write '.gitignore', GITIGNORE write '.ruby-version', RUBY_VERSION write '.ruby-gemset', gem_name write 'VERSION', '1.0.0' write 'Gemfile', GEMFILE_GEM write 'Rakefile', gem_rakefile write 'spec/spec_helper.rb', spec_helper_file append "lib/#{gem_name}.rb", gem_main_file(, namespace) mkdir 'lib/views' (, namespace) system "bash -c '#{RVM_FUNCTION}\n cd .\n bundle\n'" puts "Finished creating #{gem_name} Ruby gem." puts 'Edit Rakefile to configure gem details.' puts 'Run `rake` to execute specs.' puts 'Run `rake build` to build gem.' puts 'Run `rake release` to release into rubygems.org once ready.' end |