shredder 0.1.1 → 0.2.0

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.
Files changed (4) hide show
  1. data/README.txt +2 -2
  2. data/bin/shredder +20 -9
  3. data/lib/shredder.rb +1 -1
  4. metadata +4 -4
data/README.txt CHANGED
@@ -3,7 +3,7 @@
3
3
  require 'shredder'
4
4
 
5
5
  # Shreds text.txt into test.f.1, test.f.2, test.f.3
6
- Shredder::Files.new('test.txt', ['test.f.1','test.f.2','test.f.3'] ).shred
6
+ Shredder::Files.new('README.txt', ['test.f.1','test.f.2','test.f.3'] ).shred
7
7
 
8
8
  # Sews test.f.1, test.f.2, test.f.3 into restored.f.txt
9
9
  Shredder::Files.new('restored.f.txt', ['test.f.1','test.f.2','test.f.3'] ).sew
@@ -11,7 +11,7 @@ Shredder::Files.new('restored.f.txt', ['test.f.1','test.f.2','test.f.3'] ).sew
11
11
  # or #
12
12
 
13
13
  # shred streams #
14
- reader = File.open('test.txt','r')
14
+ reader = File.open('README.txt','r')
15
15
  writers = []; ['test.s.1','test.s.2','test.s.3'].each{|writer| writers.push(File.open(writer,'wb'))}
16
16
  Shredder::Streams.new(reader,writers).shred
17
17
  reader.close
@@ -3,7 +3,7 @@ require 'shredder'
3
3
  raise "Need Shredder version ~> 0.1" if Shredder::VERSION < '0.1'
4
4
 
5
5
  # Command line utility
6
- class ShredderCommandLine
6
+ class CommandLine
7
7
  def self.version
8
8
  puts Shredder::VERSION
9
9
  exit(0)
@@ -15,9 +15,10 @@ shredder --shred sewed_file shred_file1 shred_file2... # shred a file to s
15
15
  shredder --io --shred shred_file1 shred_file2... # shred stdin to shreds
16
16
  shredder --sew sewed_file shred_file1 shred_file2... # sew shreds back to file
17
17
  shredder --io --sew shred_file1 shred_file2... # sew shreds out to stdout
18
+ # --relay in sew mode will relay the first gets from stdin (used to pass on a passphrase to gpg, for example).
18
19
  EOT
19
- print "VERSION: "
20
- ShredderCommandLine.version
20
+ print "# VERSION: "
21
+ CommandLine.version
21
22
  end
22
23
 
23
24
  def self.parse_argv
@@ -25,8 +26,8 @@ EOT
25
26
  while ARGV[0]=~/^-/ do
26
27
  options += ARGV.shift
27
28
  end
28
- ShredderCommandLine.version if options =~ /-v\b/ || options =~ /--version\b/ # need to allow verbose below.
29
- ShredderCommandLine.help if ARGV.length==0 || options =~ /-h/
29
+ CommandLine.version if options =~ /-v\b/ || options =~ /--version\b/ # need to allow verbose below.
30
+ CommandLine.help if ARGV.length==0 || options =~ /-h/
30
31
  $verbose = (options=~/--verbose\b/)? true : false
31
32
  # validate
32
33
  raise "--sew or --shred ?" if !(options=~/--sew\b/) && !(options=~/--shred\b/)
@@ -37,8 +38,9 @@ EOT
37
38
  end
38
39
 
39
40
  def initialize
40
- options = ShredderCommandLine.parse_argv
41
- @shredding = (options=~/--shred/)? true : false
41
+ options = CommandLine.parse_argv
42
+ @shredding = (options=~/--shred\b/)? true : false
43
+ @relay = (options=~/--relay\b/)? true : false
42
44
  if options=~/--io/ then
43
45
  if @shredding then
44
46
  @sew = $stdin
@@ -56,9 +58,18 @@ EOT
56
58
  def execute
57
59
  shredder = (@sew.class == String)? Shredder::Files.new(@sew,@shreds): Shredder::Streams.new(@sew,@shreds)
58
60
  begin
59
- (@shredding)? shredder.shred : shredder.sew
61
+ if @shredding then
62
+ shredder.shred
63
+ else
64
+ if @relay && (passphrase = $stdin.gets) then
65
+ # In a typical situation, we may be asked to relay a passphrase
66
+ $stdout.puts passphrase
67
+ end
68
+ shredder.sew
69
+ end
60
70
  rescue StandardError
61
71
  $stderr.puts $!
72
+ $stderr.puts $!.backtrace if $verbose
62
73
  ensure
63
74
  @shreds.each{|filehandle| filehandle.close} if !(@sew.class == String)
64
75
  end
@@ -66,7 +77,7 @@ EOT
66
77
  end
67
78
 
68
79
  begin
69
- ShredderCommandLine.new.execute
80
+ CommandLine.new.execute
70
81
  rescue StandardError
71
82
  $stderr.puts $!
72
83
  $stderr.puts $!.backtrace if $verbose
@@ -1,5 +1,5 @@
1
1
  module Shredder
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
 
4
4
  # note that these are streams
5
5
  def self.shred(reader,writers,limit=0)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shredder
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - carlosjhr64@gmail.com