Files
2025-09-29 00:52:08 +02:00

75 lines
1.9 KiB
Ruby
Executable File

require 'getoptlong'
require 'fileutils'
class Parameters
attr_reader :storeDir
def initialize
@storeDir = ""
@opts = GetoptLong.new(
[ '--storageDir', '-s', GetoptLong::REQUIRED_ARGUMENT ]
)
end
def PrintHelp()
puts "usage:"
puts "ruby artifactCollector.rb -s <storageDirectory>"
puts " This is the directory to write the artifacts out to"
end
def ParseArguments()
@opts.each do |opt, arg|
case opt
when '--help'
PrintHelp()
exit
when '--storageDir'
@storeDir = arg
end
end
end
end
def safecreatepath(path)
begin
FileUtils.mkdir_p(path) unless File.exists?(path)
rescue Exception =>e
puts e.message
end
end
# Parsing parameters
parameters = Parameters.new
parameters.ParseArguments()
if parameters.storeDir == ""
parameters.PrintHelp()
exit
end
# Setting up
RS_TOOLSROOT = ENV['RS_TOOLSROOT'].gsub(/\\/, "/")
PROTECTION_PATH = RS_TOOLSROOT + "/script/coding/protection"
GENERATED_PATH = PROTECTION_PATH + "/generated"
GENERATED_GLOB = GENERATED_PATH + "/*"
# Get the files that I generate
latestFile = Dir.glob(GENERATED_GLOB).max_by {|f| File.mtime(f)}
timestampRegex = Regexp.new('([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)')
matchData = timestampRegex.match(latestFile)
# Create our destination directory
destinationPath = parameters.storeDir + "/#{matchData[1]}"
safecreatepath(destinationPath)
globOfLatestFiles = GENERATED_PATH + "/*#{matchData[1]}*"
latestFiles = Dir.glob(globOfLatestFiles)
# Copy all the files that I care about.
latestFiles.each { |file|
begin
FileUtils.cp(file, destinationPath)
rescue Exception =>e
puts "FILECOPY/WARNING: " + e.message
end
}