-#
-# Cookbook Name:: apt
-# Resource:: apt_source
-#
-# Copyright 2015, OpenStreetMap Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-default_action :create
-
-property :source_name, String, :name_property => true
-property :source_template, String, :default => "default.list.erb"
-property :url, String, :required => true
-property :key, String
-property :key_url, String
-property :update, [TrueClass, FalseClass], :default => false
-
-def initialize(name, run_context = nil)
- super(name, run_context)
-
- @action = node[:apt][:sources].include?(name) ? :create : :delete
-end
-
-action :create do
- if new_resource.key
- execute "apt-key-#{new_resource.key}-clean" do
- command "/usr/bin/apt-key adv --batch --delete-key --yes #key}"
- only_if "/usr/bin/apt-key adv --list-keys #{new_resource.key} | fgrep expired"
- end
-
- if new_resource.key_url
- execute "apt-key-#{new_resource.key}-install" do
- command "/usr/bin/apt-key adv --fetch-keys #{new_resource.key_url}"
- not_if "/usr/bin/apt-key adv --list-keys #{new_resource.key}"
- notifies :run, "execute[apt-update-#{new_resource.source_name}]"
- end
- else
- execute "apt-key-#{new_resource.key}-install" do
- command "/usr/bin/apt-key adv --keyserver hkp://keys.gnupg.net --recv-keys #{new_resource.key}"
- not_if "/usr/bin/apt-key adv --list-keys #{new_resource.key}"
- notifies :run, "execute[apt-update-#{new_resource.source_name}]"
- end
- end
- end
-
- template source_path do
- source new_resource.source_template
- owner "root"
- group "root"
- mode 0o644
- variables :url => new_resource.url
- notifies :run, "execute[apt-update-#{new_resource.source_name}]"
- end
-
- execute "apt-update-#{new_resource.source_name}" do
- action new_resource.update ? :run : :nothing
- command "/usr/bin/apt-get update --no-list-cleanup -o Dir::Etc::sourcelist='#{source_path}' -o Dir::Etc::sourceparts='-'"
- end
-end
-
-action :delete do
- file source_path do
- action :delete
- end
-end
-
-action_class do
- def source_path
- "/etc/apt/sources.list.d/#{new_resource.source_name}.list"
- end
-end