# Basic apt-get like behaviour namespace :get do def get_preset name = ENV['PRESET'] ? ENV['PRESET'] : "console" set = ENV['SETTING'] ? ENV['SETTING'] : "console" preset = ENV['DYNAMIC'] ? Sixconfig.new : Sixconfig.find_by_name(name) ? Sixconfig.find_by_name(name) : Sixconfig.new(:name => name) if !preset.appsetting || ENV['SETTING'] preset.appsetting = if Appsetting.find_by_name(set) Appsetting.find_by_name(set) else Appsetting.new(:name => set) end preset.appsetting.save if preset.appsetting.changed? || preset.appsetting.new? #preset.save end preset end # Display the mods setup for the preset, local version, remote version, etc # List installed mods, local version, remote version, etc # You can first import task :list => :environment do preset = get_preset puts "#{preset.name} (#{preset.mods.size} mods)" preset.mods.each do |mod| depmods = mod.all_depmods puts "#{mod.name} (v#{mod.version_local}/#{mod.version}, #{mod.size}B, Last updated: #{mod.updated_version}), #{depmods.size} dependencies: #{depmods.map{|e| e.name}.join(", ")}" end end # Find selected available mods, and their dependencies task :query => :environment do mods = [] if ENV['MOD'] ENV['MOD'].split(",").each do |mod| mods << Mod.find_by_name(mod) end else mods = Mod.find(:all) end mods.each do |mod| depmods = mod.all_depmods puts "#{mod.name} (v#{mod.version}, #{mod.size}B, Last updated: #{mod.updated_version}), #{depmods.size} dependencies: #{depmods.map{|e| e.name}.join(", ")}" end end # Find selected available servers, and their dependencies task :query_server => :environment do servers = [] if ENV['SERVER'] ENV['SERVER'].split(",").each do |server| servers << Queryserver.find_by_name(server) end else servers = Queryserver.find(:all) end servers.each do |server| puts "#{server.name}: #{server.country} / #{server.ping}ms" server.mods.each do |mod| depmods = mod.all_depmods puts "#{mod.name} (v#{mod.version}, #{mod.size}B, Last updated: #{mod.updated_version}), #{depmods.size} dependencies: #{depmods.map{|e| e.name}.join(", ")}" end end end # Import the mods installed on system into the preset task :import => :environment do preset = get_preset preset.imp preset.mods.each do |mod| depmods = mod.all_depmods puts "#{mod.name} (v#{mod.version}, #{mod.size}B, Last updated: #{mod.updated_version}), #{depmods.size} dependencies: #{depmods.map{|e| e.name}.join(", ")}" end preset.save unless ENV['DYNAMIC'] end # Save yaml with selected mod including dependencies task :save => :environment do # Create dynamic preset preset = get_preset # Find specified mod(s) # Dependent mods are auto handled through Sixconfig instance method all_mods ENV['MOD'].split(",").each do |mod| m = Mod.find_by_name(mod) if m preset.mods << m unless preset.mods.include? m end end # Set mods skip status if FORCE parameter included preset.all_mods.each {|mod| mod.skip = false} if ENV['FORCE'] puts "Saving (incl dependencies): #{preset.all_mods.map {|e| "#{e.name} (#{e.size}B)"}.join(",")}" # Output the updater yaml preset.output_yml # Save the console preset preset.save unless ENV['DYNAMIC'] end # Upgrade the installed mods task :upgrade => :environment do # Select default preset or Create dynamic preset preset = get_preset # Set mods skip status if FORCE parameter included preset.all_mods.each {|mod| mod.skip = false} if ENV['FORCE'] puts "Upgrading (incl dependencies): #{preset.all_mods.map {|e| "#{e.name} (#{e.size}B)" }.join(",")}" # Output the updater yaml preset.output_yml(preset.appsetting) #, server # Run the config through the updater Sixconfig.start_updater("--update --wait") # Save the console preset preset.save unless ENV['DYNAMIC'] end # Install the selected mod including dependencies task :install => :environment do # Select default preset or Create dynamic preset preset = get_preset # Find specified mod(s) # Dependent mods are auto handled through Sixconfig instance method all_mods ENV['MOD'].split(",").each do |mod| preset.mods << Mod.find_by_name(mod) end # Set mods skip status if FORCE parameter included preset.all_mods.each {|mod| mod.skip = false} if ENV['FORCE'] puts "Installing (incl dependencies): #{preset.all_mods.map {|e| "#{e.name} (#{e.size}B)" }.join(",")}" # Output the updater yaml preset.output_yml(preset.appsetting) #, server # Run the config through the updater Sixconfig.start_updater("--install --wait") # Save the console preset preset.save unless ENV['DYNAMIC'] end # Update the list of mods/mirrors task :update => :environment do system_setting = SystemSetting.singleton puts system_setting.sync end # Update the list of servers task :update_servers => :environment do SixUpdaterWeb.update_gamespy end end