class Autoproj::CLI::MainSync
The 'jenkins' subcommand for autoproj
Public Instance Methods
add(name, uri)
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 58 def add(name, uri) if remote = config.find_remote_by_name(name) STDERR.puts "There is already a target called #{name} pointing to "\ "#{remote.uri}" exit 1 end remote = Sync::Remote.from_uri(URI.parse(uri), name: name) config.add_remote(remote) packages, = Autoproj.silent { ws_load } remote.start do |sftp| remote.update(sftp, ws, packages) end end
config()
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 22 def config unless @config @config = Sync::Config.new(ws) end @config end
disable(*names)
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 135 def disable(*names) names = ws.config.get('sync', Hash.new).keys if names.empty? names.each do |name| config.update_remote_config(name) do |config| config['enabled'] = false end end end
enable(*names)
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 117 def enable(*names) names = ws.config.get('sync', Hash.new).keys if names.empty? packages = nil names.each do |name| config.update_remote_config(name) do |remote_config| unless remote_config['enabled'] remote = config.remote_by_name(name) packages, = Autoproj.silent { ws_load } unless packages remote.start do |sftp| remote.update(sftp, ws, packages) end remote_config['enabled'] = true end end end end
exec(remote_name, *command)
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 172 def exec(remote_name, *command) remote = config.remote_by_name(remote_name) status = remote.start do |sftp| remote.remote_autoproj(sftp, ws.root_dir, "exec", *command, interactive: options[:interactive], chdir: options[:chdir] || ws.root_dir) end unless options[:interactive] if status[:exit_signal] exit 255 else exit status[:exit_code] end end end
install_osdeps(manager_type, *packages)
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 147 def install_osdeps(manager_type, *packages) Autobuild.silent { ws_load } installer = ws.os_package_installer installer.setup_package_managers manager = installer.package_managers.fetch(manager_type) installer.install_manager_packages(manager, packages) end
list()
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 79 def list config.each_remote do |remote| enabled = remote.enabled? ? 'enabled' : 'disabled' puts "#{remote.name}: #{remote.uri} (#{enabled})" end end
osdeps(*names)
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 157 def osdeps(*names) _, osdep_packages = Autobuild.silent { ws_load } remotes = resolve_selected_remotes(*names) remotes.each do |r| r.start do |sftp| r.osdeps(sftp, ws, osdep_packages) end end end
remove(name)
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 74 def remove(name) config.delete_remote(name) end
resolve_selected_remotes(*names)
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 47 def resolve_selected_remotes(*names) if names.empty? config.each_enabled_remote else names.map { |n| config.remote_by_name(n) } end end
status(*names)
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 88 def status(*names) remotes = resolve_selected_remotes(*names) packages, = Autoproj.silent { ws_load } remotes.each do |r| outdated_packages = r.start do |sftp| r.each_outdated_package(sftp, @ws, packages).to_a end puts "#{outdated_packages.size} outdated packages" outdated_packages.each do |pkg| puts " #{pkg.name}" end end end
update(*names)
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 105 def update(*names) remotes = resolve_selected_remotes(*names) packages, = Autoproj.silent { ws_load } remotes.each do |r| r.start do |sftp| r.update(sftp, ws, packages) end end end
ws()
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 10 def ws unless @ws @ws = Autoproj::Workspace.default @ws.load_config unless @ws.config.separate_prefixes? raise RuntimeError, "autoproj-sync only works on workspaces "\ "that have separate prefixes enabled" end end @ws end
ws_load()
click to toggle source
# File lib/autoproj/cli/main_sync.rb, line 29 def ws_load ws.setup ws.load_package_sets ws.setup_all_package_directories ws.finalize_package_setup source_packages, osdep_packages, _resolved_selection = ws.load_packages(ws.manifest.default_packages(false), recursive: true, non_imported_packages: :ignore, auto_exclude: false) ws.finalize_setup source_packages = source_packages.map do |name| ws.manifest.find_package_definition(name) end [source_packages, osdep_packages] end