Last active
August 29, 2015 14:21
-
-
Save andis/30aeb2e386f8120c485a to your computer and use it in GitHub Desktop.
Add apt repos for use with wright (WIP)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Add an apt repo from wright scripts. | |
# | |
# Example: | |
# | |
# AddAptRepo.new( | |
# self, | |
# name: 'docker', | |
# key_id: '36A1D7869245C8950F966E92D8576A8BA88D21E9', | |
# raw_line: "deb https://get.docker.com/ubuntu docker main" | |
# ).call | |
# | |
class AddAptRepo | |
attr_reader :wright, :name, :raw_line, :key_id, :keyserver | |
def initialize(wright, opts) | |
@wright = wright | |
@name = opts.fetch(:name) | |
@raw_line = opts.fetch(:raw_line) | |
@key_id = opts.fetch(:key_id) | |
@keyserver = opts.fetch(:keyserver, 'hkp://keyserver.ubuntu.com:80') | |
end | |
public | |
def call | |
create_keyfile | |
create_listfile | |
end | |
def create_keyfile | |
wright.directory(File.dirname gpg_key_filename) | |
wright.file(gpg_key_filename) { |f| f.mode = '444' } | |
File.size(gpg_key_filename) > 0 or | |
fetch_gpg_key | |
end | |
def create_listfile | |
wright.file list_filename do |f| | |
f.content = raw_line+"\n" | |
f.mode = '444' | |
f.on_update = -> { system 'apt-get', 'update' } | |
end | |
end | |
def gpg_key_filename | |
"/etc/apt/trusted.gpg.d/#{name}.gpg" | |
end | |
def fetch_gpg_key | |
cmd = [ | |
'apt-key', | |
'--keyring', gpg_key_filename, | |
'adv', | |
'--keyserver', keyserver, | |
'--recv-keys', key_id | |
] | |
system(*cmd) or fail("Error fetching key #{key_id}") | |
end | |
def list_filename | |
"/etc/apt/sources.list.d/#{name}.list" | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment