shredder 0.0.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.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