Class: Autoproj::CLI::MainSync

Inherits:
Thor
  • Object
show all
Defined in:
lib/autoproj/cli/main_sync.rb

Overview

The ‘jenkins’ subcommand for autoproj

Instance Method Summary collapse

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: 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) ⇒ 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

#listObject



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