shredder 0.0.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.txt CHANGED
@@ -25,3 +25,4 @@ writer.close
25
25
  readers.each{|reader| reader.close}
26
26
 
27
27
  # Also available, Shredder.shred( writer, readers) and Shredder.sew( reader, writers )
28
+ # and a command line utility, shredder (run shredder --help for more info).
data/bin/shredder ADDED
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env ruby
2
+ require 'shredder'
3
+ raise "Need Shredder version ~> 0.1" if Shredder::VERSION < '0.1'
4
+
5
+ # Command line utility
6
+ class ShredderCommandLine
7
+ def self.version
8
+ puts Shredder::VERSION
9
+ exit(0)
10
+ end
11
+
12
+ def self.help
13
+ puts <<EOT
14
+ shredder --shred sewed_file shred_file1 shred_file2... # shred a file to shreds
15
+ shredder --io --shred shred_file1 shred_file2... # shred stdin to shreds
16
+ shredder --sew sewed_file shred_file1 shred_file2... # sew shreds back to file
17
+ shredder --io --sew shred_file1 shred_file2... # sew shreds out to stdout
18
+ EOT
19
+ print "VERSION: "
20
+ ShredderCommandLine.version
21
+ end
22
+
23
+ def self.parse_argv
24
+ options = ''
25
+ while ARGV[0]=~/^-/ do
26
+ options += ARGV.shift
27
+ 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/
30
+ $verbose = (options=~/--verbose\b/)? true : false
31
+ # validate
32
+ raise "--sew or --shred ?" if !(options=~/--sew\b/) && !(options=~/--shred\b/)
33
+ length = ARGV.length
34
+ raise "Expected sew shred1 shred2 ..." if length < 2 && !(options=~/--io\b/)
35
+ raise "Expected shred1 shred2..." if length < 1
36
+ return options
37
+ end
38
+
39
+ def initialize
40
+ options = ShredderCommandLine.parse_argv
41
+ @shredding = (options=~/--shred/)? true : false
42
+ if options=~/--io/ then
43
+ if @shredding then
44
+ @sew = $stdin
45
+ @shreds = ARGV.map{|filename| File.open(filename,'w')} # WRITE SHREDS
46
+ else
47
+ @sew = $stdout
48
+ @shreds = ARGV.map{|filename| File.open(filename,'r')} # READ SHREDS
49
+ end
50
+ else
51
+ @sew = ARGV.shift
52
+ @shreds = ARGV
53
+ end
54
+ end
55
+
56
+ def execute
57
+ shredder = (@sew.class == String)? Shredder::Files.new(@sew,@shreds): Shredder::Streams.new(@sew,@shreds)
58
+ begin
59
+ (@shredding)? shredder.shred : shredder.sew
60
+ rescue StandardError
61
+ $stderr.puts $!
62
+ ensure
63
+ @shreds.each{|filehandle| filehandle.close} if !(@sew.class == String)
64
+ end
65
+ end
66
+ end
67
+
68
+ begin
69
+ ShredderCommandLine.new.execute
70
+ rescue StandardError
71
+ $stderr.puts $!
72
+ $stderr.puts $!.backtrace if $verbose
73
+ end
data/lib/shredder.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Shredder
2
- VERSION = '0.0.0'
2
+ VERSION = '0.1.1'
3
3
 
4
4
  # note that these are streams
5
5
  def self.shred(reader,writers,limit=0)
@@ -30,66 +30,6 @@ module Shredder
30
30
  return count
31
31
  end
32
32
 
33
- class Streams
34
- # this one takes streams
35
- def initialize(sew,shreds,limit=0)
36
- @sew = sew
37
- @shreds = shreds
38
- @limit = limit
39
- end
40
-
41
- def shred(limit=@limit)
42
- Shredder.shred(@sew,@shreds,limit)
43
- end
44
-
45
- def sew(limit=@limit)
46
- Shredder.sew(@sew,@shreds,limit)
47
- end
48
- end
49
-
50
- class Files
51
- # this one takes filenames
52
- def initialize(sew,shreds,limit=0)
53
- @sew = sew
54
- @shreds = shreds
55
- @limit = limit
56
- end
57
-
58
- def shred(limit=@limit)
59
- reader = File.open(@sew,'r')
60
- writers = []
61
- @shreds.each{|shred| writers.push( File.open(shred,'wb') ) }
62
-
63
- count = nil
64
- begin
65
- count = Shredder.shred( reader, writers, limit )
66
- rescue Exception
67
- raise $!
68
- ensure
69
- writers.each{|writer| writer.close}
70
- reader.close
71
- end
72
-
73
- return count
74
- end
75
-
76
- def sew(limit=@limit)
77
- writer = File.open(@sew,'wb')
78
- readers = []
79
- @shreds.each{|shred| readers.push( File.open(shred,'r') ) }
80
-
81
- count = nil
82
- begin
83
- count = Shredder.sew( writer, readers, limit )
84
- rescue Exception
85
- raise $!
86
- ensure
87
- writer.close
88
- readers.each{|reader| reader.close}
89
- end
90
-
91
- return count
92
- end
93
- end
94
-
33
+ autoload :Files, 'shredder/files'
34
+ autoload :Streams, 'shredder/streams'
95
35
  end
@@ -0,0 +1,46 @@
1
+ module Shredder
2
+ class Files
3
+ # this one takes filenames
4
+ def initialize(sew,shreds,limit=0)
5
+ @sew = sew
6
+ @shreds = shreds
7
+ @limit = limit
8
+ end
9
+
10
+ def shred(limit=@limit)
11
+ reader = File.open(@sew,'r')
12
+ writers = []
13
+ @shreds.each{|shred| writers.push( File.open(shred,'wb') ) }
14
+
15
+ count = nil
16
+ begin
17
+ count = Shredder.shred( reader, writers, limit )
18
+ rescue Exception
19
+ raise $!
20
+ ensure
21
+ writers.each{|writer| writer.close}
22
+ reader.close
23
+ end
24
+
25
+ return count
26
+ end
27
+
28
+ def sew(limit=@limit)
29
+ writer = File.open(@sew,'wb')
30
+ readers = []
31
+ @shreds.each{|shred| readers.push( File.open(shred,'r') ) }
32
+
33
+ count = nil
34
+ begin
35
+ count = Shredder.sew( writer, readers, limit )
36
+ rescue Exception
37
+ raise $!
38
+ ensure
39
+ writer.close
40
+ readers.each{|reader| reader.close}
41
+ end
42
+
43
+ return count
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,18 @@
1
+ module Shredder
2
+ class Streams
3
+ # this one takes streams
4
+ def initialize(sew,shreds,limit=0)
5
+ @sew = sew
6
+ @shreds = shreds
7
+ @limit = limit
8
+ end
9
+
10
+ def shred(limit=@limit)
11
+ Shredder.shred(@sew,@shreds,limit)
12
+ end
13
+
14
+ def sew(limit=@limit)
15
+ Shredder.sew(@sew,@shreds,limit)
16
+ end
17
+ end
18
+ end
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: 31
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 0
9
- - 0
10
- version: 0.0.0
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - carlosjhr64@gmail.com
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-12 00:00:00 Z
18
+ date: 2011-06-21 00:00:00 Z
19
19
  dependencies: []
20
20
 
21
21
  description: |
@@ -24,15 +24,18 @@ description: |
24
24
  Note: These are not file segments, they're shreds.
25
25
 
26
26
  email: carlosjhr64@gmail.com
27
- executables: []
28
-
27
+ executables:
28
+ - shredder
29
29
  extensions: []
30
30
 
31
31
  extra_rdoc_files: []
32
32
 
33
33
  files:
34
+ - ./lib/shredder/streams.rb
35
+ - ./lib/shredder/files.rb
34
36
  - ./lib/shredder.rb
35
37
  - ./README.txt
38
+ - bin/shredder
36
39
  homepage: https://sites.google.com/site/carlosjhr64/rubygems/shredder
37
40
  licenses: []
38
41