Hello community, here is the log from the commit of package rubygem-yast-rake for openSUSE:Factory checked in at 2015-05-07 08:27:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-yast-rake (Old) and /work/SRC/openSUSE:Factory/.rubygem-yast-rake.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "rubygem-yast-rake" Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-yast-rake/rubygem-yast-rake.changes 2015-03-29 20:17:24.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-yast-rake.new/rubygem-yast-rake.changes 2015-05-07 08:27:57.000000000 +0200 @@ -1,0 +2,26 @@ +Tue Apr 28 15:38:56 UTC 2015 - lslezak@suse.cz + +- use rubocop for checking the code style + +------------------------------------------------------------------- +Tue Apr 28 13:34:00 UTC 2015 - lslezak@suse.cz + +- optionally load the tasks from yast-rake-ci if it is installed +- 0.2.3 + +------------------------------------------------------------------- +Thu Apr 23 18:27:49 UTC 2015 - lslezak@suse.cz + +- allow to run the "check:spelling" task outside a Git checkout + (to use it in the Jenkins jobs during package build) +- colorize the misspelled words in the output (if the "rainbow" + gem is installed) +- use YAML config files +- 0.2.2 + +------------------------------------------------------------------- +Wed Apr 1 10:07:26 UTC 2015 - jreidinger@suse.com + +- regenerate spec file to fix build for ruby2.2 in OBS + +------------------------------------------------------------------- Old: ---- yast-rake-0.2.1.gem New: ---- yast-rake-0.2.3.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-yast-rake.spec ++++++ --- /var/tmp/diff_new_pack.4wLd1g/_old 2015-05-07 08:27:57.000000000 +0200 +++ /var/tmp/diff_new_pack.4wLd1g/_new 2015-05-07 08:27:57.000000000 +0200 @@ -17,14 +17,15 @@ Name: rubygem-yast-rake -Version: 0.2.1 +Version: 0.2.3 Release: 0 %define mod_name yast-rake %define mod_full_name %{mod_name}-%{version} - BuildRoot: %{_tmppath}/%{name}-%{version}-build -BuildRequires: ruby-macros >= 1 -Url: http://github.org/yast/yast-rake +BuildRequires: %{rubygem gem2rpm} +BuildRequires: %{ruby} +BuildRequires: ruby-macros >= 5 +Url: http://github.org/openSUSE/yast-rake Source: http://rubygems.org/gems/%{mod_full_name}.gem Summary: Rake tasks providing basic work-flow for Yast development License: LGPL-2.1 @@ -35,34 +36,15 @@ send it to build service, create submit request to target repo or run client from git repo. -%package doc -Summary: RDoc documentation for %{mod_name} -Group: Development/Languages/Ruby -Requires: %{name} = %{version} - -%description doc -Documentation generated at gem installation time. -Usually in RDoc and RI formats. - %prep -#gem_unpack -#if you need patches, apply them here and replace the # with a % sign in the surrounding lines -#gem_build %build %install -%gem_install -f +%gem_install \ + --doc-files="COPYING" \ + -f -%files -%defattr(-,root,root,-) -%{_libdir}/ruby/gems/%{rb_ver}/cache/%{mod_full_name}.gem -%{_libdir}/ruby/gems/%{rb_ver}/gems/%{mod_full_name}/ -%{_libdir}/ruby/gems/%{rb_ver}/specifications/%{mod_full_name}.gemspec -%doc %{_libdir}/ruby/gems/%{rb_ver}/gems/%{mod_full_name}/COPYING - -%files doc -%defattr(-,root,root,-) -%doc %{_libdir}/ruby/gems/%{rb_ver}/doc/%{mod_full_name}/ +%gem_packages %changelog ++++++ yast-rake-0.2.1.gem -> yast-rake-0.2.3.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/VERSION new/VERSION --- old/VERSION 2015-03-26 15:21:23.000000000 +0100 +++ new/VERSION 2015-04-29 10:53:52.000000000 +0200 @@ -1 +1 @@ -0.2.1 +0.2.3 Files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tasks/install.rake new/lib/tasks/install.rake --- old/lib/tasks/install.rake 2015-03-26 15:21:23.000000000 +0100 +++ new/lib/tasks/install.rake 2015-04-29 10:53:52.000000000 +0200 @@ -23,15 +23,14 @@ class Configuration attr_writer :install_locations - DESTDIR = ENV['DESTDIR'] || '/' - YAST_DIR = DESTDIR + '/usr/share/YaST2/' - YAST_LIB_DIR = DESTDIR + '/usr/lib/YaST2/' - YAST_DESKTOP_DIR = DESTDIR + '/usr/share/applications/YaST2/' - AUTOYAST_RNC_DIR = YAST_DIR + 'schema/autoyast/rnc/' - FILLUP_DIR = DESTDIR + '/var/adm/fillup-templates/' + DESTDIR = ENV["DESTDIR"] || "/" + YAST_DIR = DESTDIR + "/usr/share/YaST2/" + YAST_LIB_DIR = DESTDIR + "/usr/lib/YaST2/" + YAST_DESKTOP_DIR = DESTDIR + "/usr/share/applications/YaST2/" + AUTOYAST_RNC_DIR = YAST_DIR + "schema/autoyast/rnc/" + FILLUP_DIR = DESTDIR + "/var/adm/fillup-templates/" - - #specific directory that contain dynamic part of package name + # specific directory that contain dynamic part of package name def install_doc_dir DESTDIR + "/usr/share/doc/packages/#{package_name}/" end @@ -52,7 +51,7 @@ "**/src/autoyast[_-]rnc/*" => AUTOYAST_RNC_DIR, "**/src/fillup/*" => FILLUP_DIR, "**/src/desktop/*.desktop" => YAST_DESKTOP_DIR, - "{README*,COPYING,CONTRIBUTING.md}" => install_doc_dir, + "{README*,COPYING,CONTRIBUTING.md}" => install_doc_dir } end end @@ -62,7 +61,7 @@ task :install do config = ::Packaging::Configuration.instance config.install_locations.each_pair do |glob, install_to| - FileUtils.mkdir_p(install_to, :verbose => true) unless File.directory?(install_to) + FileUtils.mkdir_p(install_to, verbose: true) unless File.directory?(install_to) Dir[glob].each do |source| begin # do not use FileUtils.cp_r as it have different behavior if target diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tasks/pot.rake new/lib/tasks/pot.rake --- old/lib/tasks/pot.rake 2015-03-26 15:21:23.000000000 +0100 +++ new/lib/tasks/pot.rake 2015-04-29 10:53:52.000000000 +0200 @@ -52,14 +52,14 @@ desc "Check translatable strings for common mistakes" # depends on the global "pot" task defined above - task :pot => :"rake:pot" do + task pot: :"rake:pot" do Dir["*.pot"].each do |pot| puts "Checking #{pot}..." lines = File.readlines(pot) # remove comments - lines.reject!{ |line| line.match(/^#/) } + lines.reject! { |line| line.match(/^#/) } # Ruby substitution present? - lines.select!{ |line| line.include?('#{') } + lines.select! { |line| line.include?("\#{") } clean_pot_lines(lines) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tasks/run.rake new/lib/tasks/run.rake --- old/lib/tasks/run.rake 2015-03-26 15:21:23.000000000 +0100 +++ new/lib/tasks/run.rake 2015-04-29 10:53:52.000000000 +0200 @@ -21,8 +21,8 @@ end desc "Run given client" -task :run, :client do |t, args| - args.with_defaults = { :client => nil } +task :run, :client do |_t, args| + args.with_defaults = { client: nil } client = args[:client] if client client = Dir["**/src/clients/#{client}.rb"].first diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tasks/spell.dict new/lib/tasks/spell.dict --- old/lib/tasks/spell.dict 2015-03-26 15:21:23.000000000 +0100 +++ new/lib/tasks/spell.dict 1970-01-01 01:00:00.000000000 +0100 @@ -1,43 +0,0 @@ -# This is the global custom dictionary shared with all YaST repositories. -# -# Write the words in alphabetical order, one word per line. -# If an unknown word is not generic put it into the repository specific dictionary. -# -API -bnc -boolean -Bugzilla -devel -DHCP -freenode -gh -GitHub -GitHub's -html -IRC -LDAP -md -NCurses -NFS -NIS -openSUSE -osc -Rakefile -rb -refactorings -RSpec -runlevel -SCR -SLP -sudo -SUSE -systemd -testsuite -UI -WFM -workflow -yast -YaST -ycp -YCP -zypper diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tasks/spell.yml new/lib/tasks/spell.yml --- old/lib/tasks/spell.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/tasks/spell.yml 2015-04-29 10:53:52.000000000 +0200 @@ -0,0 +1,50 @@ +# This is the global spellcheck config shared by all YaST repositories. + +--- +check: + - "**/*.html" + - "**/*.md" +ignore: [] +dictionary: + # + # Notes: Write the words in alphabetical order, if an unknown word + # is not generic put it into the repository specific dictionary. + # + - API + - bnc + - boolean + - Bugzilla + - devel + - DHCP + - freenode + - gh + - GitHub + - GitHub's + - html + - IRC + - LDAP + - md + - NCurses + - NFS + - NIS + - openSUSE + - osc + - Rakefile + - rb + - refactorings + - RSpec + - runlevel + - SCR + - SLP + - sudo + - SUSE + - systemd + - testsuite + - UI + - WFM + - workflow + - yast + - YaST + - ycp + - YCP + - zypper diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tasks/spellcheck.rake new/lib/tasks/spellcheck.rake --- old/lib/tasks/spellcheck.rake 2015-03-26 15:21:23.000000000 +0100 +++ new/lib/tasks/spellcheck.rake 2015-04-29 10:53:52.000000000 +0200 @@ -28,97 +28,5 @@ # The lines starting with '#' character are ignored (used for comments), # -GLOBAL_DICTIONARY_FILE = "spell.dict" -CUSTOM_DICTIONARY_FILE = ".spell.dict" - -def read_dictionary_file(file) - puts "Loading custom dictionary (#{file})..." if verbose == true - words = File.read(file).split("\n") - - # remove comments - words.reject! { |word| word.start_with?("#")} - words.each(&:chomp!) -end - -# read the global and the repository custom dictionary -def read_custom_words - # read the global default custom dictionary - dict_path = File.expand_path("../#{GLOBAL_DICTIONARY_FILE}", __FILE__) - custom_words = read_dictionary_file(dict_path) - - # read the custom dictionary from the project directory if present - dict_path = CUSTOM_DICTIONARY_FILE - if File.exist?(dict_path) - local_dict = read_dictionary_file(dict_path) - duplicates = custom_words & local_dict - - if !duplicates.empty? - $stderr.puts "Warning: Found duplicates in the local dictionary (#{dict_path}):\n" - duplicates.each {|duplicate| $stderr.puts " #{duplicate}" } - $stderr.puts - end - - custom_words += local_dict - duplicates - end - - custom_words -end - -def aspell_speller - # raspell is an optional dependency, handle the missing case nicely - begin - require "raspell" - rescue LoadError - $stderr.puts "ERROR: Ruby gem \"raspell\" is not installed." - exit 1 - end - - # initialize aspell - speller = Aspell.new("en_US") - speller.suggestion_mode = Aspell::NORMAL - # ignore the HTML tags in the text - speller.set_option("mode", "html") - - speller -end - -namespace :check do - desc "Run spell checker (by default for *.md and *.html files in Git)" - task :spelling, :regexp do |t, args| - regexp = args[:regexp] || /\.(md|html)\z/ - success = true - - files = `git ls-files . | grep -v \\.gitignore`.split("\n") - files.select!{|file| file.match(regexp)} - - custom_words = read_custom_words - speller = aspell_speller - - files.each do |file| - puts "Checking #{file}..." if verbose == true - # spell check each line separately so we can report error locations properly - lines = File.read(file).split("\n") - - lines.each_with_index do |text, index| - misspelled = speller.list_misspelled([text]) - custom_words - - if !misspelled.empty? - success = false - puts "#{file}:#{index + 1}: #{text.inspect}" - misspelled.each do |word| - puts " #{word.inspect} => #{speller.suggest(word)}" - end - puts - end - end - end - - if success - puts "Spelling OK." - else - $stderr.puts "Spellcheck failed! (Fix it or add the words to " \ - "'#{CUSTOM_DICTIONARY_FILE}' file if it is OK.)" - exit 1 - end - end -end +require_relative "spellcheck_task" +Yast::SpellcheckTask.new diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/tasks/spellcheck_task.rb new/lib/tasks/spellcheck_task.rb --- old/lib/tasks/spellcheck_task.rb 1970-01-01 01:00:00.000000000 +0100 +++ new/lib/tasks/spellcheck_task.rb 2015-04-29 10:53:52.000000000 +0200 @@ -0,0 +1,168 @@ +#-- +# Yast rake +# +# Copyright (C) 2015 Novell, Inc. +# This library is free software; you can redistribute it and/or modify +# it only under the terms of version 2.1 of the GNU Lesser General Public +# License as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +#++ +# +# Rake task for checking spelling in the documentation files. +# By default checks all *.md and *.html files. +# +# Supports custom dictionaries: +# +# - global dictionary located in the tasks gem (lib/tasks/spell.yml) +# - repository specific dictionary (.spell.yml in the root directory) +# +# The custom dictionaries are defined at the "dictionary" key. +# + +require "rake" +require "rake/tasklib" + +module Yast + # Defines a spellcheck rake task + class SpellcheckTask < Rake::TaskLib + GLOBAL_SPELL_CONFIG_FILE = File.expand_path("../spell.yml", __FILE__) + CUSTOM_SPELL_CONFIG_FILE = ".spell.yml" + + # define the Rake task in the constructor + def initialize + namespace :check do + desc "Run spell checker (by default for *.md and *.html files)" + task :spelling do + run_task + end + end + end + + private + + # optionally colorize the misspelled words if the rainbow gem is present + # @return [Boolean] true when the colorization support is present + def colorize? + return @colorize unless @colorize.nil? + + begin + require "rainbow" + @colorize = true + rescue LoadError + @colorize = false + end + end + + # create an Aspell speller object + # @return [Aspell] the speller object + def speller + return @speller if @speller + # raspell is an optional dependency, handle the missing case nicely + begin + require "raspell" + rescue LoadError + $stderr.puts "ERROR: Ruby gem \"raspell\" is not installed." + exit 1 + end + + # initialize aspell + @speller = Aspell.new("en_US") + @speller.suggestion_mode = Aspell::NORMAL + # ignore the HTML tags in the text + @speller.set_option("mode", "html") + + @speller + end + + # evaluate the files to check + # @return [Array<String>] list of files + def files_to_check + files = config["check"].reduce([]) { |a, e| a + Dir[e] } + config["ignore"].reduce(files) { |a, e| a - Dir[e] } + end + + # read a Yaml config file + def read_spell_config(file) + return {} unless File.exist?(file) + + puts "Loading config file (#{file})..." if verbose == true + require "yaml" + YAML.load_file(file) + end + + # print the duplicate dictionary entries + # @param dict1 [Array<String>] the first dictionary + # @param dict2 [Array<String>] the second dictionary + def report_duplicates(dict1, dict2) + duplicates = dict1 & dict2 + return if duplicates.empty? + + $stderr.puts "Warning: Found dictionary duplicates in the local dictionary " \ + "(#{CUSTOM_SPELL_CONFIG_FILE}):\n" + duplicates.each { |duplicate| $stderr.puts " #{duplicate}" } + $stderr.puts + end + + # return the merged global and the custom spell configs + # @return [Hash] the merged configuration to use + def config + return @config if @config + + @config = read_spell_config(GLOBAL_SPELL_CONFIG_FILE) + custom_config = read_spell_config(CUSTOM_SPELL_CONFIG_FILE) + + report_duplicates(config["dictionary"], custom_config["dictionary"].to_a) + + custom_config["dictionary"] = @config["dictionary"] + custom_config["dictionary"].to_a + custom_config["dictionary"].uniq! + + # override the global values by the local if present + @config.merge!(custom_config) + + @config + end + + # check the file using the spellchecker + # @param file [String] file name + # @return [Boolean] true on success (no spelling error found) + def check_file(file) + puts "Checking #{file}..." if verbose == true + # spell check each line separately so we can report error locations properly + lines = File.read(file).split("\n") + + success = true + lines.each_with_index do |text, index| + misspelled = speller.list_misspelled([text]) - config["dictionary"] + next if misspelled.empty? + + success = false + misspelled.each { |word| text.gsub!(word, Rainbow(word).red) } if colorize? + puts "#{file}:#{index + 1}: \"#{text}\"" + + misspelled.each { |word| puts " #{word.inspect} => #{speller.suggest(word)}" } + puts + end + + success + end + + # run the task + def run_task + if files_to_check.all? { |file| check_file(file) } + puts "Spelling OK." + else + $stderr.puts "Spellcheck failed! (Fix it or add the words to " \ + "'#{CUSTOM_SPELL_CONFIG_FILE}' file if it is OK.)" + exit 1 + end + end + end +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/yast/rake.rb new/lib/yast/rake.rb --- old/lib/yast/rake.rb 2015-03-26 15:21:23.000000000 +0100 +++ new/lib/yast/rake.rb 2015-04-29 10:53:52.000000000 +0200 @@ -17,11 +17,12 @@ #++ require "packaging" -#create wrapper to Packaging Configuration +# create wrapper to Packaging Configuration module Yast + # Yast::Task module contains helper methods module Tasks - def self.configuration &block - ::Packaging.configuration &block + def self.configuration(&block) + ::Packaging.configuration(&block) end # read the version from spec file @@ -45,7 +46,7 @@ Yast::Tasks.configuration do |conf| conf.obs_project = "YaST:Head" conf.obs_sr_project = "openSUSE:Factory" - conf.package_name = File.read("RPMNAME").strip if File.exists?("RPMNAME") + conf.package_name = File.read("RPMNAME").strip if File.exist?("RPMNAME") conf.version = Yast::Tasks.spec_version if !Dir.glob("package/*.spec").empty? conf.skip_license_check << /spell.dict$/ # skip license check for spelling dictionaries end @@ -56,3 +57,9 @@ load f end +# optionally load the tasks from yast-rake-ci if it is installed +begin + require "yast/rake_ci" +rescue LoadError + puts "INFO: Gem yast-rake-ci not installed, extra tasks not loaded" if verbose == true +end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2015-03-26 15:21:23.000000000 +0100 +++ new/metadata 2015-04-29 10:55:55.000000000 +0200 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: yast-rake version: !ruby/object:Gem::Version - version: 0.2.1 + version: 0.2.3 platform: ruby authors: - Josef Reidinger autorequire: bindir: bin cert_chain: [] -date: 2015-03-26 00:00:00.000000000 Z +date: 2015-04-29 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: rake @@ -52,8 +52,9 @@ - lib/tasks/install.rake - lib/tasks/pot.rake - lib/tasks/run.rake -- lib/tasks/spell.dict +- lib/tasks/spell.yml - lib/tasks/spellcheck.rake +- lib/tasks/spellcheck_task.rb - lib/tasks/test_unit.rake - lib/tasks/version.rake - lib/yast/rake.rb