vim_printer 0.1.8 → 0.1.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cf94e1504753731437a2895e6a335a7df773c1fb
4
- data.tar.gz: 3573098d508d822a609f978e6f9596c1e1fc8bc6
3
+ metadata.gz: 5db6c8f84609703178fb48f9917034197fe3a0f3
4
+ data.tar.gz: 7e764609c4a0860849ac65cfb9e57e2195886439
5
5
  SHA512:
6
- metadata.gz: 7c092273c740770e119028ad783c4a0eaed523fd167ccf3bd73c67c02b03cf22c63f398b5ef9dd1170a29f4fc61a5be3d11ae92481db7d3e3615634897d1925c
7
- data.tar.gz: b1295ce482b28db558fab1ab11340b6b3c5c8d56d8e1500c2309b8cef8504718c57ffa5efdc234568ab2bff5874f3c01b9f5a440065261e7d01f3b52e69ec435
6
+ metadata.gz: ee03cbf46d41b1e06a9d3d0c92532471f663de84fd06c038f72872e64c75d84a2078d0305a349c466895a486c065ae842d621f54a7c344b3f9a3d74f46fb3556
7
+ data.tar.gz: 38485f6aec3fd9f5340804b71fcb9d370c258bc4ab6d07d6dd7adeb015abde08319912042f59a0d1b9d8ad29c9db6e9f13c810cbe53bc7efc6afca38ea200c73
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ### Changelog
2
2
 
3
+ #### 0.1.9
4
+
5
+ - Add advance `--shell_command` option to get the input file list from the the shell command [New]
6
+
3
7
  #### 0.1.8
4
8
 
5
9
  - Add `configuration.rb` for easy customization of options to `:TOhtml` [New]
data/README.md CHANGED
@@ -155,7 +155,11 @@ Options:
155
155
  # Default: 'default'
156
156
  -c, [--index], [--no-index] # Generate the index.html file for the result (optional)
157
157
  # Default: --index
158
-
158
+ -s, [--shell-command] # Use the input file list from the result of the given shell command (optional)
159
+ # Note: the command must be result in the list of files
160
+ # This option ignore any of the following options -e, -f, -n, -x, -i if specified
161
+ # e.g. --shell-command 'git diff --name-only HEAD~2 | grep -v test'
162
+ # e.g. --shell-command 'find . -type f -iname "*.rb" | grep -v test'
159
163
  Print files to (x)html using Vim
160
164
  ```
161
165
 
@@ -26,6 +26,10 @@ module VimPrinter
26
26
  desc: "Generate the index.html file for the result",
27
27
  type: :boolean,
28
28
  default: true
29
+ method_option :shell_command,
30
+ aliases: "-s",
31
+ desc: "Use input file list from the result of the given shell command",
32
+ type: :string
29
33
  def print
30
34
  opts = options.symbolize_keys
31
35
  if opts[:version]
@@ -63,7 +67,11 @@ Options:
63
67
  # Default: 'default'
64
68
  -c, [--index], [--no-index] # Generate the index.html file for the result (optional)
65
69
  # Default: --index
66
-
70
+ -s, [--shell-command] # Use the input file list from the result of the given shell command (optional)
71
+ # Note: the command must be result in the list of files
72
+ # This option ignore any of the following options -e, -f, -n, -x, -i if specified
73
+ # e.g. --shell-command 'git diff --name-only HEAD~2 | grep -v test'
74
+ # e.g. --shell-command 'find . -type f -iname "*.rb" | grep -v test | grep -v _spec'
67
75
  Print files to (x)html using Vim
68
76
  EOS
69
77
  end
@@ -73,12 +81,61 @@ Print files to (x)html using Vim
73
81
 
74
82
  private
75
83
 
84
+ # Get the appropriate input from the options
85
+ #
86
+ # @param [Hash<Symbol, Object>] args the input options
87
+ # @option args [String] :shell_input the shell input string if any
88
+ # @return [Array<String>] list of files in the format
89
+ #
90
+ # ["./Gemfile", "./lib/vim_printer/cli.rb", ..]
91
+ def get_input_files(args = {})
92
+ shell_command = args.fetch(:shell_command, nil)
93
+ if shell_command.nil?
94
+ # use other options if we don't use the '--shell-input' option
95
+ CodeLister.files(args)
96
+ else
97
+ files_from_shell_command(shell_command, args[:base_dir])
98
+ end
99
+ end
100
+
101
+ # Execute the command in the shell and return the output list for use
102
+ # e.g. `git diff --name-only HEAD~1` is getting the list of files that have been
103
+ # updated in the last commit
104
+ #
105
+ # @param [String] shell_input the input command to be executed in the shell
106
+ # @param [String] base_dir the starting directory
107
+ # @return [Array<String>] file list or empty list if the shell command is not valid
108
+ def files_from_shell_command(command, base_dir)
109
+ files = AgileUtils::Helper.shell(command.split(" ")).split(/\n/)
110
+ # Adapt the result and make sure that it start with "./"
111
+ # like the result from 'CodeLister.files()' method
112
+ files.map! do |file|
113
+ if file =~ /^\.\//
114
+ # skip if the file start with './' string
115
+ file
116
+ else
117
+ # add './' to the one that does not already have one
118
+ "./#{file}"
119
+ end
120
+ end
121
+ # Note: this make sure that it work with deleted file when use
122
+ # this with 'git diff --name-only HEAD~2'
123
+ files.delete_if { |file| !File.exist?(file.gsub(/^\./, base_dir)) }
124
+ rescue RuntimeError => e
125
+ # just return the empty list, if the user specified invalid command for 'shell_input' option
126
+ return []
127
+ end
128
+
76
129
  # Main entry point to export the code
77
130
  #
78
131
  # @param [Hash<Symbol, Object>] options the options argument
79
132
  def execute(options = {})
80
- input_files = CodeLister.files(options)
81
- input_files.delete_if { |file| File.binary?(file.gsub(/^\./, options[:base_dir])) }
133
+ input_files = get_input_files(options)
134
+ # we want to avoid printing the binary file
135
+ input_files.delete_if do |file|
136
+ File.binary?(file.gsub(/^\./, options[:base_dir]))
137
+ end
138
+
82
139
  if input_files.empty?
83
140
  puts "No file found for your option: #{options}"
84
141
  return
@@ -1,3 +1,3 @@
1
1
  module VimPrinter
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.9"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vim_printer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Burin Choomnuan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-12 00:00:00.000000000 Z
11
+ date: 2014-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor