master_delivery 1.0.5 → 1.0.6
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/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
|