Files
gtav-src/tools_ng/lib/pipeline/resourcing/converters/converter_generic_packets.rb
T
2025-09-29 00:52:08 +02:00

128 lines
3.7 KiB
Ruby
Executable File

#
# File:: %RS_TOOLSLIB%/pipeline/resourcing/converters/converter_generic_packets.rb
# Description:: XGE Generic Converter packet classes (based off converter_rage_packets)
#
# Author:: Luke Openshaw <luke.openshaw@rockstarnorth.com>
# Date:: 28 November 2011
#
#----------------------------------------------------------------------------
# Uses
#----------------------------------------------------------------------------
require 'pipeline/os/path'
#----------------------------------------------------------------------------
# Implementation
#----------------------------------------------------------------------------
module Pipeline
module Resourcing
module Converters
#
# == Description
# This class represents a data conversion packet list which is a
# collection of ruby script "packets" that are sent to XGE
# for processing.
#
class GenericPacketList
attr_reader :packets
# Constructor.
def initialize( xge_folder, class_name, static_func, packet_per_item = false, maxsize = 0 )
@xge_folder = xge_folder
@maxsize = maxsize
@class_name = class_name
@static_func = static_func
@packet_per_item = packet_per_item
@packets = []
end
# Create new ConversionPacket.
def create_packet( )
GenericPacket.new( OS::Path.combine( @xge_folder, "generic_packet#{@packets.size}.rb" ) )
end
# Add a target directory to the last ConversionPacket object.
def add_item( item )
# Create a new packet.
if ( @packets.empty? ) or ( packets.last.data_size >= @maxsize ) or ( @packet_per_item ) then
@packets << create_packet( )
end
@packets.last.add_item( item )
end
# Create the packet ruby scripts.
def create( )
c = Pipeline::Config::instance( )
OS::FileUtilsEx::delete_files( OS::Path::combine( @xge_folder, '*.rb' ) )
@packets.each do |packet|
File::open( packet.filename, "w" ) do |f|
#f.puts("require \"#{OS::Path::combine( c.toolslib, 'pipeline', 'config', 'globals')}\"" )
f.puts("require \"#{OS::Path::combine( c.toolslib, 'pipeline', 'config', 'projects')}\"" )
f.puts( "puts \"SETTING SKIP CHECK\"")
f.puts( "Pipeline::Globals::instance().skip_version_check = true" )
f.puts( "puts Pipeline::Globals::instance()")
f.puts( "require \"#{OS::Path::combine( c.toolslib, 'pipeline', 'resourcing', 'converters', 'converter_generic_includes' )}\"" )
packet.items.each do |item|
f.puts( "Pipeline::Resourcing::Converters::#{@class_name}.#{@static_func.to_s}( \"#{item.dir}\", #{item.file_list.inspect} )" )
end
end
end
end
end
#
# == Description
# This class represents a single data conversion packet. A list of these
# are contained in the GenericPacketList class.
#
#
class GenericPacket
attr_reader :items
attr_reader :data_size
attr_reader :filename
def initialize( filename )
@items = []
@data_size = 0
@filename = filename
FileUtils::mkdir_p( OS::Path::remove_filename( filename ) )
end
def add_item( item )
item.file_list.each do | file |
@data_size += File::size( file )
end
@items << item
end
end
#
# == Description
# Utility class to store a generic "item" to be processed
#
class GenericItem
attr_reader :dir
attr_reader :file_list
def initialize( dir )
@dir = dir
end
def set_files_from_dir( wildcard = "*.*" )
@file_list = OS::FindEx::find_files( OS::Path.combine( @dir, wildcard ) )
end
def set_files( files )
@file_list = files
end
end
end # Converters module
end # Resourcing module
end # Pipeline module
# %RS_TOOLSLIB%/pipeline/resourcing/converters/convert_generic_packets.rb