notes-structured-text-strip-bodies 0.1.0 → 0.1.1

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.
data/README.rdoc CHANGED
@@ -1,6 +1,12 @@
1
1
  = notes-structured-text-strip-bodies
2
2
 
3
- Description goes here.
3
+ A command-line tool for remove body text from Lotus Notes Structured Text Exports
4
+
5
+ notes_structured_text_strip_bodies <output_dir> <input_file> [<input_file>*]
6
+
7
+ = Install
8
+
9
+ gem install notes-structured-text-strip-bodies
4
10
 
5
11
  == Contributing to notes-structured-text-strip-bodies
6
12
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -4,28 +4,36 @@ require 'notes_structured_text_strip_bodies'
4
4
  require 'optparse'
5
5
  require 'logger'
6
6
 
7
- options={}
7
+ options={:verbose=>true}
8
8
 
9
9
  USAGE = "Usage: #{File.basename(__FILE__)} <output_dir> <input_files> [<input_file>]* "
10
10
 
11
11
  OptionParser.new do |opts|
12
12
  opts.banner = "Usage: #{File.basename(__FILE__)} <output_dir> <input_files> [<input_file>]* "
13
13
 
14
- opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
14
+ opts.on("-v", "--[no-]verbose", "Run verbosely (default: true)") do |v|
15
15
  options[:verbose] = v
16
16
  end
17
17
  end.parse!
18
18
 
19
- raise USAGE if ARGV.length<2
20
-
21
- output_dir = ARGV[0]
22
- input_files = ARGV[1..-1]
23
- raise "<output_dir>: #{output_dir} must be a directory\n#{USAGE}" if !File.directory?(output_dir)
24
-
25
19
  NotesStructuredTextStripBodies.logger = Logger.new($stderr)
26
20
  if options[:verbose]
27
- NotesStructuredTextStripBodies.logger.level=Logger::DEBUG
28
- else
29
21
  NotesStructuredTextStripBodies.logger.level=Logger::INFO
22
+ else
23
+ NotesStructuredTextStripBodies.logger.level=Logger::WARN
24
+ end
25
+
26
+ begin
27
+ raise "insufficient arguments" if ARGV.length<2
28
+
29
+ output_dir = ARGV[0]
30
+ input_files = ARGV[1..-1]
31
+
32
+ NotesStructuredTextStripBodies.strip_files(output_dir, input_files, options)
33
+ NotesStructuredTextStripBodies.log{|logger| logger.info("complete")}
34
+ rescue Exception=>e
35
+ NotesStructuredTextStripBodies.log{|logger| logger.error(e)}
36
+ NotesStructuredTextStripBodies.log{|logger| logger.info(USAGE)}
37
+ exit(1)
30
38
  end
31
- NotesStructuredTextStripBodies.strip_files(output_dir, input_files, options)
39
+ exit(0)
@@ -10,10 +10,19 @@ module NotesStructuredTextStripBodies
10
10
  end
11
11
 
12
12
  def strip_files(output_dir, input_files, options={})
13
- log{|logger| logger.info("stripping to output directory: #{output_dir}")}
14
- input_files = [*input_files]
15
- input_files.each do |input_file|
16
- strip_file(output_dir, input_file)
13
+ raise "<output_dir>: #{output_dir} must be a directory" if !File.directory?(output_dir)
14
+
15
+ log{|logger| logger.info("stripping to output directory: '#{output_dir}'")}
16
+
17
+ [*input_files].each do |input_file_glob|
18
+ log{|logger| logger.info("processing glob: '#{input_file_glob}'")}
19
+
20
+ glob_matches = Dir[input_file_glob]
21
+ log{|logger| logger.warn("no files match glob: '#{input_file_glob}'")} if glob_matches.empty?
22
+
23
+ glob_matches.each do |input_file|
24
+ strip_file(output_dir, input_file)
25
+ end
17
26
  end
18
27
  end
19
28
 
@@ -22,7 +31,7 @@ module NotesStructuredTextStripBodies
22
31
  raise "<input_file>: #{input_file} does not exist or is not a regular file" if !File.file?(input_file)
23
32
  File.open(input_file, "r") do |input|
24
33
  File.open(output_file, "w") do |output|
25
- log{|logger| logger.debug("stripping: #{input_file} => #{output_file}")}
34
+ log{|logger| logger.info("stripping: '#{input_file}' => '#{output_file}'")}
26
35
  strip(output, input)
27
36
  end
28
37
  end
@@ -5,17 +5,44 @@ describe NotesStructuredTextStripBodies do
5
5
  describe "strip_files" do
6
6
  it "should call strip_file once per input_file with one input file" do
7
7
  output_dir = Object.new
8
+ stub(File).directory?(output_dir){true}
9
+
10
+ input_file_glob = Object.new
8
11
  input_file = Object.new
12
+
13
+ stub(Dir).[](input_file_glob){[input_file]}
9
14
  mock(NotesStructuredTextStripBodies).strip_file(output_dir, input_file)
10
- NotesStructuredTextStripBodies.strip_files(output_dir, input_file)
15
+ NotesStructuredTextStripBodies.strip_files(output_dir, input_file_glob)
11
16
  end
12
17
 
13
18
  it "should call strip_file once per input_file with multiple input files" do
14
19
  output_dir = Object.new
20
+ stub(File).directory?(output_dir){true}
21
+
22
+ input_file_globs = [Object.new, Object.new]
15
23
  input_files = [Object.new, Object.new]
24
+ stub(Dir).[](input_file_globs[0]){[input_files[0]]}
25
+ stub(Dir).[](input_file_globs[1]){[input_files[1]]}
26
+
27
+ mock(NotesStructuredTextStripBodies).strip_file(output_dir, input_files[0])
28
+ mock(NotesStructuredTextStripBodies).strip_file(output_dir, input_files[1])
29
+ NotesStructuredTextStripBodies.strip_files(output_dir, input_file_globs)
30
+ end
31
+
32
+ it "should expand globs in the input_files" do
33
+ output_dir = Object.new
34
+ stub(File).directory?(output_dir){true}
35
+
36
+ input_file_globs = [Object.new, Object.new]
37
+ input_files = [Object.new, Object.new, Object.new, Object.new]
38
+ stub(Dir).[](input_file_globs[0]){[input_files[0], input_files[1]]}
39
+ stub(Dir).[](input_file_globs[1]){[input_files[2], input_files[3]]}
40
+
16
41
  mock(NotesStructuredTextStripBodies).strip_file(output_dir, input_files[0])
17
42
  mock(NotesStructuredTextStripBodies).strip_file(output_dir, input_files[1])
18
- NotesStructuredTextStripBodies.strip_files(output_dir, input_files)
43
+ mock(NotesStructuredTextStripBodies).strip_file(output_dir, input_files[2])
44
+ mock(NotesStructuredTextStripBodies).strip_file(output_dir, input_files[3])
45
+ NotesStructuredTextStripBodies.strip_files(output_dir, input_file_globs)
19
46
  end
20
47
  end
21
48
 
@@ -23,6 +50,7 @@ describe NotesStructuredTextStripBodies do
23
50
  it "should open a new output file for writing, the input file for reading and call strip" do
24
51
  output_dir = "/foo/bar"
25
52
  input_file = "baz/boo.txt"
53
+ mock(File).file?("baz/boo.txt"){true}
26
54
 
27
55
  logdev = Object.new
28
56
  stub(NotesStructuredTextStripBodies).logdev{logdev}
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notes-structured-text-strip-bodies
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - mccraigmccraig