backup_paradise 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of backup_paradise might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/README.md +408 -0
- data/backup_paradise.gemspec +50 -0
- data/bin/backup_for_ingrid +10 -0
- data/bin/backup_paradise +7 -0
- data/bin/windows_backup_paradise +9 -0
- data/doc/README.gen +368 -0
- data/doc/TODO.md +130 -0
- data/lib/backup_paradise/actions/README.md +2 -0
- data/lib/backup_paradise/actions/backup.rb +62 -0
- data/lib/backup_paradise/base/base.rb +502 -0
- data/lib/backup_paradise/base/colours.rb +137 -0
- data/lib/backup_paradise/base/namespace.rb +16 -0
- data/lib/backup_paradise/base/tab.rb +47 -0
- data/lib/backup_paradise/colours/colours.rb +88 -0
- data/lib/backup_paradise/constants/constants.rb +162 -0
- data/lib/backup_paradise/gui/glimmer/libui/backup_for_ingrid/backup_for_ingrid.rb +87 -0
- data/lib/backup_paradise/gui/gtk2/OLD_backup.rb +220 -0
- data/lib/backup_paradise/gui/gtk3/simple_backup_widget/create.rb +70 -0
- data/lib/backup_paradise/gui/gtk3/simple_backup_widget/misc.rb +33 -0
- data/lib/backup_paradise/gui/gtk3/simple_backup_widget/simple_backup_widget.rb +160 -0
- data/lib/backup_paradise/gui/libui/backup_for_ingrid/backup_for_ingrid.rb +99 -0
- data/lib/backup_paradise/gui/libui/simple_backup_widget/simple_backup_widget.rb +119 -0
- data/lib/backup_paradise/gui/shared_code/simple_backup_widget/simple_backup_widget_module.rb +587 -0
- data/lib/backup_paradise/gui/tk/backup.rb +108 -0
- data/lib/backup_paradise/images/BACKUP_IMAGE.png +0 -0
- data/lib/backup_paradise/images/right_arrow.png +0 -0
- data/lib/backup_paradise/project/project.rb +40 -0
- data/lib/backup_paradise/requires/require_the_backup_paradise_project.rb +18 -0
- data/lib/backup_paradise/requires/require_yaml.rb +7 -0
- data/lib/backup_paradise/tab/tab.rb +87 -0
- data/lib/backup_paradise/toplevel_methods/cliner.rb +16 -0
- data/lib/backup_paradise/toplevel_methods/config.rb +86 -0
- data/lib/backup_paradise/toplevel_methods/create_and_remove.rb +63 -0
- data/lib/backup_paradise/toplevel_methods/e.rb +16 -0
- data/lib/backup_paradise/toplevel_methods/esystem.rb +19 -0
- data/lib/backup_paradise/toplevel_methods/files_and_directories.rb +181 -0
- data/lib/backup_paradise/toplevel_methods/help.rb +93 -0
- data/lib/backup_paradise/toplevel_methods/misc.rb +153 -0
- data/lib/backup_paradise/toplevel_methods/mountpoint.rb +188 -0
- data/lib/backup_paradise/toplevel_methods/opnn.rb +27 -0
- data/lib/backup_paradise/utility_scripts/backup/backup.rb +1901 -0
- data/lib/backup_paradise/version/version.rb +19 -0
- data/lib/backup_paradise/windows/README.md +1 -0
- data/lib/backup_paradise/windows/windows.rb +101 -0
- data/lib/backup_paradise/www/backup.cgi +63 -0
- data/lib/backup_paradise/yaml/config.yml +82 -0
- data/lib/backup_paradise.rb +5 -0
- data/test/testing_toplevel_functionality.rb +11 -0
- metadata +194 -0
| @@ -0,0 +1,153 @@ | |
| 1 | 
            +
            #!/usr/bin/ruby -w
         | 
| 2 | 
            +
            # Encoding: UTF-8
         | 
| 3 | 
            +
            # frozen_string_literal: true
         | 
| 4 | 
            +
            # =========================================================================== #
         | 
| 5 | 
            +
            # require 'backup_paradise/toplevel_methods/misc.rb'
         | 
| 6 | 
            +
            # =========================================================================== #
         | 
| 7 | 
            +
            module BackupParadise
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              require 'backup_paradise/toplevel_methods/files_and_directories.rb'
         | 
| 10 | 
            +
              require 'backup_paradise/toplevel_methods/mountpoint.rb'
         | 
| 11 | 
            +
              require 'backup_paradise/tab/tab.rb'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              require 'backup_paradise/colours/colours.rb'
         | 
| 14 | 
            +
              # ========================================================================= #
         | 
| 15 | 
            +
              # === report_current_dir
         | 
| 16 | 
            +
              #
         | 
| 17 | 
            +
              # This method will tell us about the current directory.
         | 
| 18 | 
            +
              # ========================================================================= #
         | 
| 19 | 
            +
              def self.report_current_dir
         | 
| 20 | 
            +
                e "Current location is: #{sdir(Dir.pwd)}"
         | 
| 21 | 
            +
              end; self.instance_eval { alias report_pwd               report_current_dir } # === BackupParadise.report_pwd
         | 
| 22 | 
            +
                   self.instance_eval { alias report_current_directory report_current_dir } # === BackupParadise.report_current_directory
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              # ========================================================================= #
         | 
| 25 | 
            +
              # === debug                                                     (debug tag)
         | 
| 26 | 
            +
              #
         | 
| 27 | 
            +
              # This is just "quick" debug output.
         | 
| 28 | 
            +
              # ========================================================================= #
         | 
| 29 | 
            +
              def debug
         | 
| 30 | 
            +
                e
         | 
| 31 | 
            +
                e '  Data directory: '+sfancy(data_directory?)
         | 
| 32 | 
            +
                e "  Main mount point: #{sfancy(mount_point?.to_s)}"
         | 
| 33 | 
            +
                e
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              # ========================================================================= #
         | 
| 37 | 
            +
              # === BackupParadise.tab_title
         | 
| 38 | 
            +
              # ========================================================================= #
         | 
| 39 | 
            +
              def self.tab_title(
         | 
| 40 | 
            +
                  use_this_title = ''
         | 
| 41 | 
            +
                )
         | 
| 42 | 
            +
                BackupParadise::Tab.rename_tab(:default, use_this_title)
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              # ========================================================================= #
         | 
| 46 | 
            +
              # === BackupParadise.are_we_on_windows?
         | 
| 47 | 
            +
              #
         | 
| 48 | 
            +
              # Query whether the underlying operating system is windows or whether
         | 
| 49 | 
            +
              # it is not.
         | 
| 50 | 
            +
              # ========================================================================= #
         | 
| 51 | 
            +
              def self.are_we_on_windows?
         | 
| 52 | 
            +
                Gem.win_platform?
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              # ========================================================================= #
         | 
| 56 | 
            +
              # === BackupParadise.are_we_on_linux?
         | 
| 57 | 
            +
              # ========================================================================= #
         | 
| 58 | 
            +
              def self.are_we_on_linux?
         | 
| 59 | 
            +
                RbConfig::CONFIG['host_os'].include? 'linux'
         | 
| 60 | 
            +
              end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
              # ========================================================================= #
         | 
| 63 | 
            +
              # === BackupParadise.simple_backup
         | 
| 64 | 
            +
              #
         | 
| 65 | 
            +
              # Use this toplevel-method to backup something individually. This will
         | 
| 66 | 
            +
              # deliberately NOT make use of class BackupParadise::Backup, to keep
         | 
| 67 | 
            +
              # things as simple as possible in this regard.
         | 
| 68 | 
            +
              #
         | 
| 69 | 
            +
              # To invoke this method, try any of the following:
         | 
| 70 | 
            +
              #
         | 
| 71 | 
            +
              #   BackupParadise.simple_backup(:audio, '/Mount/HDD1/')
         | 
| 72 | 
            +
              #   BackupParadise.simple_backup(:audio_dir, '/Mount/HDD1/')
         | 
| 73 | 
            +
              #   BackupParadise.simple_backup(:system_dir, '/Mount/HDD1/')
         | 
| 74 | 
            +
              #   BackupParadise.simple_backup(:audio, :usb1)
         | 
| 75 | 
            +
              #
         | 
| 76 | 
            +
              # ========================================================================= #
         | 
| 77 | 
            +
              def self.simple_backup(
         | 
| 78 | 
            +
                  this_directory_or_file = '/home/x/songs/',
         | 
| 79 | 
            +
                  target_location        = '/Mount/USB1/', # '/Mount/HDD1/',
         | 
| 80 | 
            +
                  be_verbose             = true
         | 
| 81 | 
            +
                )
         | 
| 82 | 
            +
                if this_directory_or_file.is_a? Array
         | 
| 83 | 
            +
                  this_directory_or_file.each {|entry|
         | 
| 84 | 
            +
                    Backup.simple_backup(entry, target_location, be_verbose)
         | 
| 85 | 
            +
                  }
         | 
| 86 | 
            +
                else
         | 
| 87 | 
            +
                  # ===================================================================== #
         | 
| 88 | 
            +
                  # First, handle some special Symbols. This must come before rds().
         | 
| 89 | 
            +
                  # ===================================================================== #
         | 
| 90 | 
            +
                  case this_directory_or_file
         | 
| 91 | 
            +
                  # ===================================================================== #
         | 
| 92 | 
            +
                  # === :audio
         | 
| 93 | 
            +
                  # ===================================================================== #
         | 
| 94 | 
            +
                  when :audio,
         | 
| 95 | 
            +
                       :audio_dir, :songs, :songs_dir, :default,
         | 
| 96 | 
            +
                       :audio_directory
         | 
| 97 | 
            +
                    this_directory_or_file = DIRECTORY_CONTAINING_ALL_SONGS
         | 
| 98 | 
            +
                  # ===================================================================== #
         | 
| 99 | 
            +
                  # === :pkg_dir
         | 
| 100 | 
            +
                  # ===================================================================== #
         | 
| 101 | 
            +
                  when :pkg_dir
         | 
| 102 | 
            +
                    this_directory_or_file = '/Depot/Packages/'
         | 
| 103 | 
            +
                  # ===================================================================== #
         | 
| 104 | 
            +
                  # === :system_dir
         | 
| 105 | 
            +
                  # ===================================================================== #
         | 
| 106 | 
            +
                  when :system_dir, :sys_dir
         | 
| 107 | 
            +
                    this_directory_or_file = '/System/'
         | 
| 108 | 
            +
                  end
         | 
| 109 | 
            +
                  this_directory_or_file = rds(this_directory_or_file)
         | 
| 110 | 
            +
                  if target_location.is_a? Symbol
         | 
| 111 | 
            +
                    # =================================================================== #
         | 
| 112 | 
            +
                    # Symbols are treated in a special manner.
         | 
| 113 | 
            +
                    # =================================================================== #
         | 
| 114 | 
            +
                    if BackupParadise.is_this_a_shortcut?(target_location.to_s)
         | 
| 115 | 
            +
                      target_location =
         | 
| 116 | 
            +
                        BackupParadise.return_the_assumed_mountpoint_from_this_input(target_location.to_s)
         | 
| 117 | 
            +
                    end
         | 
| 118 | 
            +
                  end
         | 
| 119 | 
            +
                  this_directory_or_file = this_directory_or_file.dup if this_directory_or_file.frozen?
         | 
| 120 | 
            +
                  if this_directory_or_file.end_with?('/.')
         | 
| 121 | 
            +
                    # =================================================================== #
         | 
| 122 | 
            +
                    # The next line was added because it was noticed that windows, for
         | 
| 123 | 
            +
                    # some odd reason, may append a '.' character to a directory.
         | 
| 124 | 
            +
                    # =================================================================== #
         | 
| 125 | 
            +
                    this_directory_or_file.chop! # Remove the last char, which is '.' in this case.
         | 
| 126 | 
            +
                  end
         | 
| 127 | 
            +
                  target_location = target_location.to_s
         | 
| 128 | 
            +
                  e "Now backing up directory `#{sdir(this_directory_or_file)}"\
         | 
| 129 | 
            +
                    "` to `#{sdir(target_location)}`."
         | 
| 130 | 
            +
                  cpr(
         | 
| 131 | 
            +
                    this_directory_or_file,
         | 
| 132 | 
            +
                    target_location,
         | 
| 133 | 
            +
                    be_verbose
         | 
| 134 | 
            +
                  )
         | 
| 135 | 
            +
                  tab_title 'Backing up now ...' unless are_we_on_windows?
         | 
| 136 | 
            +
                end
         | 
| 137 | 
            +
              end
         | 
| 138 | 
            +
             | 
| 139 | 
            +
              # ========================================================================= #
         | 
| 140 | 
            +
              # === BackupParadise.rds
         | 
| 141 | 
            +
              # ========================================================================= #
         | 
| 142 | 
            +
              def self.rds(i)
         | 
| 143 | 
            +
                i.to_s.squeeze '/'
         | 
| 144 | 
            +
              end
         | 
| 145 | 
            +
             | 
| 146 | 
            +
              # ========================================================================= #
         | 
| 147 | 
            +
              # === BackupParadise.is_on_roebe?
         | 
| 148 | 
            +
              # ========================================================================= #
         | 
| 149 | 
            +
              def self.is_on_roebe?
         | 
| 150 | 
            +
                ENV['IS_ROEBE'].to_s == '1'
         | 
| 151 | 
            +
              end
         | 
| 152 | 
            +
             | 
| 153 | 
            +
            end
         | 
| @@ -0,0 +1,188 @@ | |
| 1 | 
            +
            #!/usr/bin/ruby -w
         | 
| 2 | 
            +
            # Encoding: UTF-8
         | 
| 3 | 
            +
            # frozen_string_literal: true
         | 
| 4 | 
            +
            # =========================================================================== #
         | 
| 5 | 
            +
            # require 'backup_paradise/toplevel_methods/mountpoint.rb'
         | 
| 6 | 
            +
            # BackupParadise.target_mountpoint=
         | 
| 7 | 
            +
            # =========================================================================== #
         | 
| 8 | 
            +
            module BackupParadise
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              require 'backup_paradise/toplevel_methods/config.rb'
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              # ========================================================================= #
         | 
| 13 | 
            +
              # === @target_mountpoint
         | 
| 14 | 
            +
              # ========================================================================= #
         | 
| 15 | 
            +
              @target_mountpoint = '/Mount/USB1/'
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              # ========================================================================= #
         | 
| 18 | 
            +
              # === BackupParadise.is_this_a_shortcut?
         | 
| 19 | 
            +
              # ========================================================================= #
         | 
| 20 | 
            +
              def self.is_this_a_shortcut?(i)
         | 
| 21 | 
            +
                returned_value = return_the_assumed_mountpoint_from_this_input(i)
         | 
| 22 | 
            +
                # ======================================================================= #
         | 
| 23 | 
            +
                # It is a shortcut when we have replaced it.
         | 
| 24 | 
            +
                # ======================================================================= #
         | 
| 25 | 
            +
                !(returned_value == i)
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              # ========================================================================= #
         | 
| 29 | 
            +
              # === BackupParadise.return_the_assumed_mountpoint_from_this_input
         | 
| 30 | 
            +
              #
         | 
| 31 | 
            +
              # This method will replace e. g. "usb1" with ENV['USB1'] or the 
         | 
| 32 | 
            +
              # config-setting. The config setting takes priority over the ENV 
         | 
| 33 | 
            +
              # setting.
         | 
| 34 | 
            +
              # ========================================================================= #
         | 
| 35 | 
            +
              def self.return_the_assumed_mountpoint_from_this_input(i)
         | 
| 36 | 
            +
                case i # case tag
         | 
| 37 | 
            +
                # ======================================================================= #
         | 
| 38 | 
            +
                # === :pwd
         | 
| 39 | 
            +
                # ======================================================================= #
         | 
| 40 | 
            +
                when 'pwd',
         | 
| 41 | 
            +
                     :pwd,
         | 
| 42 | 
            +
                     :""
         | 
| 43 | 
            +
                  i = Dir.pwd
         | 
| 44 | 
            +
                # ======================================================================= #
         | 
| 45 | 
            +
                # === :usb1
         | 
| 46 | 
            +
                #
         | 
| 47 | 
            +
                # Note that nil also defaults to :usb1.
         | 
| 48 | 
            +
                # ======================================================================= #
         | 
| 49 | 
            +
                when :usb1,
         | 
| 50 | 
            +
                     :default,
         | 
| 51 | 
            +
                     'usb1',
         | 
| 52 | 
            +
                     'usb',
         | 
| 53 | 
            +
                     'tousb',
         | 
| 54 | 
            +
                     /^-?-?to(-|_)?usb1/,
         | 
| 55 | 
            +
                     '1',
         | 
| 56 | 
            +
                     /^-?-?usb1/,
         | 
| 57 | 
            +
                     nil
         | 
| 58 | 
            +
                  if CONFIG and CONFIG.has_key?('usb1')
         | 
| 59 | 
            +
                    i = CONFIG['usb1'].to_s
         | 
| 60 | 
            +
                  else
         | 
| 61 | 
            +
                    i = ENV['USB1']
         | 
| 62 | 
            +
                  end
         | 
| 63 | 
            +
                # ======================================================================= #
         | 
| 64 | 
            +
                # === :usb2
         | 
| 65 | 
            +
                # ======================================================================= #
         | 
| 66 | 
            +
                when :usb2,
         | 
| 67 | 
            +
                     'usb2',
         | 
| 68 | 
            +
                     /^-?-?to(-|_)?usb2/,
         | 
| 69 | 
            +
                     '2',
         | 
| 70 | 
            +
                     /^-?-?usb2/
         | 
| 71 | 
            +
                  if CONFIG and CONFIG.has_key?('usb2')
         | 
| 72 | 
            +
                    i = CONFIG['usb2'].to_s
         | 
| 73 | 
            +
                  else
         | 
| 74 | 
            +
                    i = ENV['USB2']
         | 
| 75 | 
            +
                  end
         | 
| 76 | 
            +
                # ======================================================================= #
         | 
| 77 | 
            +
                # === :usb3
         | 
| 78 | 
            +
                # ======================================================================= #
         | 
| 79 | 
            +
                when '3',
         | 
| 80 | 
            +
                     /^-?-?usb3/,
         | 
| 81 | 
            +
                     /^-?-?to(-|_)?usb3/,
         | 
| 82 | 
            +
                     :usb3
         | 
| 83 | 
            +
                  if CONFIG and CONFIG.has_key?('usb3')
         | 
| 84 | 
            +
                    i = CONFIG['usb3'].to_s
         | 
| 85 | 
            +
                  else
         | 
| 86 | 
            +
                    i = ENV['USB3']
         | 
| 87 | 
            +
                  end
         | 
| 88 | 
            +
                # ======================================================================= #
         | 
| 89 | 
            +
                # === :usb4
         | 
| 90 | 
            +
                # ======================================================================= #
         | 
| 91 | 
            +
                when '4',
         | 
| 92 | 
            +
                     :usb4,
         | 
| 93 | 
            +
                     /^-?-?usb4/,
         | 
| 94 | 
            +
                     /^-?-?to(-|_)?usb4/
         | 
| 95 | 
            +
                  if CONFIG and CONFIG.has_key?('usb4')
         | 
| 96 | 
            +
                    i = CONFIG['usb4'].to_s
         | 
| 97 | 
            +
                  else
         | 
| 98 | 
            +
                    i = ENV['USB4']
         | 
| 99 | 
            +
                  end
         | 
| 100 | 
            +
                # ======================================================================= #
         | 
| 101 | 
            +
                # === :usb5
         | 
| 102 | 
            +
                # ======================================================================= #
         | 
| 103 | 
            +
                when 'usb5',
         | 
| 104 | 
            +
                     /^-?-?usb5/,
         | 
| 105 | 
            +
                     /^-?-?to(-|_)?usb5/,
         | 
| 106 | 
            +
                     '5',
         | 
| 107 | 
            +
                     :usb5
         | 
| 108 | 
            +
                  if CONFIG and CONFIG.has_key?('usb5')
         | 
| 109 | 
            +
                    i = CONFIG['usb5'].to_s
         | 
| 110 | 
            +
                  else
         | 
| 111 | 
            +
                    i = ENV['USB5']
         | 
| 112 | 
            +
                  end
         | 
| 113 | 
            +
                # ======================================================================= #
         | 
| 114 | 
            +
                # === :chroot
         | 
| 115 | 
            +
                # ======================================================================= #
         | 
| 116 | 
            +
                when :chroot,
         | 
| 117 | 
            +
                     'chroot'
         | 
| 118 | 
            +
                  i = ENV['CHROOT_TARGET']
         | 
| 119 | 
            +
                  if i.nil?
         | 
| 120 | 
            +
                    i = '/Depot/Chroot/' # Hardcoded target in this case.
         | 
| 121 | 
            +
                  end
         | 
| 122 | 
            +
                # ======================================================================= #
         | 
| 123 | 
            +
                # === :to_hdd
         | 
| 124 | 
            +
                # ======================================================================= #
         | 
| 125 | 
            +
                when 'tohd',
         | 
| 126 | 
            +
                     'hdd1',
         | 
| 127 | 
            +
                     :to_hdd,
         | 
| 128 | 
            +
                     /^-?-?to(-|_)?hdd1?/i
         | 
| 129 | 
            +
                  i = BackupParadise.config?['hdd1'] # ENV['FESTPLATTE1'].to_s.dup
         | 
| 130 | 
            +
                # ======================================================================= #
         | 
| 131 | 
            +
                # === :to_hdd2
         | 
| 132 | 
            +
                # ======================================================================= #
         | 
| 133 | 
            +
                when 'hdd2',
         | 
| 134 | 
            +
                     :to_hdd2,
         | 
| 135 | 
            +
                     /^-?-?to(-|_)?hdd2/i
         | 
| 136 | 
            +
                  i = BackupParadise.config?['hdd2'] # ENV['FESTPLATTE1'].to_s.dup
         | 
| 137 | 
            +
                end
         | 
| 138 | 
            +
                # ======================================================================= #
         | 
| 139 | 
            +
                # The input could still be a Symbol, so the next line exists to protect
         | 
| 140 | 
            +
                # us against this.
         | 
| 141 | 
            +
                # ======================================================================= #
         | 
| 142 | 
            +
                i = i.to_s unless i.is_a?(String)
         | 
| 143 | 
            +
                if i and File.directory?(i) and !i.end_with?('/')
         | 
| 144 | 
            +
                  i = i.dup if i.frozen?
         | 
| 145 | 
            +
                  i << '/' # Ensure a trailing '/'.
         | 
| 146 | 
            +
                end
         | 
| 147 | 
            +
                return i # Always return it.
         | 
| 148 | 
            +
              end
         | 
| 149 | 
            +
             | 
| 150 | 
            +
              # ========================================================================= #
         | 
| 151 | 
            +
              # === BackupParadise.target_mountpoint=                        (target tag)
         | 
| 152 | 
            +
              #
         | 
| 153 | 
            +
              # Use this method to determine the main target mountpoint that is
         | 
| 154 | 
            +
              # to be used. This must be the base directory, not a subdirectory.
         | 
| 155 | 
            +
              #
         | 
| 156 | 
            +
              # An example for this, on my home system, would be /Mount/USB1/.
         | 
| 157 | 
            +
              # ========================================================================= #
         | 
| 158 | 
            +
              def self.target_mountpoint=(i = :usb1)
         | 
| 159 | 
            +
                if i.is_a? String
         | 
| 160 | 
            +
                  i = i.dup if i.frozen?
         | 
| 161 | 
            +
                  i.squeeze!('/')
         | 
| 162 | 
            +
                end
         | 
| 163 | 
            +
                if BackupParadise.is_this_a_shortcut?(i)
         | 
| 164 | 
            +
                  i = return_the_assumed_mountpoint_from_this_input(i)
         | 
| 165 | 
            +
                end
         | 
| 166 | 
            +
                # ======================================================================= #
         | 
| 167 | 
            +
                # Ensure that a trailing '/' is used.
         | 
| 168 | 
            +
                # ======================================================================= #
         | 
| 169 | 
            +
                unless i.end_with? '/'
         | 
| 170 | 
            +
                  i = i.dup if i.frozen?
         | 
| 171 | 
            +
                  i << '/'
         | 
| 172 | 
            +
                end
         | 
| 173 | 
            +
                @target_mountpoint = i
         | 
| 174 | 
            +
              end; self.instance_eval { alias set_mounted_path             target_mountpoint= } # === BackupParadise.set_mounted_path
         | 
| 175 | 
            +
                   self.instance_eval { alias set_target_device            target_mountpoint= } # === BackupParadise.set_target_device
         | 
| 176 | 
            +
                   self.instance_eval { alias set_backup_to_this_directory target_mountpoint= } # === BackupParadise.set_backup_to_this_directory
         | 
| 177 | 
            +
                   self.instance_eval { alias set_target                   target_mountpoint= } # === BackupParadise.set_target
         | 
| 178 | 
            +
                   self.instance_eval { alias set_target_mountpoint        target_mountpoint= } # === BackupParadise.set_target_mountpoint
         | 
| 179 | 
            +
                   self.instance_eval { alias set_main_target              target_mountpoint= } # === BackupParadise.set_main_target
         | 
| 180 | 
            +
             | 
| 181 | 
            +
              # ========================================================================= #
         | 
| 182 | 
            +
              # === BackupParadise.target_mountpoint?
         | 
| 183 | 
            +
              # ========================================================================= #
         | 
| 184 | 
            +
              def self.target_mountpoint?
         | 
| 185 | 
            +
                @target_mountpoint
         | 
| 186 | 
            +
              end
         | 
| 187 | 
            +
             | 
| 188 | 
            +
            end
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            #!/usr/bin/ruby -w
         | 
| 2 | 
            +
            # Encoding: UTF-8
         | 
| 3 | 
            +
            # frozen_string_literal: true
         | 
| 4 | 
            +
            # =========================================================================== #
         | 
| 5 | 
            +
            # require 'backup_paradise/toplevel_methods/opnn.rb'
         | 
| 6 | 
            +
            # =========================================================================== #
         | 
| 7 | 
            +
            module BackupParadise
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              begin
         | 
| 10 | 
            +
                require 'opn'
         | 
| 11 | 
            +
              rescue LoadError; end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              # ========================================================================= #
         | 
| 14 | 
            +
              # === BackupParadise.opnn
         | 
| 15 | 
            +
              # ========================================================================= #
         | 
| 16 | 
            +
              def self.opnn(
         | 
| 17 | 
            +
                  i = {
         | 
| 18 | 
            +
                    namespace: NAMESPACE
         | 
| 19 | 
            +
                  }
         | 
| 20 | 
            +
                )
         | 
| 21 | 
            +
                if i.is_a? String
         | 
| 22 | 
            +
                  i = { namespace: i }
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
                Opn.opn(i)
         | 
| 25 | 
            +
              end; self.instance_eval { alias opn opnn } # === BackupParadise.opnn
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            end
         |