backup_paradise 1.3.5

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.
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 }