lib/apps/svn.rb in dev-2.1.153 vs lib/apps/svn.rb in dev-2.1.154

- old
+ new

@@ -1,152 +1,146 @@ -require 'fileutils' -require 'tmpdir' -require_relative('../base/dir.rb') +# frozen_string_literal: true + +require "fileutils" +require "tmpdir" +require_relative("../base/dir") + class Svn + def self.latest_revision + if Dir.exist?(".svn") + `svn update` + `svn info`.scan(/Last Changed Rev: (\d+)/).each do |m| + return m.first.to_s + end + end + "0" + end - def self.latest_revision - if(Dir.exists?(".svn")) - `svn update` - `svn info`.scan(/Last Changed Rev: ([\d]+)/).each{|m| - return m.first.to_s - } - end - "0" - end + def self.url + if Dir.exist?(".svn") + `svn info`.scan(%r{URL: ([:/.\-\d\w]+)}).each do |m| + return m.first.to_s + end + end + "" + end - def self.url - if(Dir.exists?(".svn")) - `svn info`.scan(/URL: ([:\/\.\-\d\w]+)/).each{|m| - return m.first.to_s - } - end - '' - end + def self.export(url, destination) + `svn export #{url} #{destination}` unless File.exist?(destination.chomp("@")) + end - def self.export url, destination - if(!File.exists?(destination.chomp('@'))) - `svn export #{url} #{destination}` - end - end + def self.has_changes?(directory = "") + directory = Dir.pwd if directory.length.zero? + Dir.chdir(directory) do + return true if File.exist?(".svn") && `svn status`.scan(/^[MA]/).length.positive? + end + false + end - def self.has_changes? directory='' - directory=Dir.pwd if directory.length==0 - Dir.chdir(directory) do - if(File.exists?('.svn')) - return true if `svn status`.scan(/^[MA]/).length>0 - end - end - false + def self.add(source, directory = "") + directory = Dir.pwd if directory.empty? + Dir.chdir(directory) do + source.each do |f| + puts `svn add #{f} --parents` if `svn status #{f}`.include?("?") + puts `svn add #{f} --parents` unless system("svn status #{f}") + end end + end - def self.add source, directory='' - directory=Dir.pwd if directory.length < 1 - Dir.chdir(directory) do - source.each{|f| - puts `svn add #{f} --parents` if `svn status #{f}`.include?('?') - puts `svn add #{f} --parents` if !system("svn status #{f}") - } - end + def self.append_commit_message(_message, directory = "") + directory = Dir.pwd if directory.empty? + Dir.chdir(directory) do end + end - def self.append_commit_message message,directory='' - directory=Dir.pwd if directory.length < 1 - Dir.chdir(directory) do - - end + def self.commit(_message, directory = "") + directory = Dir.pwd if directory.empty? + Dir.chdir(directory) do + # svn commit -F commit_message_filename + puts `svn commit -m"commit all"` + `svn update` end + end - def self.commit message, directory='' - directory=Dir.pwd if directory.length < 1 - Dir.chdir(directory) do - # svn commit -F commit_message_filename - puts `svn commit -m"commit all"` - `svn update` - end + # publish a directory to a new subversion path + # source_dir is the directory with the files to be published + # destination is the new subversion path URL + # source_glob is a string or array of glob directives to specify files in source_dir to be publish + # source_glob defaults to '**/*' to publish all files in the source_dir + def self.publish(destination, source_dir, source_filelist = FileList.new("**/*")) + # Support for legacy argument order + if source_dir.include?("svn:") || source_dir.include?("http:") || source_dir.include?("https:") + puts "warning arguments are in legacy order" if Environment.default.debug? + # swap arguments + tmp = source_dir + source_dir = destination + destination = tmp end - # publish a directory to a new subversion path - # source_dir is the directory with the files to be published - # destination is the new subversion path URL - # source_glob is a string or array of glob directives to specify files in source_dir to be publish - # source_glob defaults to '**/*' to publish all files in the source_dir - def self.publish destination, source_dir, source_filelist=FileList.new('**/*') + unless source_filelist.is_a?(FileList) + puts "converting files array into FileList" if Environment.default.debug? + list = FileList.new + source_filelist.each { |item| list.include(item) } + source_fileList = list + end - # Support for legacy argument order - if(source_dir.include?('svn:') || source_dir.include?('http:') || source_dir.include?('https:')) - puts 'warning arguments are in legacy order' if Environment.default.debug? - # swap arguments - tmp=source_dir - source_dir=destination - destination=tmp - end + output = "\n" + if `svn info #{destination} 2>&1`.include?("Revision:") + puts "Svn.publish: destination #{destination} already exists" + else + # create subversion directory + output += "svn mkdir #{destination} --parents --message mkdir_for_publishing" + unless `svn mkdir #{destination} --parents --message mkdir_for_publishing`.include?("Committed") + raise "failure 'svn mkdir #{destination} --parents --message mkdir_for_publishing'" + end - if(!source_filelist.kind_of?(FileList)) - puts 'converting files array into FileList' if Environment.default.debug? - list=FileList.new - source_filelist.each{|item|list.include(item)} - source_fileList=list - end + Dir.chdir(source_dir) do + files = source_filelist.to_a + end + files = source_filelist + output = "#{output}\nfiles: " + files.each do |f| + output = "#{output}#{f} " + end + pwd = Dir.pwd - output = "\n" - if(`svn info #{destination} 2>&1`.include?('Revision:')) - puts "Svn.publish: destination #{destination} already exists" - else - # create subversion directory - output = output + "svn mkdir #{destination} --parents --message mkdir_for_publishing" - if(!`svn mkdir #{destination} --parents --message mkdir_for_publishing`.include?('Committed')) - raise "failure 'svn mkdir #{destination} --parents --message mkdir_for_publishing'" - end + dir = "#{Environment.default.tmp_dir}/svn_publish" + Dir.remove dir if File.exist? dir + FileUtils.mkdir dir + Dir.chdir(dir) do + # Dir.mktmpdir{|dir| - Dir.chdir(source_dir) do - files = source_filelist.to_a - end - files=source_filelist - output = output + "\nfiles: " - files.each{|f| - output = output + f + " " - } - pwd=Dir.pwd + # checkout new subversion directory + output += "\nsvn checkout #{destination} #{dir}/to_publish_checkout" + unless `svn checkout #{destination} #{dir}/to_publish_checkout`.include?("Checked out") + raise "failure 'svn checkout #{destination} #{dir}/to_publish_checkout'" + end - dir="#{Environment.default.tmp_dir}/svn_publish" - Dir.remove dir if File.exists? dir - FileUtils.mkdir dir - Dir.chdir(dir) do - #Dir.mktmpdir{|dir| + # copy files into the checkout out subversion directory to_publish + raise "#{dir}/to_publish_checkout does not exist" unless File.exist?("#{dir}/to_publish_checkout") - # checkout new subversion directory - output = output + "\nsvn checkout #{destination} #{dir}/to_publish_checkout" - if(!`svn checkout #{destination} #{dir}/to_publish_checkout`.include?('Checked out')) - raise "failure 'svn checkout #{destination} #{dir}/to_publish_checkout'" - end + Dir.chdir("#{dir}/to_publish_checkout") do + File.open("add.txt", "w") do |add_file| + files.each do |f| + fdir = File.dirname(f) + FileUtils.mkdir_p(fdir) if fdir.length.positive? && !File.exist?(fdir) + FileUtils.cp("#{source_dir}/#{f}", f.to_s) + add_file.puts f + end + add_file.close + end - # copy files into the checkout out subversion directory to_publish - raise "#{dir}/to_publish_checkout does not exist" if(!File.exists?("#{dir}/to_publish_checkout")) - Dir.chdir("#{dir}/to_publish_checkout") do - File.open('add.txt','w'){|add_file| + output = "#{output}\nsvn add --parents --targets add.txt 2>&1" + `svn add --parents --targets add.txt 2>&1` + commit_output = `svn commit -m"add" 2>&1` + output += "\n#{commit_output}" + raise "failure 'svn commit -m'added files''#{output}" unless commit_output.include?("Committed") + end - files.each{|f| - fdir=File.dirname(f) - FileUtils.mkdir_p(fdir) if(fdir.length > 0 && !File.exists?(fdir)) - FileUtils.cp("#{source_dir}/#{f}","#{f}") - add_file.puts f - } - add_file.close - } - - output = output + "\nsvn add --parents --targets add.txt 2>&1" - `svn add --parents --targets add.txt 2>&1` - commit_output = `svn commit -m"add" 2>&1` - output = output + "\n#{commit_output}" - if(!commit_output.include?("Committed")) - raise "failure 'svn commit -m'added files''" + output - end - end - - #begin - #Dir.remove "#{dir}/to_publish_checkout" - output - end - Dir.remove(dir) - end - end -end \ No newline at end of file + # begin + # Dir.remove "#{dir}/to_publish_checkout" + output + end + Dir.remove(dir) + end + end +end