# GOV.UK Mini Environment Admin # Copyright © 2018 Christopher Baines # # This file is part of the GOV.UK Mini Environment Admin. # # The GOV.UK Mini Environment Admin is free software: you can # redistribute it and/or modify it under the terms of the GNU Affero # General Public License as published by the Free Software Foundation, # either version 3 of the License, or (at your option) any later # version. # # The GOV.UK Mini Environment Admin is distributed in the hope that it # will be useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public # License along with the GOV.UK Mini Environment Admin. If not, see # . module GovukGuix::UpdateGcrootsDirectory extend ::ShellUtils DIRECTORY = '/var/guix/gcroots/govuk-mini-environment-admin' def self.set_in_use_store_paths(store_paths, options = {}) current_store_paths = list_store_paths(options) (current_store_paths - store_paths).each do |store_path| remove_store_path(store_path, options) end (store_paths - current_store_paths).each do |store_path| add_store_path(store_path, options) end end def self.add_store_path(store_path, options = {}) run_command( 'ln', '-s', store_path, File.join(DIRECTORY, store_path['/gnu/store/'.length..-1]), run_remotely_on_host: options[:run_remotely_on_host] ) end def self.remove_store_path(store_path, options = {}) run_command( 'rm', File.join(DIRECTORY, store_path['/gnu/store/'.length..-1]), run_remotely_on_host: options[:run_remotely_on_host] ) end def self.list_store_paths(options = {}) run_command( 'ls', '-1', DIRECTORY, run_remotely_on_host: options[:run_remotely_on_host] ).map do |store_path_suffix| "/gnu/store/#{store_path_suffix.strip}" end end end