shredder 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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