master_delivery 1.0.5 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/Gemfile.lock +1 -1
- data/lib/cli_master_delivery.rb +18 -7
- data/lib/master_delivery/version.rb +1 -1
- data/lib/master_delivery.rb +34 -32
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b42150430f655e38f3b1c525f8a69e44131f0172d284caa86a9877797d347668
|
4
|
+
data.tar.gz: '05964dc0d64be2f97cdeb94644a7f54a96e543f904c6f71e2f392af9256ad24b'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bae487838a7e4a204bcac6defefe30d2f52e3e9491938af723cd2d0b434fe129eb830ed0029d13f23f71ee1eac35d660cac2333ddf4755e7674b9ff4acb04345
|
7
|
+
data.tar.gz: f6f964a1d3a613e9b8a5c4eeb985b065694dd46de861e81a273180e364d787acf573417e160009184aaccbc6f60bf67648a80515d73c1ca90c38e2375e306eb5
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [v1.0.6](https://github.com/shinyaohtani/master_delivery/tree/v1.0.6) (2020-05-06)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/shinyaohtani/master_delivery/compare/v1.0.5...v1.0.6)
|
6
|
+
|
7
|
+
- Verbose mode has been introduced to trace delivery commands!
|
8
|
+
|
9
|
+
|
10
|
+
**Implemented enhancements:**
|
11
|
+
|
12
|
+
- Option to carefully trace delivery commands one by one [\#5](https://github.com/shinyaohtani/master_delivery/issues/5)
|
13
|
+
|
14
|
+
**Merged pull requests:**
|
15
|
+
|
16
|
+
- Feature/\#5 trace delivery commands [\#23](https://github.com/shinyaohtani/master_delivery/pull/23) ([shinyaohtani](https://github.com/shinyaohtani))
|
17
|
+
|
3
18
|
## [v1.0.5](https://github.com/shinyaohtani/master_delivery/tree/v1.0.5) (2020-05-03)
|
4
19
|
|
5
20
|
[Full Changelog](https://github.com/shinyaohtani/master_delivery/compare/v1.0.4...v1.0.5)
|
data/Gemfile.lock
CHANGED
data/lib/cli_master_delivery.rb
CHANGED
@@ -44,6 +44,11 @@ module MasterDelivery
|
|
44
44
|
Suppress non-error messages
|
45
45
|
(default: --no-quiet)
|
46
46
|
QUIET
|
47
|
+
DESC_VERBOSE = <<~VERBOSE
|
48
|
+
Process actual commands for file operations, such as
|
49
|
+
moving files and creating folders, one by one.
|
50
|
+
(default: --no-verbose)
|
51
|
+
VERBOSE
|
47
52
|
DESC_SKIP_CONF = <<~SKIP_CONF
|
48
53
|
Skip confirmation. It is recommended to execute
|
49
54
|
the command carefully without skipping confirmation.
|
@@ -89,17 +94,23 @@ module MasterDelivery
|
|
89
94
|
return unless check_param_consistency
|
90
95
|
|
91
96
|
fix_param_paths(%i[master delivery backup])
|
92
|
-
|
93
|
-
md = MasterDelivery.new(
|
94
|
-
|
95
|
-
return unless md.confirm(*arg_set, @params.slice(:type, :quiet, :dryrun, :yes))
|
97
|
+
basics = delivery_basics
|
98
|
+
md = MasterDelivery.new(basics[:master_dir], basics[:backup_root])
|
99
|
+
return unless md.confirm(basics, @params.slice(:type, :quiet, :dryrun, :yes))
|
96
100
|
|
97
|
-
md.deliver(
|
98
|
-
puts
|
101
|
+
mfiles, _tmpdir = md.deliver(basics, **@params.slice(:type, :dryrun, :verbose))
|
102
|
+
puts "done! (#{mfiles.size} master files are delivered.)" unless @params[:quiet]
|
99
103
|
end
|
100
104
|
|
101
105
|
private
|
102
106
|
|
107
|
+
def delivery_basics
|
108
|
+
{ master_dir: File.dirname(@params[:master]),
|
109
|
+
master_id: File.basename(@params[:master]),
|
110
|
+
delivery_root: @params[:delivery],
|
111
|
+
backup_root: @params[:backup] }
|
112
|
+
end
|
113
|
+
|
103
114
|
def define_options(opts) # rubocop:disable Metrics/AbcSize
|
104
115
|
opts.version = VERSION
|
105
116
|
opts.separator ' Required:'
|
@@ -111,10 +122,10 @@ module MasterDelivery
|
|
111
122
|
opts.on('-b [BACKUP_ROOT]', '--backup [BACKUP_ROOT]', *DESC_BACKUP_ROOT.split(/\R/)) { |v| v }
|
112
123
|
opts.on('-D', '--[no-]dryrun', *DESC_DRYRUN.split(/\R/)) { |v| v }
|
113
124
|
opts.on('-q', '--[no-]quiet', *DESC_QUIET.split(/\R/)) { |v| v }
|
125
|
+
opts.on('-v', '--[no-]verbose', *DESC_VERBOSE.split(/\R/)) { |v| v }
|
114
126
|
opts.on('-y', '--[no-]yes', *DESC_SKIP_CONF.split(/\R/)) { |v| v }
|
115
127
|
opts.separator ''
|
116
128
|
opts.separator ' Common options:'
|
117
|
-
# opts.on('-v', '--verbose', 'Verbose mode. default: no') { |v| v }
|
118
129
|
opts.on_tail('-h', '--help', 'Show this message') do
|
119
130
|
puts opts
|
120
131
|
exit
|
data/lib/master_delivery.rb
CHANGED
@@ -38,7 +38,7 @@ module MasterDelivery
|
|
38
38
|
|
39
39
|
# @param master_id [String] Top directory name of master
|
40
40
|
#
|
41
|
-
# @param
|
41
|
+
# @param delivery_root [String] Files will be delivered to this prefix location.
|
42
42
|
# If this prefix is empty, it will be placed in the root directory.
|
43
43
|
# This mechanism saves you from having to unnecessarily deepen the directory
|
44
44
|
# hierarchy under master_id.
|
@@ -46,36 +46,38 @@ module MasterDelivery
|
|
46
46
|
# Example of prefix
|
47
47
|
# master_id: MID
|
48
48
|
# master: $master_root/MID/a/b/readme.md
|
49
|
-
#
|
49
|
+
# delivery_root: /Users/xxx/yyy
|
50
50
|
# delivery: /Users/xxx/yyy/a/b/readme.md
|
51
51
|
#
|
52
52
|
# Example of no-prefix
|
53
53
|
# master_id: MID
|
54
54
|
# master: $master_root/MID/a/b/readme.md
|
55
|
-
#
|
55
|
+
# delivery_root: (empty)
|
56
56
|
# delivery: /a/b/readme.md
|
57
57
|
#
|
58
58
|
# @param type [symbol] only link (:symbolic_link) or copy master (:regular_file)
|
59
59
|
# @param dryrun [boolean] if set this false, FileUtils::DryRun will be used.
|
60
60
|
# note: Even if dryrun: true, @backup_dir is actually created! (for name-consistency)
|
61
|
-
def deliver(
|
61
|
+
def deliver(basics, type: :symbolic_link, dryrun: false, verbose: false)
|
62
62
|
FileUtils.mkdir_p(@backup_root)
|
63
63
|
utils = dryrun ? FileUtils::DryRun : FileUtils
|
64
64
|
|
65
|
-
backup_dir = Dir.mktmpdir("#{master_id}-original-", @backup_root)
|
66
|
-
|
67
|
-
|
68
|
-
|
65
|
+
backup_dir = Dir.mktmpdir("#{basics[:master_id]}-original-", @backup_root)
|
66
|
+
puts "mkdir -p #{backup_dir}" if verbose
|
67
|
+
mfiles = master_files(basics[:master_id])
|
68
|
+
mfiles.each do |master|
|
69
|
+
tfile = move_to_backup(master, utils, basics, backup_dir, verbose)
|
70
|
+
deliver_to_target(master, utils, tfile, type, verbose)
|
69
71
|
end
|
70
|
-
backup_dir
|
72
|
+
[mfiles, backup_dir]
|
71
73
|
end
|
72
74
|
|
73
75
|
# @param params [Hash] :type, :dryrun, :yes, :quiet
|
74
|
-
def confirm(
|
76
|
+
def confirm(basics, params)
|
75
77
|
unless params[:quiet]
|
76
78
|
puts MSG_CONFIRMATION_INTRO unless params[:yes]
|
77
|
-
print_params(
|
78
|
-
print_sample(
|
79
|
+
print_params(basics, params.slice(:type, :dryrun))
|
80
|
+
print_sample(basics)
|
79
81
|
end
|
80
82
|
print MSG_CONFIRMATION.chomp unless params[:yes] # use print instead of puts for '\n'
|
81
83
|
return true if params[:yes] || gets.chomp == 'y'
|
@@ -87,42 +89,42 @@ module MasterDelivery
|
|
87
89
|
private
|
88
90
|
|
89
91
|
# Move a master file currently used to backup/
|
90
|
-
def move_to_backup(master, utils,
|
91
|
-
backupfiledir = File.dirname(backup_file_path(master, master_id, backup_dir))
|
92
|
-
utils.mkdir_p(backupfiledir)
|
93
|
-
tfile = target_file_path(master,
|
94
|
-
utils.mv(tfile, backupfiledir, force: true)
|
92
|
+
def move_to_backup(master, utils, basics, backup_dir, verbose)
|
93
|
+
backupfiledir = File.dirname(backup_file_path(master, basics[:master_id], backup_dir))
|
94
|
+
utils.mkdir_p(backupfiledir, verbose: verbose)
|
95
|
+
tfile = target_file_path(master, basics)
|
96
|
+
utils.mv(tfile, backupfiledir, force: true, verbose: verbose)
|
95
97
|
tfile
|
96
98
|
end
|
97
99
|
|
98
100
|
# Deliver a link to a master (or a copy of a master) in the appropriate directory
|
99
|
-
def deliver_to_target(master, utils, tfile, type)
|
101
|
+
def deliver_to_target(master, utils, tfile, type, verbose)
|
100
102
|
tfiledir = File.dirname(tfile)
|
101
|
-
utils.mkdir_p(tfiledir)
|
103
|
+
utils.mkdir_p(tfiledir, verbose: verbose)
|
102
104
|
case type
|
103
105
|
when :symbolic_link
|
104
|
-
utils.ln_s(master, tfiledir)
|
106
|
+
utils.ln_s(master, tfiledir, verbose: verbose)
|
105
107
|
when :regular_file
|
106
|
-
utils.cp(master, tfiledir)
|
108
|
+
utils.cp(master, tfiledir, verbose: verbose)
|
107
109
|
end
|
108
110
|
end
|
109
111
|
|
110
112
|
# @param params [Hash] :type, :dryrun
|
111
|
-
def print_params(
|
112
|
-
mfiles = master_files(master_id)
|
113
|
-
msg = "(-m) MASTER_DIR: -m #{@master_root}/#{master_id} (#{mfiles.size} master files)\n"
|
114
|
-
msg += "(-d) DELIVER_ROOT: -d #{File.expand_path(
|
113
|
+
def print_params(basics, params)
|
114
|
+
mfiles = master_files(basics[:master_id])
|
115
|
+
msg = "(-m) MASTER_DIR: -m #{@master_root}/#{basics[:master_id]} (#{mfiles.size} master files)\n"
|
116
|
+
msg += "(-d) DELIVER_ROOT: -d #{File.expand_path(basics[:delivery_root])}\n"
|
115
117
|
msg += "(-t) DELIVER_TYPE: -t #{params[:type]}\n"
|
116
118
|
msg += "(-b) BACKUP_ROOT: -b #{@backup_root}\n"
|
117
119
|
msg += "(-D) DRYRUN: #{params[:dryrun] ? '--dryrun' : '--no-dryrun'}\n"
|
118
120
|
puts msg
|
119
121
|
end
|
120
122
|
|
121
|
-
def print_sample(
|
122
|
-
mfiles = master_files(master_id)
|
123
|
-
sample_target = target_file_path(mfiles[0],
|
124
|
-
sample_backup = backup_file_path(mfiles[0], master_id,
|
125
|
-
@backup_root + "/#{master_id}-original-XXXX")
|
123
|
+
def print_sample(basics)
|
124
|
+
mfiles = master_files(basics[:master_id])
|
125
|
+
sample_target = target_file_path(mfiles[0], basics)
|
126
|
+
sample_backup = backup_file_path(mfiles[0], basics[:master_id],
|
127
|
+
@backup_root + "/#{basics[:master_id]}-original-XXXX")
|
126
128
|
puts <<~SAMPLE
|
127
129
|
|
128
130
|
Sample (from #{mfiles.size} master files):
|
@@ -152,8 +154,8 @@ module MasterDelivery
|
|
152
154
|
Pathname.new(path).cleanpath.to_s
|
153
155
|
end
|
154
156
|
|
155
|
-
def target_file_path(master,
|
156
|
-
path = relative_master_path(master, master_id).prepend(File.expand_path(
|
157
|
+
def target_file_path(master, basics)
|
158
|
+
path = relative_master_path(master, basics[:master_id]).prepend(File.expand_path(basics[:delivery_root]))
|
157
159
|
Pathname.new(path).cleanpath.to_s
|
158
160
|
end
|
159
161
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: master_delivery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shinya Ohtani (shinyaohtani@github)
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|