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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d57694762f369b51254410b1275d131512d6ee485a7ead16ad8287e8ace819a5
4
- data.tar.gz: 1adbdc9c1b0340d42c9c226b6ea6a7b82fb1954b6fb280cbf8e8f1b8778e8712
3
+ metadata.gz: b42150430f655e38f3b1c525f8a69e44131f0172d284caa86a9877797d347668
4
+ data.tar.gz: '05964dc0d64be2f97cdeb94644a7f54a96e543f904c6f71e2f392af9256ad24b'
5
5
  SHA512:
6
- metadata.gz: dcd1c969e89bc5224b898acc9081ed95e9ce5cddd14ef4a7c26cf56d68e07f864a61ac948d69c76d61dc0c7a50a2ade1ec41ab7b39a9704c27fe96dfe1331a6e
7
- data.tar.gz: aa87c276ff2bbc72c0b5fe3e8e0fd14c820b9afa2917f531dadc5e965c529303365940c01bb35f7666e93b3737c304e21c94fcd29321ec27570124628d9a5507
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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- master_delivery (1.0.5)
4
+ master_delivery (1.0.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -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
- master = @params[:master]
93
- md = MasterDelivery.new(File.dirname(master), @params[:backup])
94
- arg_set = [File.basename(master), @params[:delivery]]
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(*arg_set, **@params.slice(:type, :dryrun))
98
- puts 'done!' unless @params[:quiet]
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
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MasterDelivery
4
- VERSION = '1.0.5'
4
+ VERSION = '1.0.6'
5
5
  DESCRIPTION = <<~DESC
6
6
  Deliver all master files managed in a single master snapshot directory
7
7
  into the specified directory while maintaining the hierarchy of the
@@ -38,7 +38,7 @@ module MasterDelivery
38
38
 
39
39
  # @param master_id [String] Top directory name of master
40
40
  #
41
- # @param target_prefix [String] Files will be delivered to this prefix location.
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
- # target_prefix: /Users/xxx/yyy
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
- # target_prefix: (empty)
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(master_id, target_prefix, type: :symbolic_link, dryrun: false)
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
- master_files(master_id).each do |master|
67
- tfile = move_to_backup(master, utils, master_id, target_prefix, backup_dir)
68
- deliver_to_target(master, utils, tfile, type)
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(master_id, target_prefix, params)
76
+ def confirm(basics, params)
75
77
  unless params[:quiet]
76
78
  puts MSG_CONFIRMATION_INTRO unless params[:yes]
77
- print_params(master_id, target_prefix, params.slice(:type, :dryrun))
78
- print_sample(master_id, target_prefix)
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, master_id, target_prefix, backup_dir)
91
- backupfiledir = File.dirname(backup_file_path(master, master_id, backup_dir))
92
- utils.mkdir_p(backupfiledir)
93
- tfile = target_file_path(master, master_id, target_prefix)
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(master_id, target_prefix, 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(target_prefix)}\n"
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(master_id, target_prefix)
122
- mfiles = master_files(master_id)
123
- sample_target = target_file_path(mfiles[0], master_id, target_prefix)
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, master_id, target_prefix)
156
- path = relative_master_path(master, master_id).prepend(File.expand_path(target_prefix))
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.5
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-03 00:00:00.000000000 Z
11
+ date: 2020-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler