rustic 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3cffcd950bd1cafc45ac925deed3c4d5ffeed28feecd547f83fbe270b990d8c6
4
- data.tar.gz: aa028fac39c981b0b4a6667dd1d84da19157ff2666a44abe06143c7b8f0473c1
3
+ metadata.gz: '017183aa551297e66ab239513dfce14b59a8a707389b0163cabaf0f708da4e27'
4
+ data.tar.gz: ae2149726fb809ce40d5d0e4f530c1081089de657ac51f8cecb8958f67eb45ea
5
5
  SHA512:
6
- metadata.gz: 4877cbfd5481d617d15cd4a58332516e533f9af4168a9e05e1099edbf0b3572fb087bd01b985958ca77d8f96053bea3c5e660ce545af36d7a26ab2c718f03faa
7
- data.tar.gz: ad3f12c6b8cba8de97544d91481569ccc7dd0152dcdcb53a73f27f0b2b56ffeb70cca5747fc5966d0de093ce4c05e621b95842fc3fae68e60d6a7c6c7fe2c45d
6
+ metadata.gz: 5765e094f7c8a31cab9a2c4db933fff1f221bc31b583442022f40273ba22feb4a6fd972d3ffc294f7806aa218987edce3be52d179aa2febd0f442e5192dd0b81
7
+ data.tar.gz: 47b8ad4c8a29dc02fa26b1d7a3ddc2e63b8e88be796351e2215eed01e5afce3de388fb01466628848dcda62169705824fbb2042984c612584cccdf9454da684f
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rustic (0.3.0)
4
+ rustic (0.3.1)
5
5
  async-process (~> 1.3)
6
6
  ptools (~> 1.4)
7
7
  zeitwerk (~> 2.5)
@@ -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
@@ -9,7 +9,6 @@ class Rustic::Application
9
9
 
10
10
  def run(argv)
11
11
  command = argv.first || "backup"
12
- command, env = Rustic::CommandBuilder.new(command, @config).build
13
- Rustic::Wrapper.new(command, env).run
12
+ Rustic::Evaluator.new(command, @config).evaluate
14
13
  end
15
14
  end
@@ -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 += ["-r", @config.repository]
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
- command_class = Rustic::CommandBuilders.const_get(@command.capitalize)
39
- @args.concat(command_class.new(@config).build)
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
- config = @config.backup_config
10
- raise Rustic::CommandBuilder::MissingConfigError, "Command `backup` misses it's configuration" if config.nil?
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
- *config.paths,
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.backup_config.excluded_paths).flatten
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(config),
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
- def read_data_subset(config)
19
- return nil if config.nil? || config.read_data_subset.nil?
20
- return "--read-data" if config.read_data_subset == 100
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
- config = @config.forget_config
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
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Rustic::CommandBuilders::Prune
4
- def initialize(config)
5
- @config = config
6
- end
4
+ attr_reader :config
5
+
6
+ def initialize(_config) = nil
7
7
 
8
8
  def build
9
9
  ["prune"]
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Rustic::CommandBuilders::Snapshots
4
- def initialize(config)
5
- @config = config
6
- end
4
+ attr_reader :config
5
+
6
+ def initialize(_config) = nil
7
7
 
8
8
  def build
9
9
  ["snapshots"]
@@ -3,11 +3,19 @@
3
3
  class Rustic::Evaluator
4
4
  include Console
5
5
 
6
- def initialize(config) = @config = 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
- backup! unless @config.backup_config.nil?
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.before
6
- @after = config.after
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) # TODO: do not call the after block if an exception was raised
14
+ @after&.call(arg)
15
15
  end
16
16
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rustic
4
- VERSION = "0.3.0"
4
+ VERSION = "0.3.1"
5
5
  end
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.0
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-20 00:00:00.000000000 Z
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: