backup_paradise 1.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +452 -0
  3. data/backup_paradise.gemspec +50 -0
  4. data/bin/backup_for_ingrid +10 -0
  5. data/bin/backup_paradise +7 -0
  6. data/bin/windows_backup_paradise +9 -0
  7. data/doc/README.gen +390 -0
  8. data/doc/TODO.md +130 -0
  9. data/img/BackupParadise_Logo.png +0 -0
  10. data/lib/backup_paradise/actions/README.md +2 -0
  11. data/lib/backup_paradise/actions/backup.rb +62 -0
  12. data/lib/backup_paradise/base/base.rb +529 -0
  13. data/lib/backup_paradise/base/colours.rb +137 -0
  14. data/lib/backup_paradise/base/namespace.rb +16 -0
  15. data/lib/backup_paradise/base/tab.rb +47 -0
  16. data/lib/backup_paradise/colours/colours.rb +88 -0
  17. data/lib/backup_paradise/constants/constants.rb +162 -0
  18. data/lib/backup_paradise/gui/glimmer/libui/backup_for_ingrid/backup_for_ingrid.rb +87 -0
  19. data/lib/backup_paradise/gui/gtk2/OLD_backup.rb +165 -0
  20. data/lib/backup_paradise/gui/libui/backup_for_ingrid/backup_for_ingrid.rb +99 -0
  21. data/lib/backup_paradise/gui/shared_code/simple_backup_widget/simple_backup_widget_module.rb +0 -0
  22. data/lib/backup_paradise/gui/tk/backup.rb +108 -0
  23. data/lib/backup_paradise/gui/universal_widgets/simple_backup_widget/simple_backup_widget.rb +921 -0
  24. data/lib/backup_paradise/images/BACKUP_IMAGE.png +0 -0
  25. data/lib/backup_paradise/images/right_arrow.png +0 -0
  26. data/lib/backup_paradise/project/project.rb +40 -0
  27. data/lib/backup_paradise/requires/require_the_backup_paradise_project.rb +18 -0
  28. data/lib/backup_paradise/requires/require_yaml.rb +7 -0
  29. data/lib/backup_paradise/tab/tab.rb +87 -0
  30. data/lib/backup_paradise/toplevel_methods/cliner.rb +16 -0
  31. data/lib/backup_paradise/toplevel_methods/config.rb +86 -0
  32. data/lib/backup_paradise/toplevel_methods/create_and_remove.rb +63 -0
  33. data/lib/backup_paradise/toplevel_methods/e.rb +16 -0
  34. data/lib/backup_paradise/toplevel_methods/esystem.rb +19 -0
  35. data/lib/backup_paradise/toplevel_methods/files_and_directories.rb +181 -0
  36. data/lib/backup_paradise/toplevel_methods/help.rb +93 -0
  37. data/lib/backup_paradise/toplevel_methods/misc.rb +153 -0
  38. data/lib/backup_paradise/toplevel_methods/mountpoint.rb +188 -0
  39. data/lib/backup_paradise/toplevel_methods/opnn.rb +27 -0
  40. data/lib/backup_paradise/utility_scripts/backup/backup.rb +1942 -0
  41. data/lib/backup_paradise/version/version.rb +19 -0
  42. data/lib/backup_paradise/windows/README.md +1 -0
  43. data/lib/backup_paradise/windows/windows.rb +101 -0
  44. data/lib/backup_paradise/www/backup.cgi +63 -0
  45. data/lib/backup_paradise/yaml/config.yml +82 -0
  46. data/lib/backup_paradise.rb +5 -0
  47. data/test/testing_toplevel_functionality.rb +11 -0
  48. metadata +192 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 263753b9cc84a3c5a223a9465d19a63b7347fb1a6755ceaea522f709a1c9408c
4
+ data.tar.gz: c5945d57b90f13d43225c1e96029240ff890519408e7e8822b2e35d115bfec4a
5
+ SHA512:
6
+ metadata.gz: 2c8bcd79156abebe708f605b8d4c8cf9f32b03129d369a0169326be050f51f69308c26d235d78af76985edd34ca092e54d0ac16dd004b92b862e403dedfc25a7
7
+ data.tar.gz: 9e1f5dac3d5715327b21f64fe3c79a75ae4250cf061b89849a52a2435883399a164d8107f613280dcfa38fd12b9217a8f4341f85328dcd91760e18ea7c84a6a7
data/README.md ADDED
@@ -0,0 +1,452 @@
1
+ [![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://www.gobolinux.org/)
2
+ [![forthebadge](https://forthebadge.com/images/badges/made-with-ruby.svg)](https://www.ruby-lang.org/en/)
3
+ [![Gem Version](https://badge.fury.io/rb/backup_paradise.svg)](https://badge.fury.io/rb/backup_paradise)
4
+
5
+ This gem was <b>last updated</b> on the <span style="color: darkblue; font-weight: bold">20.01.2024</span> (dd.mm.yyyy notation), at <span style="color: steelblue; font-weight: bold">18:58:06</span> o'clock.
6
+
7
+ <img src="https://i.imgur.com/Imkvsgs.png" style="margin: 1em">
8
+
9
+ # The Backup Paradise project
10
+
11
+ This project attempts to assist you - and me - in backing up data
12
+ to an **external USB** device specifically.
13
+
14
+ The project is mostly catering to my own use cases, so it may not
15
+ be very useful to other ruby users. I will try to make adjustments
16
+ so that other ruby users can use it (see the file called
17
+ **config.yml**), but this is an ongoing effort that may take
18
+ some time.
19
+
20
+ The project is primarily just a fancy **recursive copy** operation,
21
+ but it will do some minor additional notifications on the commandline,
22
+ make use of colours (if the colours gem has been installed),
23
+ automatically create some log files and even provide ruby-gtk3
24
+ bindings, as well as tk-bindings (although the latter ones are
25
+ currently incomplete).
26
+
27
+ So it is a **recursive copy** script with some add-ons really,
28
+ nothing really sophisticated aside from this on top.
29
+
30
+ The project has **one major goal** and a **few minor goals**.
31
+
32
+ The **major goal** is **to be usable as a backup-assistant**,
33
+ on both linux, but also on windows systems.
34
+
35
+ The **minor goals** include:
36
+
37
+ - **Flexibility**, to also allow us to back up only
38
+ individual files or individual directories. The user should
39
+ be able to specify **what** has to be backed up.
40
+
41
+ - Notify the user about the status of the backup-operation
42
+ and prior backup-operations.
43
+
44
+ - Provide some **simple GUI bindings** to use this project,
45
+ in particular for both ruby-gtk and ruby-tk. The latter
46
+ so that we can use this on windows.
47
+
48
+ ## General usage of the BackupParadise project - backing up data via ruby
49
+
50
+ For the time being, I have aliased the main executable at
51
+ **bin/backup_paradise** onto:
52
+
53
+ backup_paradise
54
+
55
+ To then use this, I can issue the following commands:
56
+
57
+ backup_paradise usb1
58
+ backup_paradise usb2
59
+ backup_paradise tousb1
60
+ backup_paradise tousb2
61
+ backup_paradise tousb3
62
+ backup_paradise tousb4
63
+
64
+ Depending on where the **external USB device** is mounted.
65
+
66
+ What does an argument, such as **usb1**, imply?
67
+
68
+ This used to refer to the hardcoded path at <b>/Mount/USB1/</b>
69
+ on my home system. **usb2** would then point at
70
+ <b>/Mount/USB2/</b> and so forth.
71
+
72
+ These 'main aliases' can also be accessed via some shortcuts,
73
+ such as "tousb1", without the quotes. See the examples listed
74
+ above.
75
+
76
+ I adopted this scheme after having used **GoboLinux**. Note that
77
+ this used to be valid from **December 2018** up to **May 2021**.
78
+
79
+ In **May 2021** this approach was changed. While I still use
80
+ the above instructions, such as via **backup_paradise usb1**,
81
+ a .yml file now decides the target directory. So, usb1,
82
+ usb2 and so forth, are now simply aliases to whatever the
83
+ .yml file specifies. The advantage of this approach is that
84
+ other users can re-define the targets there - simply have
85
+ a look at the **config.yml** file and change it if you
86
+ would like to. (Of course overruling this via the commandline
87
+ still works, so you don't really need to have to modify the
88
+ config.yml file.)
89
+
90
+ Other mount points can also be used, although not with a
91
+ convenience shortcut. Have a look at the option
92
+ **--backup-to=/opt/** documented elsewhere in this
93
+ file, to specify another base-directory to use.
94
+
95
+ ## The configuration file called config.yml
96
+
97
+ The **BackupParadise project** comes with a small configuration file,
98
+ called **config.yml**, in the **yaml/** subdirectory.
99
+
100
+ This is an optional file, though - if it does not exist then the
101
+ project will ignore this file completely and use internal
102
+ defaults as-is. But if it is available, and it can be found by
103
+ ruby, then it will be used as **the default configuration**.
104
+
105
+ Since as of **September 2021* the **config.yml** file
106
+ has the following **five main configuration settings**:
107
+
108
+ use_this_program_to_rename_tabs: String
109
+ show_popup_notification: Boolean
110
+ use_system_cp: Boolean
111
+ backup_these_directories: Array
112
+ local_audio_directory: String
113
+
114
+ The first three entries are not so important, but the fourth
115
+ entry is quite important, because this Array specifies which
116
+ directories we want to back up and thus copy. The fifth entry
117
+ can be used to denote your local collection of audio files,
118
+ if these are kept in a directory. I use **/home/x/songs/** for
119
+ this.
120
+
121
+ More options may be added in the future, but I will try to only
122
+ add options that make sense, rather than overwhelm users with
123
+ lots of configuration options.
124
+
125
+ The individual aliases, such as usb1, usb2, and so forth, are
126
+ also specified now:
127
+
128
+ usb1: /Mount/USB1/
129
+ usb2: /Mount/USB2/
130
+ usb3: /Mount/USB3/
131
+ usb4: /Mount/USB4/
132
+ usb5: /Mount/USB5/
133
+
134
+ The rationale for these default to my home setup, where I
135
+ mount devices to these directories (on Linux).
136
+
137
+ ## Log files
138
+
139
+ The BackupParadise project will try to log as to what has happened,
140
+ since as of **May 2018**. Several different log files may be created.
141
+
142
+ If there is more than one log file stored at the target device
143
+ then the current behaviour is to delete all but one log file.
144
+
145
+ Another log file that may commonly be used is the one
146
+ that targets the file <b>/Depot/Temp/backup.log</b>. This
147
+ will, however had, only work if the directory **/Depot/Temp/**
148
+ exists, which is the case on my home system. The whole gem here
149
+ is heavily tailored to my own needs - I can adapt it to meet
150
+ other people's wishes if necessary, of course.
151
+
152
+ The **format** of the log file going into **backup.log** is
153
+ simply how long it took to make the backup, in seconds, and
154
+ the exact date when that particular log file was created. This
155
+ is equal to when the backup-operation happened, too.
156
+
157
+ ## Backing up individual directories
158
+
159
+ If you have a directory called **FOOBAR/**, then you can back
160
+ it up simply by issuing:
161
+
162
+ backup_paradise --FOOBAR
163
+ backup_paradise FOOBAR
164
+
165
+ Whichever variant you prefer. Note that this requires that the
166
+ external device has been mounted already. You can set where
167
+ the device should reside via:
168
+
169
+ BackupParadise.set_mounted_path()
170
+
171
+ Simply pass the directory that you may wish to use for backup
172
+ purpose there.
173
+
174
+ Note that **class AdvancedBackup** will assume a certain target
175
+ device automatically, tailored to my own system. This is usually
176
+ at **/Mount/USB1** for the first mounted USB device on my
177
+ system.
178
+
179
+ If you wish to overrule that and use another target, which you
180
+ may most likely want to do, then you can use any of the
181
+ following commandline flags for this:
182
+
183
+ backup_paradise --use-this-as-target-for-backup=/opt/
184
+ backup_paradise --use-this-as-target=/opt/
185
+ backup_paradise --backup-to=/opt/
186
+
187
+ In this case **/opt/** would be the target that you use as **source
188
+ directory** for the backup-operation.
189
+
190
+ If you wish to backup the **/Programs/** hierarchy, should you
191
+ keep an **AppDir layout** on your system, then this commandline
192
+ invocation may be of help:
193
+
194
+ backup_paradise --programs-dir
195
+
196
+ To backup the **/home/x/studium/** directory, the following
197
+ commands are possible:
198
+
199
+ backup_paradise --studium-dir
200
+ backup_paradise --studium-directory
201
+ backup_paradise --studium
202
+
203
+ To backup, on my home system, the **/AUTOGENERATED/**
204
+ directory, I do:
205
+
206
+ backup_paradise --autogenerated
207
+
208
+ ## Miscellaneous comments
209
+
210
+ The **BackupParadise** project has been rewritten a few times already
211
+ over the years.
212
+
213
+ In the past there was an instance variable in class AdvancedBackup
214
+ called **@last_backup_directory**, which was pointing to an absolute
215
+ path such as **/Mount/USB1/last_backup-13.08.2018-21:11:15/**.
216
+
217
+ It is no longer in use, but I keep it as a reference hint to
218
+ myself - who knows what may be changed in the future.
219
+
220
+ ## Specific examples
221
+
222
+ This subsection details some invocation examples in a short way.
223
+
224
+ Some of these will only work on my home system for the time being,
225
+ until I have sufficiently changed the project to allow more
226
+ flexibility in this regard.
227
+
228
+ Backup all audio-files to **/opt/**:
229
+
230
+ backup_paradise --backup-to=/opt/ --audio-dir
231
+
232
+ Backup all relevant entries into the default chroot target (on
233
+ my home system):
234
+
235
+ backup_paradise --chroot
236
+
237
+ ## How do I make use of this project
238
+
239
+ I make use of the **backup_paradise** project to back up relevant
240
+ data on my home system. For example, all source-archives that
241
+ are registered within the **RBT project** I also keep available
242
+ locally. Then there is my ruby code, other files, and possibly
243
+ books, papers and tutorials stored in .pdf format.
244
+
245
+ In **September 2020**, the regular backup size was **54G** per
246
+ backup-action, mostly owing to the source archives (krita
247
+ alone occupies more than 167 MB, for example). This is way too
248
+ much, in my opinion, because it takes about **half an hour**
249
+ or so to back up on USB 2.0 already.
250
+
251
+ I will have to keep reducing file size and removing stuff that
252
+ I no longer need; aka do some clean-up. Or perhaps hope that
253
+ future USB variants will improve things here.
254
+
255
+ At any rate, this subsection shows just a bit how I may use
256
+ the project.
257
+
258
+ My usual go-to alias is:
259
+
260
+ rbackup usb1
261
+
262
+ to backup to the mount point /Mount/USB1.
263
+
264
+ This is the command invocation I tend to use most frequently
265
+ so.
266
+
267
+ ## class BackupParadise::Backup
268
+
269
+ This class is the main interface for the BackupParadise project.
270
+
271
+ For a list of documented options, pass in **--help**.
272
+
273
+ A few examples will be mentioned here as well, in a succinct
274
+ manner:
275
+
276
+ rbackup --pwd # backup into the current working directory
277
+
278
+ ## BackupParadise.simple_backup
279
+
280
+ **BackupParadise.simple_backup** can be used as a simpler alternative
281
+ to class BackupParadise::Backup. While the latter class is very
282
+ feature-rich, sometimes you may want to use
283
+ **BackupParadise.simple_backup()** instead.
284
+
285
+ Usage examples:
286
+
287
+ BackupParadise.simple_backup(:audio, '/Mount/HDD1/')
288
+ BackupParadise.simple_backup(:audio, :usb1)
289
+
290
+ ## Backup time (statistics)
291
+
292
+ This subsection is just a remainder for me how long backing up all
293
+ my dataset (which is a LOT) takes. These times are gathered on
294
+ Linux.
295
+
296
+ Ideally this time should be as small as possible, but evidently,
297
+ the more time that has to be transferred, the longer it will
298
+ take. This refers to about 100 GB or more right now. I am open
299
+ for any suggestions to cut the time down.
300
+
301
+ The measurements happen when there is a low CPU load.
302
+
303
+ 04.06.2021: 39.17 minutes
304
+
305
+ ## GUI components
306
+
307
+ Right now the **GTK3 version** (ruby-gtk3) is the most advanced GUI
308
+ component of this project - but it is still rather limited. The
309
+ primary point of the gtk-widgets for the project is to demonstrate
310
+ what **could** be done: we want to show what is possible, in
311
+ the event that others may want to build upon these ideas.
312
+
313
+ Additionally I am working on **ruby-tk** code as well, just so
314
+ that this project can be used on windows (addendum in August
315
+ 2021: this has been superceded by ruby-libui, which is a LOT
316
+ simpler to use on windows). The priority for ruby-tk is lower
317
+ than that of the ruby-gtk3 code. (In the future, one
318
+ day, we may try to use the same, unified code base for
319
+ GUIs, but this is a minor, additional goal.)
320
+
321
+ Yet another use case is ruby-libui, so in the long run it is
322
+ planned to add at the least three different widget sets,
323
+ as well as "GUIs" for the world wide web, such as via
324
+ <b>sinatra</b>.
325
+
326
+ You can try to invoke the **GUI components** from the commandline,
327
+ possibly via any of the following flags:
328
+
329
+ backup_paradise --gui
330
+ backup_paradise --gtk # This variant now defaults to ruby-gtk3.
331
+
332
+ Or more specifically:
333
+
334
+ backup_paradise --gtk3
335
+
336
+ There used to be gtk2-bindings, but they currently (**May 2021**)
337
+ do not work very well. In **August 2021** I abandoned the ruby-gtk2
338
+ code completely - new GUI code will be written either in ruby-gtk3
339
+ and/or in ruby-libui. ruby-gtk2 is still nice, but ruby-gtk3 allows
340
+ for more flexibility, in particular in regards to **CSS**.
341
+
342
+ In **September 2021** I rewrote the old ruby-gtk3 code. The current
343
+ iteration now looks like this:
344
+
345
+ <img src="https://i.imgur.com/g1dxzAb.png" style="margin-left: 2em">
346
+
347
+ The code base for that class is now largely a module, which I use
348
+ for libui-bindings too. In the long run I would like to have
349
+ ruby-tk and fxruby support as well as for the www (via sinatra
350
+ and .cgi files). Stay tuned in this regard, but don't expect this
351
+ to come too soon.
352
+
353
+ ## Automounting
354
+
355
+ Since as of <b>March 2023</b> it is possible to automount a
356
+ second harddisc (should it exist). This is currently only
357
+ the case when the underlying system is a roebe-system,
358
+ and when the default mount target /Mount/HDD, is NOT
359
+ mounted yet. If this is the case then automounting will
360
+ occur, using a hardcoded command.
361
+
362
+ In the future this may be improved, including automounting
363
+ of USB-devices. This has to be revisited eventually; for
364
+ now the code that was added has to suffice.
365
+
366
+ ## Using the backup_paradise gem on Windows
367
+
368
+ On Linux the code I write in ruby tends to work just fine. On Windows,
369
+ this is a bit more difficult. For instance, Windows does not know
370
+ symlinks in the way that Linux does. I tried this recently in July
371
+ 2023, and had awkward error messages - for instance, if you have
372
+ a directory called <b>C++</b> or <b>Cpp</b> and then symlink to
373
+ it via C++ or Cpp. The C++ symlink in particular led to some oddities
374
+ on windows where I could not copy the whole directory. This was
375
+ very confusing. Removing the symlink suddenly allowd the copy-operation.
376
+ Windows is strange.
377
+
378
+ At any rate, since symlinks are not so useful on windows, and may lead
379
+ to errors, since as of August 2023 the backup_paradise gem will
380
+ remove all symlinks found in the backup-target IF a NTFS file system
381
+ is used. Not everyone may want this behaviour by default, but for my
382
+ use case, I found it to work better. I document this behaviour here
383
+ in the event that other users may want to change this for their own
384
+ use cases.
385
+
386
+ ## Licence
387
+
388
+ Since as of **August 2021** the MIT licence is used for new releases of
389
+ this gem. While the GPL is a fine licence in and by itself, I simply do
390
+ not have the time or willingness to want to enforce it for such a simple
391
+ project like **backup_paradise**. MIT is much simpler to adhere to as
392
+ well, so there we go.
393
+
394
+
395
+ ## Contact information and mandatory 2FA (no longer) coming up in 2022 / 2023
396
+
397
+ If your creative mind has ideas and specific suggestions to make this gem
398
+ more useful in general, feel free to drop me an email at any time, via:
399
+
400
+ shevy@inbox.lt
401
+
402
+ Before that email I used an email account at Google gmail, but in **2021** I
403
+ decided to slowly abandon gmail, for various reasons. In order to limit the
404
+ explanation here, allow me to just briefly state that I do not feel as if I
405
+ want to promote any Google service anymore when the user becomes the end
406
+ product (such as via data collection by upstream services, including other
407
+ proxy-services). My feeling is that this is a hugely flawed business model
408
+ to begin with, and I no longer wish to support this in any way, even if
409
+ only indirectly so, such as by using services of companies that try to
410
+ promote this flawed model.
411
+
412
+ In regards to responding to emails: please keep in mind that responding
413
+ may take some time, depending on the amount of work I may have at that
414
+ moment. So it is not that emails are ignored; it is more that I have not
415
+ (yet) found the time to read and reply. This means there may be a delay
416
+ of days, weeks and in some instances also months. There is, unfortunately,
417
+ not much I can do when I need to prioritise my time investment, but I try
418
+ to consider <b>all</b> feedback as an opportunity to improve my projects
419
+ nonetheless.
420
+
421
+ In <b>2022</b> rubygems.org decided to make 2FA mandatory for every
422
+ gem owner eventually:
423
+
424
+ see
425
+ https://blog.rubygems.org/2022/06/13/making-packages-more-secure.html
426
+
427
+ Mandatory 2FA will eventually be extended to all rubygems.org developers and
428
+ maintainers. As I can not use 2FA, for reasons I will skip explaining here,
429
+ this means that my projects will eventually be removed, as I no longer
430
+ have any control over my projects hosted on rubygems.org (because I
431
+ can not use 2FA).
432
+
433
+ At that point, I no longer have any control what is done to my projects
434
+ since whoever is controlling the gems ecosystem took away our control
435
+ here. I am not sure at which point ruby became corporate-controlled -
436
+ that was not the case several years ago, so something has
437
+ changed.
438
+
439
+ Ruby also only allows 2FA users to participate on the issue tracker these
440
+ days:
441
+
442
+ https://bugs.ruby-lang.org/issues/18800
443
+
444
+ But this has been reverted some months ago, so it is no longer applicable.
445
+ Suffice to say that I do not think that we should only be allowed to
446
+ interact on the world wide web when some 'authority' authenticated us,
447
+ such as via mandatory 2FA, so I hope this won't come back again.
448
+
449
+ Fighting spam is a noble goal, but when it also means you lock out
450
+ real human people then this is definitely NOT a good situation
451
+ to be had.
452
+
@@ -0,0 +1,50 @@
1
+ # =========================================================================== #
2
+ # Gemspec for Project BackupParadise.
3
+ # =========================================================================== #
4
+ require 'backup_paradise/version/version.rb'
5
+ require 'roebe'
6
+
7
+ Gem::Specification.new { |s|
8
+
9
+ s.name = 'backup_paradise'
10
+ s.version = BackupParadise::VERSION
11
+ s.date = Time.now.strftime('%Y-%m-%d')
12
+
13
+ DESCRIPTION = <<-EOF
14
+
15
+ This project can be used for backup-related tasks, although it is
16
+ primarily adjusted to my own personal use cases, so it may not
17
+ be of much use to other ruby users. Still - in the event that someone
18
+ wants to give it a try or re-use existing ideas for inspiration,
19
+ feel free to have a look at it.
20
+
21
+ For more documentation have a look at the official
22
+ homepage, at:
23
+
24
+ https://www.rubydoc.info/gems/backup_paradise/
25
+
26
+ EOF
27
+
28
+ s.summary = DESCRIPTION
29
+ s.description = DESCRIPTION
30
+
31
+ s.executables = Dir['bin/*'].map { |f| File.basename(f) }
32
+
33
+ s.authors = ['Robert A. Heiler']
34
+ s.email = Roebe.email?
35
+ s.files = Dir['**/*']
36
+ s.license = 'MIT'
37
+ s.homepage = 'https://rubygems.org/gems/backup_paradise'
38
+
39
+ s.required_ruby_version = '>= '+Roebe.third_most_stable_version_of_ruby
40
+ s.required_rubygems_version = '>= '+Gem::VERSION
41
+ s.rubygems_version = '>= '+Gem::VERSION
42
+
43
+ s.add_dependency 'colours'
44
+ s.add_dependency 'convert_global_env'
45
+ s.add_dependency 'mountpoints'
46
+ s.add_dependency 'opn'
47
+ s.add_dependency 'roebe'
48
+ s.add_dependency 'save_file'
49
+
50
+ }
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # This file is only for a certain person; it will not be hugely useful
6
+ # for other ruby users of this gem.
7
+ # =========================================================================== #
8
+ require 'backup_paradise/gui/libui/backup_for_ingrid/backup_for_ingrid.rb'
9
+
10
+ BackupParadise::GUI::LibUI::BackupForIngrid.new
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'backup_paradise'
6
+
7
+ BackupParadise::Backup.new(ARGV)
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # This is the variant that should specifically work on windows.
6
+ # =========================================================================== #
7
+ require 'backup_paradise'
8
+
9
+ BackupParadise::Backup.new(ARGV) { :we_are_on_windows }