From b0973f25d74e90872800bf629c65fdb665f8e37d Mon Sep 17 00:00:00 2001 From: Martin Puppe Date: Sat, 6 Mar 2021 16:13:34 +0100 Subject: [PATCH] Make path to restic executable configurable --- mpbackup | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/mpbackup b/mpbackup index 4e70eb0..1935947 100644 --- a/mpbackup +++ b/mpbackup @@ -38,14 +38,20 @@ def unset_restic_vars ENV.delete('RESTIC_CACHE_DIR') end +def set_restic_path(config) + if !config.key? 'restic-path' + config['restic-path'] = 'restic' + end +end + def error(exit_status, message) STDERR.puts("Error: #{message}") exit exit_status end -def check +def check(config) puts 'Checking restic repo …' - check_command = ['restic', 'check'] + check_command = [config['restic-path'], 'check'] puts("Command: #{check_command.join(' ')}") system(*check_command) if $?.exitstatus > 0 @@ -62,20 +68,20 @@ def backup(config) exclude = config.dig('backup', 'exclude')&.flat_map{|e| ['--exclude', e]} || [] tags = config.dig('backup', 'tags')&.flat_map{|t| ['--tag', t]} || [] paths = config.dig('backup', 'paths') || [] - backup_command = ['restic', 'backup', *exclude, *paths, *flags] + backup_command = [config['restic-path'], 'backup', *exclude, *paths, *flags] puts("Command: #{backup_command.join(' ')}") system(*backup_command) if $?.exitstatus > 0 error(1, 'Failed to do backup.') end - check + check(config) if config.dig('forget', 'enable') puts 'Forgetting unnecessary snapshots …' flags = config['forget'].select{|k,v| k != 'enable'} flags = flags.flat_map{|k,v| ['--' + k, v.to_s]} - forget_command = ['restic', 'forget'] + flags + forget_command = [config['restic-path'], 'forget'] + flags puts("Command: #{forget_command.join(' ')}") system(*forget_command) # Data will only be deleted when `restic prune` is executed or when @@ -88,7 +94,7 @@ end def prune(config) puts 'Pruning restic repo …' - prune_command = ['restic', 'prune'] + prune_command = [config['restic-path'], 'prune'] puts("Command: #{prune_command.join(' ')}") system(*prune_command) if $?.exitstatus > 0 @@ -101,12 +107,13 @@ end def run_restic(config) puts 'Executing restic with the following arguments …' puts "ARGV: #{ARGV}" - exec('restic', *ARGV) + exec(config['restic-path'], *ARGV) end def act(config, options) puts "Applying configuration ‘#{config['name']}’ …" set_restic_vars(config) + set_restic_path(config) if options[:prune] prune config elsif options[:run_restic]