rustic 0.3.0 → 0.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/{rustic.rb → examples/rustic.rb} +24 -1
- data/lib/rustic/application.rb +1 -2
- data/lib/rustic/command_builder.rb +6 -5
- data/lib/rustic/command_builders/backup.rb +8 -7
- data/lib/rustic/command_builders/check.rb +12 -9
- data/lib/rustic/command_builders/forget.rb +8 -7
- data/lib/rustic/command_builders/prune.rb +3 -3
- data/lib/rustic/command_builders/snapshots.rb +3 -3
- data/lib/rustic/evaluator.rb +10 -10
- data/lib/rustic/hooks.rb +3 -3
- data/lib/rustic/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '017183aa551297e66ab239513dfce14b59a8a707389b0163cabaf0f708da4e27'
|
4
|
+
data.tar.gz: ae2149726fb809ce40d5d0e4f530c1081089de657ac51f8cecb8958f67eb45ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5765e094f7c8a31cab9a2c4db933fff1f221bc31b583442022f40273ba22feb4a6fd972d3ffc294f7806aa218987edce3be52d179aa2febd0f442e5192dd0b81
|
7
|
+
data.tar.gz: 47b8ad4c8a29dc02fa26b1d7a3ddc2e63b8e88be796351e2215eed01e5afce3de388fb01466628848dcda62169705824fbb2042984c612584cccdf9454da684f
|
data/Gemfile.lock
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
require "rustic"
|
5
5
|
|
6
|
-
Rustic.define do
|
6
|
+
Rustic.define do # rubocop:disable Metrics/BlockLength
|
7
7
|
repository "tmp/repository"
|
8
8
|
|
9
9
|
password "password"
|
@@ -27,6 +27,29 @@ Rustic.define do
|
|
27
27
|
exclude "lib/rustic"
|
28
28
|
end
|
29
29
|
|
30
|
+
check do
|
31
|
+
before do
|
32
|
+
logger.info(self, "BEFORE CHECK")
|
33
|
+
end
|
34
|
+
|
35
|
+
after do
|
36
|
+
logger.info(self, "AFTER CHECK")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
forget do
|
41
|
+
before do
|
42
|
+
logger.info(self, "BEFORE FORGET")
|
43
|
+
end
|
44
|
+
|
45
|
+
after do
|
46
|
+
logger.info(self, "AFTER FORGET")
|
47
|
+
end
|
48
|
+
|
49
|
+
prune!
|
50
|
+
keep(last: 2, weekly: 2, monthly: 2)
|
51
|
+
end
|
52
|
+
|
30
53
|
after do
|
31
54
|
logger.info(self, "AFTER")
|
32
55
|
end
|
data/lib/rustic/application.rb
CHANGED
@@ -18,14 +18,14 @@ class Rustic::CommandBuilder
|
|
18
18
|
add_repository_path!
|
19
19
|
add_password!
|
20
20
|
|
21
|
-
add_command!
|
21
|
+
config = add_command!
|
22
22
|
|
23
|
-
[[@config.restic_path, *@args], @env_variables] # TODO: properly handle spaces in paths
|
23
|
+
[[@config.restic_path, *@args], @env_variables, config] # TODO: properly handle spaces in paths
|
24
24
|
end
|
25
25
|
|
26
26
|
private
|
27
27
|
|
28
|
-
def add_repository_path! = @args
|
28
|
+
def add_repository_path! = @args.concat(["-r", @config.repository])
|
29
29
|
|
30
30
|
def add_password!
|
31
31
|
return @env_variables.merge!("RESTIC_PASSWORD" => @config.password) if @config.password
|
@@ -35,8 +35,9 @@ class Rustic::CommandBuilder
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def add_command!
|
38
|
-
|
39
|
-
@args.concat(
|
38
|
+
command_builder = Rustic::CommandBuilders.const_get(@command.capitalize).new(@config)
|
39
|
+
@args.concat(command_builder.build)
|
40
|
+
command_builder.config
|
40
41
|
rescue NameError
|
41
42
|
raise UnknownCommandError, "Unknown command #{@command}"
|
42
43
|
end
|
@@ -1,24 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Rustic::CommandBuilders::Backup
|
4
|
+
attr_reader :config
|
5
|
+
|
4
6
|
def initialize(config)
|
5
|
-
@config = config
|
7
|
+
@config = config.backup_config
|
6
8
|
end
|
7
9
|
|
8
10
|
def build
|
9
|
-
|
10
|
-
raise Rustic::CommandBuilder::
|
11
|
-
raise Rustic::CommandBuilder::MalformedConfigError, "Backup paths cannot be empty" if config.paths.empty?
|
11
|
+
raise Rustic::CommandBuilder::MissingConfigError, "Command `backup` misses it's configuration" if @config.nil?
|
12
|
+
raise Rustic::CommandBuilder::MalformedConfigError, "Backup paths cannot be empty" if @config.paths.empty?
|
12
13
|
|
13
14
|
[
|
14
15
|
"backup",
|
15
|
-
config.one_fs ? "-x" : nil,
|
16
|
-
|
16
|
+
@config.one_fs ? "-x" : nil,
|
17
|
+
*@config.paths,
|
17
18
|
*excludes
|
18
19
|
].compact
|
19
20
|
end
|
20
21
|
|
21
22
|
private
|
22
23
|
|
23
|
-
def excludes = ["--exclude"].product(@config.
|
24
|
+
def excludes = ["--exclude"].product(@config.excluded_paths).flatten
|
24
25
|
end
|
@@ -1,24 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Rustic::CommandBuilders::Check
|
4
|
+
attr_reader :config
|
5
|
+
|
4
6
|
def initialize(config)
|
5
|
-
@config = config
|
7
|
+
@config = config.check_config
|
6
8
|
end
|
7
9
|
|
8
10
|
def build
|
9
|
-
config = @config.check_config
|
10
11
|
[
|
11
12
|
"check",
|
12
|
-
config&.check_unused ? "--check-unused" : nil,
|
13
|
-
read_data_subset
|
14
|
-
config&.with_cache ? "--with-cache" : nil
|
13
|
+
@config&.check_unused ? "--check-unused" : nil,
|
14
|
+
read_data_subset,
|
15
|
+
@config&.with_cache ? "--with-cache" : nil
|
15
16
|
].compact
|
16
17
|
end
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
private
|
20
|
+
|
21
|
+
def read_data_subset
|
22
|
+
return nil if @config.nil? || @config.read_data_subset.nil?
|
23
|
+
return "--read-data" if @config.read_data_subset == 100
|
21
24
|
|
22
|
-
"--read-data-subset=#{config.read_data_subset}%"
|
25
|
+
"--read-data-subset=#{@config.read_data_subset}%"
|
23
26
|
end
|
24
27
|
end
|
@@ -1,20 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Rustic::CommandBuilders::Forget
|
4
|
+
attr_reader :config
|
5
|
+
|
4
6
|
def initialize(config)
|
5
|
-
@config = config
|
7
|
+
@config = config.forget_config
|
6
8
|
end
|
7
9
|
|
8
10
|
def build
|
9
|
-
|
10
|
-
raise Rustic::CommandBuilder::MissingConfigError, "Command `forget` misses it's configuration" if config.nil?
|
11
|
+
raise Rustic::CommandBuilder::MissingConfigError, "Command `forget` misses it's configuration" if @config.nil?
|
11
12
|
|
12
13
|
[
|
13
14
|
"forget",
|
14
|
-
config.keep_last ? "--keep-last=#{config.keep_last}" : nil,
|
15
|
-
config.keep_weekly ? "--keep-weekly=#{config.keep_weekly}" : nil,
|
16
|
-
config.keep_monthly ? "--keep-monthly=#{config.keep_monthly}" : nil,
|
17
|
-
config.prune ? "--prune" : nil
|
15
|
+
@config.keep_last ? "--keep-last=#{@config.keep_last}" : nil,
|
16
|
+
@config.keep_weekly ? "--keep-weekly=#{@config.keep_weekly}" : nil,
|
17
|
+
@config.keep_monthly ? "--keep-monthly=#{@config.keep_monthly}" : nil,
|
18
|
+
@config.prune ? "--prune" : nil
|
18
19
|
].compact
|
19
20
|
end
|
20
21
|
end
|
data/lib/rustic/evaluator.rb
CHANGED
@@ -3,11 +3,19 @@
|
|
3
3
|
class Rustic::Evaluator
|
4
4
|
include Console
|
5
5
|
|
6
|
-
def initialize(config)
|
6
|
+
def initialize(command, config)
|
7
|
+
@command = command
|
8
|
+
@config = config
|
9
|
+
end
|
7
10
|
|
8
11
|
def evaluate
|
9
12
|
with_hooks(@config) do
|
10
|
-
|
13
|
+
builder = Rustic::CommandBuilder.new(@command, @config)
|
14
|
+
command, env, config = builder.build
|
15
|
+
|
16
|
+
with_hooks(config) do
|
17
|
+
Rustic::Wrapper.new(command, env).run
|
18
|
+
end
|
11
19
|
end
|
12
20
|
rescue StandardError => e
|
13
21
|
on_error(e)
|
@@ -15,13 +23,5 @@ class Rustic::Evaluator
|
|
15
23
|
end
|
16
24
|
|
17
25
|
def on_error(error) = @config.on_error&.call(error)
|
18
|
-
|
19
|
-
def backup!
|
20
|
-
with_hooks(@config.backup_config) do
|
21
|
-
command, env = Rustic::CommandBuilder.new("backup", @config).build
|
22
|
-
Rustic::Wrapper.new(command, env).run
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
26
|
def with_hooks(config, args = nil, &block) = Rustic::Hooks.new(config).with_hooks(args, &block)
|
27
27
|
end
|
data/lib/rustic/hooks.rb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
class Rustic::Hooks
|
4
4
|
def initialize(config)
|
5
|
-
@before = config
|
6
|
-
@after = config
|
5
|
+
@before = config&.before
|
6
|
+
@after = config&.after
|
7
7
|
end
|
8
8
|
|
9
9
|
def with_hooks(arg = nil)
|
@@ -11,6 +11,6 @@ class Rustic::Hooks
|
|
11
11
|
|
12
12
|
@before&.call(arg)
|
13
13
|
yield
|
14
|
-
@after&.call(arg)
|
14
|
+
@after&.call(arg)
|
15
15
|
end
|
16
16
|
end
|
data/lib/rustic/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rustic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gleb Sinyavskiy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async-process
|
@@ -73,6 +73,7 @@ files:
|
|
73
73
|
- Rakefile
|
74
74
|
- bin/console
|
75
75
|
- bin/setup
|
76
|
+
- examples/rustic.rb
|
76
77
|
- lib/rustic.rb
|
77
78
|
- lib/rustic/application.rb
|
78
79
|
- lib/rustic/command_builder.rb
|
@@ -92,7 +93,6 @@ files:
|
|
92
93
|
- lib/rustic/version.rb
|
93
94
|
- lib/rustic/wrapper.rb
|
94
95
|
- rustic.gemspec
|
95
|
-
- rustic.rb
|
96
96
|
- rustic_script.rb
|
97
97
|
homepage: https://github.com/zhulik/rustic
|
98
98
|
licenses:
|