Class: Autoproj::CLI::MainSync
- Inherits:
-
Thor
- Object
- Thor
- Autoproj::CLI::MainSync
- Defined in:
- lib/autoproj/cli/main_sync.rb
Overview
The ‘jenkins’ subcommand for autoproj
Instance Method Summary collapse
- #add(name, uri) ⇒ Object
- #disable(*names) ⇒ Object
- #enable(*names) ⇒ Object
- #exec(remote_name, *command) ⇒ Object
- #install_osdeps(manager_type, *packages) ⇒ Object
- #list ⇒ Object
- #osdeps(*names) ⇒ Object
- #remove(name) ⇒ Object
- #status(*names) ⇒ Object
- #update(*names) ⇒ Object
Instance Method Details
#add(name, uri) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# 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 |
#disable(*names) ⇒ Object
135 136 137 138 139 140 141 142 |
# 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) ⇒ Object
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# 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) ⇒ Object
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# 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: [:interactive], chdir: [:chdir] || ws.root_dir) end unless [:interactive] if status[:exit_signal] exit 255 else exit status[:exit_code] end end end |
#install_osdeps(manager_type, *packages) ⇒ Object
147 148 149 150 151 152 153 154 |
# 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 ⇒ Object
79 80 81 82 83 84 |
# 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) ⇒ Object
157 158 159 160 161 162 163 164 165 |
# 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) ⇒ Object
74 75 76 |
# File 'lib/autoproj/cli/main_sync.rb', line 74 def remove(name) config.delete_remote(name) end |
#status(*names) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# 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) ⇒ Object
105 106 107 108 109 110 111 112 113 114 |
# 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 |