multisync 0.3.6 → 0.4.0
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/.standard.yml +3 -0
- data/{History.md → CHANGELOG.md} +73 -12
- data/LICENSE.txt +1 -1
- data/README.md +14 -11
- data/Rakefile +9 -1
- data/exe/multisync +2 -2
- data/lib/multisync/catalog.rb +10 -13
- data/lib/multisync/cli.rb +60 -88
- data/lib/multisync/colors.rb +23 -0
- data/lib/multisync/definition/dsl.rb +19 -21
- data/lib/multisync/definition/entity.rb +34 -47
- data/lib/multisync/definition/null.rb +11 -13
- data/lib/multisync/definition/template.rb +8 -9
- data/lib/multisync/definition.rb +5 -6
- data/lib/multisync/list.rb +29 -26
- data/lib/multisync/rsync_stat.rb +89 -48
- data/lib/multisync/runtime.rb +43 -48
- data/lib/multisync/selector.rb +44 -22
- data/lib/multisync/summary.rb +56 -21
- data/lib/multisync/version.rb +3 -1
- data/lib/multisync.rb +14 -9
- data/sample/multisync.rb +10 -18
- metadata +12 -59
- data/.gitignore +0 -13
- data/Gemfile +0 -5
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/multisync.gemspec +0 -45
data/lib/multisync.rb
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "multisync/version"
|
|
2
4
|
|
|
3
5
|
module Multisync
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
autoload :
|
|
7
|
-
autoload :
|
|
8
|
-
autoload :
|
|
9
|
-
autoload :
|
|
10
|
-
autoload :
|
|
11
|
-
autoload :
|
|
6
|
+
class Error < StandardError; end
|
|
7
|
+
|
|
8
|
+
autoload :Cli, "multisync/cli"
|
|
9
|
+
autoload :Colors, "multisync/colors"
|
|
10
|
+
autoload :Definition, "multisync/definition"
|
|
11
|
+
autoload :Catalog, "multisync/catalog"
|
|
12
|
+
autoload :Selector, "multisync/selector"
|
|
13
|
+
autoload :Runtime, "multisync/runtime"
|
|
14
|
+
autoload :RsyncStat, "multisync/rsync_stat"
|
|
15
|
+
autoload :Summary, "multisync/summary"
|
|
16
|
+
autoload :List, "multisync/list"
|
|
12
17
|
end
|
data/sample/multisync.rb
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# Choose one of the section A), B) or C) as a starting point
|
|
3
3
|
# to adjust the configuration to your needs.
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
################################################################################
|
|
7
6
|
|
|
8
7
|
# A) Simple rsync task
|
|
@@ -10,26 +9,24 @@
|
|
|
10
9
|
sync :simple do
|
|
11
10
|
from "~/Documents"
|
|
12
11
|
to "/PathToExternalDisk"
|
|
13
|
-
options %w
|
|
12
|
+
options %w[--archive --exclude=.DS_Store] # as array
|
|
14
13
|
end
|
|
15
14
|
|
|
16
15
|
# This task can be run with: "multisync simple"
|
|
17
16
|
|
|
18
|
-
|
|
19
17
|
################################################################################
|
|
20
18
|
|
|
21
19
|
# B) Group of rsync tasks
|
|
22
20
|
|
|
23
21
|
group :userdata do
|
|
24
|
-
|
|
25
22
|
# Define the target path for the whole group and check the existance of the
|
|
26
23
|
# target path before running the rsync task.
|
|
27
24
|
# Also set an optional description for the target.
|
|
28
25
|
to "/PathToExternalDisk", description: "External HD", check: true
|
|
29
26
|
|
|
30
27
|
# Define rsync options for the whole group
|
|
31
|
-
options %w
|
|
32
|
-
|
|
28
|
+
options %w[--archive --exclude=.DS_Store]
|
|
29
|
+
|
|
33
30
|
sync :desktop do
|
|
34
31
|
# With optional description of the source
|
|
35
32
|
from "~/Desktop", description: "Desktop"
|
|
@@ -42,28 +39,25 @@ group :userdata do
|
|
|
42
39
|
sync :downloads do
|
|
43
40
|
from "~/Downloads", description: "Downloads"
|
|
44
41
|
# Add options specific to this task.
|
|
45
|
-
options %w
|
|
42
|
+
options %w[--exclude='*.download']
|
|
46
43
|
end
|
|
47
44
|
end
|
|
48
45
|
|
|
49
46
|
# Run the whole group with: "multisync userdata"
|
|
50
47
|
# Run a single taks with: "multisync userdata/downloads"
|
|
51
48
|
|
|
52
|
-
|
|
53
49
|
################################################################################
|
|
54
50
|
|
|
55
51
|
# C) Real world example using templates, defaults and options override
|
|
56
52
|
|
|
57
53
|
# rsync options for all tasks
|
|
58
|
-
options %w
|
|
59
|
-
|
|
54
|
+
options %w[--archive --delete --delete-excluded --delete-after --exclude=.DS_Store --exclude=.localized]
|
|
60
55
|
|
|
61
56
|
# Use templates to define a set of tasks that can be included later
|
|
62
57
|
template :data do
|
|
63
|
-
|
|
64
58
|
# Always check the existance of the source path
|
|
65
59
|
check_from true
|
|
66
|
-
|
|
60
|
+
|
|
67
61
|
# rsync tasks with uncomplete arguments:
|
|
68
62
|
# Define the target later where the template will be included.
|
|
69
63
|
# This can be used to sync multiple directories to different remote locations.
|
|
@@ -78,26 +72,25 @@ template :data do
|
|
|
78
72
|
sync :downloads do
|
|
79
73
|
from "~/Downloads", description: "Downloads"
|
|
80
74
|
# Don't merge options
|
|
81
|
-
options %w
|
|
75
|
+
options %w[--times --exclude='*.download'], :override
|
|
82
76
|
end
|
|
83
77
|
end
|
|
84
78
|
|
|
85
|
-
|
|
86
79
|
group :hd do
|
|
87
80
|
# Uncomment the following line to run this group by default
|
|
88
81
|
# default
|
|
89
|
-
|
|
82
|
+
|
|
90
83
|
# Define the target to be used by all tasks.
|
|
91
84
|
# The existance of the target path should be checked.
|
|
92
85
|
to "/TargetPathToBackupDisk/MyComputer", description: "External Disk", check: true
|
|
93
|
-
|
|
86
|
+
|
|
94
87
|
# Include the template with the task definitions
|
|
95
88
|
include :data
|
|
96
89
|
end
|
|
97
90
|
|
|
98
91
|
group :nas do
|
|
99
92
|
to "user@nas.local:/data/backup/my_computer", description: "NAS", check: true
|
|
100
|
-
|
|
93
|
+
|
|
101
94
|
# Include the template with the task definitions
|
|
102
95
|
include :data
|
|
103
96
|
end
|
|
@@ -106,7 +99,6 @@ end
|
|
|
106
99
|
# Sync "desktop" to "hd" and "nas": "multisync desktop"
|
|
107
100
|
# Sync "desktop" to "hd" only: "multisync hd/desktop"
|
|
108
101
|
|
|
109
|
-
|
|
110
102
|
################################################################################
|
|
111
103
|
|
|
112
104
|
# Additional notes
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: multisync
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Patrick Marchi
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2025-11-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: mixlib-shellout
|
|
@@ -67,62 +66,20 @@ dependencies:
|
|
|
67
66
|
- !ruby/object:Gem::Version
|
|
68
67
|
version: '0'
|
|
69
68
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
69
|
+
name: thor
|
|
71
70
|
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - "~>"
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '1.16'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - "~>"
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '1.16'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: rake
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - "~>"
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '10.0'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - "~>"
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '10.0'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: rspec
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - ">="
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0'
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
71
|
requirements:
|
|
108
72
|
- - ">="
|
|
109
73
|
- !ruby/object:Gem::Version
|
|
110
74
|
version: '0'
|
|
111
|
-
|
|
112
|
-
name: pry
|
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
|
114
|
-
requirements:
|
|
115
|
-
- - ">="
|
|
116
|
-
- !ruby/object:Gem::Version
|
|
117
|
-
version: '0'
|
|
118
|
-
type: :development
|
|
75
|
+
type: :runtime
|
|
119
76
|
prerelease: false
|
|
120
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
78
|
requirements:
|
|
122
79
|
- - ">="
|
|
123
80
|
- !ruby/object:Gem::Version
|
|
124
81
|
version: '0'
|
|
125
|
-
description:
|
|
82
|
+
description: A DSL to organize sets of rsync tasks.
|
|
126
83
|
email:
|
|
127
84
|
- mail@patrickmarchi.ch
|
|
128
85
|
executables:
|
|
@@ -130,19 +87,17 @@ executables:
|
|
|
130
87
|
extensions: []
|
|
131
88
|
extra_rdoc_files: []
|
|
132
89
|
files:
|
|
133
|
-
- ".gitignore"
|
|
134
90
|
- ".rspec"
|
|
135
|
-
-
|
|
136
|
-
-
|
|
91
|
+
- ".standard.yml"
|
|
92
|
+
- CHANGELOG.md
|
|
137
93
|
- LICENSE.txt
|
|
138
94
|
- README.md
|
|
139
95
|
- Rakefile
|
|
140
|
-
- bin/console
|
|
141
|
-
- bin/setup
|
|
142
96
|
- exe/multisync
|
|
143
97
|
- lib/multisync.rb
|
|
144
98
|
- lib/multisync/catalog.rb
|
|
145
99
|
- lib/multisync/cli.rb
|
|
100
|
+
- lib/multisync/colors.rb
|
|
146
101
|
- lib/multisync/definition.rb
|
|
147
102
|
- lib/multisync/definition/dsl.rb
|
|
148
103
|
- lib/multisync/definition/entity.rb
|
|
@@ -154,7 +109,6 @@ files:
|
|
|
154
109
|
- lib/multisync/selector.rb
|
|
155
110
|
- lib/multisync/summary.rb
|
|
156
111
|
- lib/multisync/version.rb
|
|
157
|
-
- multisync.gemspec
|
|
158
112
|
- sample/multisync.rb
|
|
159
113
|
homepage: https://github.com/pmarchi/multisync
|
|
160
114
|
licenses:
|
|
@@ -163,7 +117,7 @@ metadata:
|
|
|
163
117
|
allowed_push_host: https://rubygems.org
|
|
164
118
|
homepage_uri: https://github.com/pmarchi/multisync
|
|
165
119
|
source_code_uri: https://github.com/pmarchi/multisync
|
|
166
|
-
|
|
120
|
+
changelog_uri: https://github.com/pmarchi/multisync/blob/master/CHANGELOG.md
|
|
167
121
|
rdoc_options: []
|
|
168
122
|
require_paths:
|
|
169
123
|
- lib
|
|
@@ -171,15 +125,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
171
125
|
requirements:
|
|
172
126
|
- - ">="
|
|
173
127
|
- !ruby/object:Gem::Version
|
|
174
|
-
version:
|
|
128
|
+
version: 3.1.0
|
|
175
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
176
130
|
requirements:
|
|
177
131
|
- - ">="
|
|
178
132
|
- !ruby/object:Gem::Version
|
|
179
133
|
version: '0'
|
|
180
134
|
requirements: []
|
|
181
|
-
rubygems_version: 3.
|
|
182
|
-
signing_key:
|
|
135
|
+
rubygems_version: 3.6.6
|
|
183
136
|
specification_version: 4
|
|
184
|
-
summary:
|
|
137
|
+
summary: multisync-0.4.0
|
|
185
138
|
test_files: []
|
data/.gitignore
DELETED
data/Gemfile
DELETED
data/bin/console
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require "bundler/setup"
|
|
4
|
-
require "multisync"
|
|
5
|
-
|
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
-
|
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
-
require "pry"
|
|
11
|
-
Pry.start
|
|
12
|
-
|
|
13
|
-
# require "irb"
|
|
14
|
-
# IRB.start(__FILE__)
|
data/bin/setup
DELETED
data/multisync.gemspec
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
lib = File.expand_path("../lib", __FILE__)
|
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
-
require "multisync/version"
|
|
4
|
-
|
|
5
|
-
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name = "multisync"
|
|
7
|
-
spec.version = Multisync::VERSION
|
|
8
|
-
spec.authors = ["Patrick Marchi"]
|
|
9
|
-
spec.email = ["mail@patrickmarchi.ch"]
|
|
10
|
-
|
|
11
|
-
spec.summary = %q{DSL for rsync.}
|
|
12
|
-
spec.description = %q{Multisync offers a DSL to organize sets of rsync tasks.}
|
|
13
|
-
spec.homepage = "https://github.com/pmarchi/multisync"
|
|
14
|
-
spec.license = "MIT"
|
|
15
|
-
|
|
16
|
-
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
|
17
|
-
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
|
18
|
-
if spec.respond_to?(:metadata)
|
|
19
|
-
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
|
20
|
-
|
|
21
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
|
22
|
-
spec.metadata["source_code_uri"] = "https://github.com/pmarchi/multisync"
|
|
23
|
-
# spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
|
24
|
-
else
|
|
25
|
-
raise "RubyGems 2.0 or newer is required to protect against " \
|
|
26
|
-
"public gem pushes."
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
30
|
-
f.match(%r{^(test|spec|features)/})
|
|
31
|
-
end
|
|
32
|
-
spec.bindir = "exe"
|
|
33
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
34
|
-
spec.require_paths = ["lib"]
|
|
35
|
-
|
|
36
|
-
spec.add_dependency "mixlib-shellout"
|
|
37
|
-
spec.add_dependency "filesize"
|
|
38
|
-
spec.add_dependency "rainbow"
|
|
39
|
-
spec.add_dependency "terminal-table"
|
|
40
|
-
|
|
41
|
-
spec.add_development_dependency "bundler", "~> 1.16"
|
|
42
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
|
43
|
-
spec.add_development_dependency "rspec"
|
|
44
|
-
spec.add_development_dependency "pry"
|
|
45
|
-
end
|