module PatternPark class RemoteFileTarget < FileTarget attr_accessor :url, :type, :sprout, :archive_type, :archive_path, :install_path, :project_path, :post_install, :mount_path attr_reader :downloaded_path, :file_name, :copy_path def resolve # already run once, don't run again in this session if(!file_name.nil?) return end @file_name = url.split('/').pop @downloaded_path = File.join(Sprout.cache, type, install_path, file_name) if(archive_type == 'txt' || archive_type == 'exe') @install_path = File.join(Sprout.cache, type, install_path) else @install_path = File.join(Sprout.cache, type, install_path, archive_type) end @copy_path = File.join(install_path, archive_path) if(url.nil? || url == '') return end loader = RemoteFileLoader.new if(Sprout.update || !File.exists?(downloaded_path)) # retrieve from the network loader.get_remote_file(url, downloaded_path) end if(Sprout.update || !File.exists?(install_path)) # unpack into install path loader.unpack_downloaded_file(downloaded_path, install_path) end end end end