Rakefile in openstudio-extension-0.1.2 vs Rakefile in openstudio-extension-0.1.3

- old
+ new

@@ -1,119 +1,119 @@ -######################################################################################################################## -# openstudio(R), Copyright (c) 2008-2019, Alliance for Sustainable Energy, LLC. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the -# following conditions are met: -# -# (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following -# disclaimer. -# -# (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the -# following disclaimer in the documentation and/or other materials provided with the distribution. -# -# (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote -# products derived from this software without specific prior written permission from the respective party. -# -# (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative -# works may not use the "openstudio" trademark, "OS", "os", or any other confusingly similar designation without -# specific prior written permission from Alliance for Sustainable Energy, LLC. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -######################################################################################################################## - -require 'bundler/gem_tasks' -require 'rspec/core/rake_task' - -RSpec::Core::RakeTask.new(:spec) - -require 'openstudio/extension/rake_task' -require 'openstudio/extension' -rake_task = OpenStudio::Extension::RakeTask.new -rake_task.set_extension_class(OpenStudio::Extension::Extension) - -require 'rubocop/rake_task' -RuboCop::RakeTask.new - -task default: :spec - -desc 'Initialize a new gem' -task :init_new_gem do - puts 'Initializing a new extension gem' - print "\n Enter the name of the new gem directory (ex: openstudio-something-gem. Should end with '-gem'): " - gem_name = STDIN.gets.chomp - - print "\n Enter the path (full or relative to this repo) where you want the new gem directory to be created: " - dir_path = STDIN.gets.chomp - - # check if directory already exists at path, if so error - full_dir_name = dir_path + gem_name - - if Dir.exist?(full_dir_name) - puts "ERROR: there is already a directory at path #{full_dir_name}... aborting" - else - puts "CREATING dir #{full_dir_name}" - Dir.mkdir full_dir_name - end - - # copy file structure - FileUtils.cp('.gitignore', full_dir_name + '/.gitignore') - FileUtils.cp_r(File.join(File.dirname(__FILE__), 'init_templates/template_gemfile.txt'), File.join(full_dir_name, 'Gemfile')) - FileUtils.cp_r(File.join(File.dirname(__FILE__), 'doc_templates'), full_dir_name) - - Dir.mkdir File.join(full_dir_name, 'lib') - Dir.mkdir File.join(full_dir_name, 'lib/measures') - Dir.mkdir File.join(full_dir_name, 'lib/files') - - # Replacement tokens - gem_name_bare = gem_name.gsub('-gem', '') - gem_name_underscores_no_os = gem_name_bare.gsub('openstudio-', '').gsub('openstudio', '').tr('-', '_').tr(' ', '_') - gem_name_spaces = gem_name.split('-').map(&:capitalize).join(' ') - gem_class_name = gem_name_underscores_no_os.split('_').collect(&:capitalize).join - - # Rewrite the rakefile template - text = File.read(File.join(File.dirname(__FILE__), 'init_templates/template_rakefile.txt')) - new_contents = text.gsub(/GEM_CLASS_NAME/, gem_class_name) - new_contents = new_contents.gsub(/GEM_NAME_UNDERSCORES/, gem_name_underscores_no_os) - File.open(File.join(full_dir_name, '/Rakefile'), 'w') { |file| file.puts new_contents } - - # Rewrite README with gem-specific tokens and save - text = File.read(File.join(File.dirname(__FILE__), 'init_templates/README.md')) - new_contents = text.gsub(/GEM_NAME_SPACES/, gem_name_spaces) - new_contents = new_contents.gsub(/GEM_NAME_BARE/, gem_name_bare) - File.open(File.join(full_dir_name, '/README.md'), 'w') { |file| file.puts new_contents } - - # Rewrite gemspec - text = File.read(File.join(File.dirname(__FILE__), 'init_templates/gemspec.txt')) - new_contents = text.gsub(/GEM_NAME_UNDERSCORES/, gem_name_underscores_no_os) - new_contents = new_contents.gsub(/GEM_NAME_BARE/, gem_name_bare) - new_contents = new_contents.gsub(/GEM_CLASS_NAME/, gem_class_name) - File.open(File.join(full_dir_name, "#{gem_name_bare}.gemspec"), 'w') { |file| file.puts new_contents } - - # Rewrite spec and spec_helper with gem-specific tokens and save - Dir.mkdir File.join(full_dir_name, 'spec') - Dir.mkdir File.join(full_dir_name, 'spec/tests') - text = File.read(File.join(File.dirname(__FILE__), 'init_templates/spec.rb')) - new_contents = text.gsub(/GEM_CLASS_NAME/, gem_class_name) - File.open(File.join(full_dir_name, 'spec', 'tests', "#{gem_name_underscores_no_os}_spec.rb"), 'w') { |file| file.puts new_contents } - - text = File.read(File.join(File.dirname(__FILE__), 'init_templates/spec_helper.rb')) - new_contents = text.gsub(/GEM_NAME_UNDERSCORES/, gem_name_underscores_no_os) - File.open(File.join(full_dir_name, 'spec', 'spec_helper.rb'), 'w') { |file| file.puts new_contents } - - # Stub out OpenStudio directory - Dir.mkdir File.join(full_dir_name, 'lib/openstudio') - Dir.mkdir File.join(full_dir_name, 'lib/openstudio', gem_name_underscores_no_os) - text = File.read(File.join(File.dirname(__FILE__), 'init_templates/version.rb')) - new_contents = text.gsub(/GEM_CLASS_NAME/, gem_class_name) - File.open(File.join(full_dir_name, 'lib', 'openstudio', gem_name_underscores_no_os, 'version.rb'), 'w') { |file| file.puts new_contents } - - text = File.read(File.join(File.dirname(__FILE__), 'init_templates/openstudio_module.rb')) - new_contents = text.gsub(/GEM_CLASS_NAME/, gem_class_name) - new_contents = new_contents.gsub(/GEM_NAME_UNDERSCORES/, gem_name_underscores_no_os) - File.open(File.join(full_dir_name, 'lib', 'openstudio', "#{gem_name_underscores_no_os}.rb"), 'w') { |file| file.puts new_contents } -end +######################################################################################################################## +# openstudio(R), Copyright (c) 2008-2019, Alliance for Sustainable Energy, LLC. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the +# following conditions are met: +# +# (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following +# disclaimer. +# +# (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the +# following disclaimer in the documentation and/or other materials provided with the distribution. +# +# (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote +# products derived from this software without specific prior written permission from the respective party. +# +# (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative +# works may not use the "openstudio" trademark, "OS", "os", or any other confusingly similar designation without +# specific prior written permission from Alliance for Sustainable Energy, LLC. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +######################################################################################################################## + +require 'bundler/gem_tasks' +require 'rspec/core/rake_task' + +RSpec::Core::RakeTask.new(:spec) + +require 'openstudio/extension/rake_task' +require 'openstudio/extension' +rake_task = OpenStudio::Extension::RakeTask.new +rake_task.set_extension_class(OpenStudio::Extension::Extension) + +require 'rubocop/rake_task' +RuboCop::RakeTask.new + +task default: :spec + +desc 'Initialize a new gem' +task :init_new_gem do + puts 'Initializing a new extension gem' + print "\n Enter the name of the new gem directory (ex: openstudio-something-gem. Should end with '-gem'): " + gem_name = STDIN.gets.chomp + + print "\n Enter the path (full or relative to this repo) where you want the new gem directory to be created: " + dir_path = STDIN.gets.chomp + + # check if directory already exists at path, if so error + full_dir_name = dir_path + gem_name + + if Dir.exist?(full_dir_name) + puts "ERROR: there is already a directory at path #{full_dir_name}... aborting" + else + puts "CREATING dir #{full_dir_name}" + Dir.mkdir full_dir_name + end + + # copy file structure + FileUtils.cp('.gitignore', full_dir_name + '/.gitignore') + FileUtils.cp_r(File.join(File.dirname(__FILE__), 'init_templates/template_gemfile.txt'), File.join(full_dir_name, 'Gemfile')) + FileUtils.cp_r(File.join(File.dirname(__FILE__), 'doc_templates'), full_dir_name) + + Dir.mkdir File.join(full_dir_name, 'lib') + Dir.mkdir File.join(full_dir_name, 'lib/measures') + Dir.mkdir File.join(full_dir_name, 'lib/files') + + # Replacement tokens + gem_name_bare = gem_name.gsub('-gem', '') + gem_name_underscores_no_os = gem_name_bare.gsub('openstudio-', '').gsub('openstudio', '').tr('-', '_').tr(' ', '_') + gem_name_spaces = gem_name.split('-').map(&:capitalize).join(' ') + gem_class_name = gem_name_underscores_no_os.split('_').collect(&:capitalize).join + + # Rewrite the rakefile template + text = File.read(File.join(File.dirname(__FILE__), 'init_templates/template_rakefile.txt')) + new_contents = text.gsub(/GEM_CLASS_NAME/, gem_class_name) + new_contents = new_contents.gsub(/GEM_NAME_UNDERSCORES/, gem_name_underscores_no_os) + File.open(File.join(full_dir_name, '/Rakefile'), 'w') { |file| file.puts new_contents } + + # Rewrite README with gem-specific tokens and save + text = File.read(File.join(File.dirname(__FILE__), 'init_templates/README.md')) + new_contents = text.gsub(/GEM_NAME_SPACES/, gem_name_spaces) + new_contents = new_contents.gsub(/GEM_NAME_BARE/, gem_name_bare) + File.open(File.join(full_dir_name, '/README.md'), 'w') { |file| file.puts new_contents } + + # Rewrite gemspec + text = File.read(File.join(File.dirname(__FILE__), 'init_templates/gemspec.txt')) + new_contents = text.gsub(/GEM_NAME_UNDERSCORES/, gem_name_underscores_no_os) + new_contents = new_contents.gsub(/GEM_NAME_BARE/, gem_name_bare) + new_contents = new_contents.gsub(/GEM_CLASS_NAME/, gem_class_name) + File.open(File.join(full_dir_name, "#{gem_name_bare}.gemspec"), 'w') { |file| file.puts new_contents } + + # Rewrite spec and spec_helper with gem-specific tokens and save + Dir.mkdir File.join(full_dir_name, 'spec') + Dir.mkdir File.join(full_dir_name, 'spec/tests') + text = File.read(File.join(File.dirname(__FILE__), 'init_templates/spec.rb')) + new_contents = text.gsub(/GEM_CLASS_NAME/, gem_class_name) + File.open(File.join(full_dir_name, 'spec', 'tests', "#{gem_name_underscores_no_os}_spec.rb"), 'w') { |file| file.puts new_contents } + + text = File.read(File.join(File.dirname(__FILE__), 'init_templates/spec_helper.rb')) + new_contents = text.gsub(/GEM_NAME_UNDERSCORES/, gem_name_underscores_no_os) + File.open(File.join(full_dir_name, 'spec', 'spec_helper.rb'), 'w') { |file| file.puts new_contents } + + # Stub out OpenStudio directory + Dir.mkdir File.join(full_dir_name, 'lib/openstudio') + Dir.mkdir File.join(full_dir_name, 'lib/openstudio', gem_name_underscores_no_os) + text = File.read(File.join(File.dirname(__FILE__), 'init_templates/version.rb')) + new_contents = text.gsub(/GEM_CLASS_NAME/, gem_class_name) + File.open(File.join(full_dir_name, 'lib', 'openstudio', gem_name_underscores_no_os, 'version.rb'), 'w') { |file| file.puts new_contents } + + text = File.read(File.join(File.dirname(__FILE__), 'init_templates/openstudio_module.rb')) + new_contents = text.gsub(/GEM_CLASS_NAME/, gem_class_name) + new_contents = new_contents.gsub(/GEM_NAME_UNDERSCORES/, gem_name_underscores_no_os) + File.open(File.join(full_dir_name, 'lib', 'openstudio', "#{gem_name_underscores_no_os}.rb"), 'w') { |file| file.puts new_contents } +end