shredder 2.0.200126 → 3.0.210928

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 498eeb86b0aea1ba926ec9c2dd168d41ef4467dd64ff79e7e712f3141aec4e02
4
- data.tar.gz: 654802da4b46624cc48f87ca2d6aa949ba451fade334c6ce77a5c7836465938d
3
+ metadata.gz: 79cdefe01e4a370cbeabff63ec4e641945d62b239aef721050257e0a9bcf0119
4
+ data.tar.gz: d5290e49de44088fbb83a3615cea8ee7af5781b162fe3c49d202bfbe8e9a1779
5
5
  SHA512:
6
- metadata.gz: 52830fd82dd9711003bd78e039df4467e66b95b013ca622c28103e65265dbe8b02841f886008db00b66508e2e34a47eb8f586c398b11fecf41e2ed5bcc6274c2
7
- data.tar.gz: 766b712345d5efa6783a730d4f9afb4a00fe48e40a7f805a65252c7075edf1bad5f6cb750ab388f842e4accd2e58bb26612d6ed1b6d43eb85f57dbcdb9f5d929
6
+ metadata.gz: 28b6169312efdfaed3e1cc5365b866d177d09cbea1085d12eea12e63dc61f05a4561a8ea986e8f3ddd6e8e820656340d01f4f5f1e325a59b63f47bd3cb33d7fe
7
+ data.tar.gz: ad2d383ac37cd98d80676026e9d10f8c3092e3bb5f504404938809733a1e31e9e7ab4328afd596b63f83a35b04d48212e90f327446ef047deb04dce1187645f6
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # shredder
1
+ # Shredder
2
2
 
3
- * [VERSION 2.0.200126](https://github.com/carlosjhr64/shredder/releases)
3
+ * [VERSION 3.0.210928](https://github.com/carlosjhr64/shredder/releases)
4
4
  * [github](https://github.com/carlosjhr64/shredder)
5
5
  * [rubygems](https://rubygems.org/gems/shredder)
6
6
 
@@ -8,89 +8,89 @@
8
8
 
9
9
  Shred a file into file fragments, and join fragments back into a restored file.
10
10
 
11
+ ## INSTALL:
12
+ ```console
13
+ $ gem install shredder
14
+ ```
11
15
  ## HELP:
12
-
13
- $ Usage:
14
- $ shredder shred [:options+] <shreds=FILENAME>+
15
- $ shredder sew [:options+] <shreds=FILENAME>+
16
- $ Options:
17
- $ --n=INTEGER Number of shreds
18
- $ --passphrase Relay passphrase from stding to stdout
19
- $ Types:
20
- $ FILENAME /^[[:print:]]+$/
21
- $ INTEGER /^[2-9]d*$/
22
- $ # Examples:
23
- $ # shredder shred file.1 file.2 < file.txt
24
- $ # shredder shred --n=2 file < file.txt
25
- $ # shredder sew file.1 file.2 > file.txt
26
- $ # shredder shred --n=2 file > file.txt
27
-
28
- ## SYNOPSIS
29
-
30
- ### Library:
31
-
32
- require 'shredder'
33
-
16
+ ```console
17
+ $ shredder --help
18
+ Usage:
19
+ shredder shred [:options+] <shreds=FILENAME>+
20
+ shredder sew [:options+] <shreds=FILENAME>+
21
+ Options:
22
+ --n=INTEGER Number of shreds
23
+ Types:
24
+ FILENAME /^[[:print:]]+$/
25
+ INTEGER /^[2-9]\d*$/
26
+ # Examples:
27
+ # shredder shred file.1 file.2 < file.txt
28
+ # shredder shred --n=2 file < file.txt
29
+ # shredder sew file.1 file.2 > file.txt
30
+ # shredder shred --n=2 file > file.txt
31
+ ```
32
+ ## SYNOPSIS:
33
+
34
+ ### Library
35
+ ```ruby
36
+ require 'shredder'
37
+ ```
34
38
  #### Shredder::Streams
39
+ ```ruby
40
+ require 'stringio'
35
41
 
36
- require 'stringio'
37
-
38
- sewn = StringIO.new("This is a test String: 1, 2, 3.")
39
- sewn.string.length #=> 31
40
- shreds = [StringIO.new, StringIO.new]
42
+ sewn = StringIO.new("This is a test String: 1, 2, 3.")
43
+ sewn.string.length #=> 31
44
+ shreds = [StringIO.new, StringIO.new]
41
45
 
42
- shredder = Shredder::Streams.new(sewn, shreds)
43
- shredder.shred #=> 31
46
+ shredder = Shredder::Streams.new(sewn, shreds)
47
+ shredder.shred #=> 31
44
48
 
45
- shreds[0].string
46
- #=> "T\u0001S\u001AAT\u0016T'\e\t\u001A\u001D\u0012\f\u001D"
47
- shreds[0].string.length #=> 16
49
+ shreds[0].string
50
+ #=> "T\u0001S\u001AAT\u0016T'\e\t\u001A\u001D\u0012\f\u001D"
51
+ shreds[0].string.length #=> 16
48
52
 
49
- shreds[1].string
50
- #=> "<\u001AISA\u0011\as\u0006\a]\u0011\f\u001E\u0013"
51
- shreds[1].string.length #=> 15
53
+ shreds[1].string
54
+ #=> "<\u001AISA\u0011\as\u0006\a]\u0011\f\u001E\u0013"
55
+ shreds[1].string.length #=> 15
52
56
 
53
- restored = StringIO.new
54
- shreds.each{|_|_.rewind}
57
+ restored = StringIO.new
58
+ shreds.each{|_|_.rewind}
55
59
 
56
- shredder = Shredder::Streams.new(restored, shreds)
57
- shredder.sew #=> 31
58
-
59
- restored.string #=> "This is a test String: 1, 2, 3."
60
+ shredder = Shredder::Streams.new(restored, shreds)
61
+ shredder.sew #=> 31
60
62
 
63
+ restored.string #=> "This is a test String: 1, 2, 3."
64
+ ```
61
65
  #### Shredder::Files
62
-
63
- sewn = './tmp/sewn.txt'
64
- shreds = './tmp/shreds'
65
- restored = './tmp/restored.txt'
66
-
67
- File.read(sewn).chomp #=> "This is a test file: 1, 2, 3."
68
- File.size(sewn) #=> 30
69
-
70
- shredder = Shredder::Files.new(sewn, shreds, 3)
71
- shredder.shreds
72
- #=> ["./tmp/shreds.1", "./tmp/shreds.2", "./tmp/shreds.3"]
73
- shredder.shred #=> 30
74
-
75
- File.read(shreds+'.1') #=> "T\u001A\u001AA\u0016F\t\u0011\u0012\u0013"
76
- File.read(shreds+'.2') #=> "<SST\a\u000F_\u001D\u001E\u001D"
77
- File.read(shreds+'.3') #=> "\u0001IA\u0011T\u0005\u001A\f\f$"
78
- File.size(shreds+'.3') #=> 10
79
-
80
- shredder = Shredder::Files.new(restored, shreds, 3)
81
- shredder.sewn #=> "./tmp/restored.txt"
82
- shredder.sew #=> 30
83
- File.read(restored).chomp #=> "This is a test file: 1, 2, 3."
84
-
85
- ## INSTALL:
86
-
87
- $ gem install shredder
88
-
66
+ ```ruby
67
+ sewn = './test/sewn.txt'
68
+ shreds = './tmp/shreds'
69
+ restored = './tmp/restored.txt'
70
+
71
+ File.read(sewn).chomp #=> "This is a test file: 1, 2, 3."
72
+ File.size(sewn) #=> 30
73
+
74
+ shredder = Shredder::Files.new(sewn, shreds, 3)
75
+ shredder.shreds
76
+ #=> ["./tmp/shreds.1", "./tmp/shreds.2", "./tmp/shreds.3"]
77
+ shredder.shred #=> 30
78
+
79
+ File.read(shreds+'.1') #=> "T\u001A\u001AA\u0016F\t\u0011\u0012\u0013"
80
+ File.read(shreds+'.2') #=> "<SST\a\u000F_\u001D\u001E\u001D"
81
+ File.read(shreds+'.3') #=> "\u0001IA\u0011T\u0005\u001A\f\f$"
82
+ File.size(shreds+'.3') #=> 10
83
+
84
+ shredder = Shredder::Files.new(restored, shreds, 3)
85
+ shredder.sewn #=> "./tmp/restored.txt"
86
+ shredder.sew #=> 30
87
+ File.read(restored).chomp #=> "This is a test file: 1, 2, 3."
88
+ ```
89
89
  ## LICENSE:
90
90
 
91
91
  (The MIT License)
92
92
 
93
- Copyright (c) 2020 CarlosJHR64
93
+ Copyright (c) 2021 CarlosJHR64
94
94
 
95
95
  Permission is hereby granted, free of charge, to any person obtaining
96
96
  a copy of this software and associated documentation files (the
@@ -110,4 +110,3 @@ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
110
110
  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
111
111
  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
112
112
  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
113
-
data/bin/shredder CHANGED
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'help_parser'
3
+ require 'shredder'
3
4
 
4
- OPTIONS = HelpParser['2.0.200126', <<HELP]
5
+ OPTIONS = HelpParser[Shredder::VERSION, <<HELP]
5
6
  Usage:
6
7
  shredder shred [:options+] <shreds=FILENAME>+
7
8
  shredder sew [:options+] <shreds=FILENAME>+
8
9
  Options:
9
- --n=INTEGER \tNumber of shreds
10
- --passphrase\tRelay passphrase from stding to stdout
10
+ --n=INTEGER \t Number of shreds
11
11
  Types:
12
12
  FILENAME /^[[:print:]]+$/
13
- INTEGER /^[2-9]\d*$/
13
+ INTEGER /^[2-9]\\d*$/
14
14
  # Examples:
15
15
  # shredder shred file.1 file.2 < file.txt
16
16
  # shredder shred --n=2 file < file.txt
@@ -35,10 +35,6 @@ unless count > 1
35
35
  exit 64
36
36
  end
37
37
 
38
- require 'shredder/shredder'
39
- require 'shredder/streams'
40
- require 'shredder/stdio'
41
-
42
38
  shredder = Shredder::StdIO.new(shreds, count)
43
39
  case OPTIONS[1]
44
40
  when 'shred'
@@ -12,11 +12,11 @@ module Shredder
12
12
  reader = writers = count = nil
13
13
  begin
14
14
  reader = File.open(@sewn, 'r')
15
- writers = @shreds.map{|shred| File.open(shred, 'wb')}
15
+ writers = @shreds.map{File.open _1, 'wb'}
16
16
  count = Streams.new(reader, writers).shred(limit: limit)
17
17
  ensure
18
- writers.each{|writer| writer.close} if writers
19
- reader.close if reader
18
+ writers.each{_1.close} if writers
19
+ reader.close if reader
20
20
  end
21
21
  return count
22
22
  end
@@ -25,11 +25,11 @@ module Shredder
25
25
  writer = readers = count = nil
26
26
  begin
27
27
  writer = File.open(@sewn, 'wb')
28
- readers = @shreds.map{|shred| File.open(shred, 'r')}
28
+ readers = @shreds.map{File.open(_1, 'r')}
29
29
  count = Streams.new(writer, readers).sew(limit: limit)
30
30
  ensure
31
- writer.close if writer
32
- readers.each{|reader| reader.close} if readers
31
+ writer.close if writer
32
+ readers.each{_1.close} if readers
33
33
  end
34
34
  return count
35
35
  end
@@ -3,11 +3,11 @@ module Shredder
3
3
 
4
4
  # note that these are streams
5
5
  def shred(sewn=(@sewn or $stdin), shreds=@shreds,
6
- writers: shreds, reader: sewn, limit: 0)
7
- shreds,xor,count = writers.length,0,0
6
+ writers: shreds, reader: sewn, limit: 0, xor: 0)
7
+ shreds,count = writers.length,0
8
8
  while byte = reader.getbyte do
9
9
  writers[count%shreds].putc(xor^(xor=byte))
10
- count += 1 # not that 0 is skipped
10
+ count += 1 # note that 0 is skipped
11
11
  break if count == limit
12
12
  end
13
13
  return count
@@ -15,8 +15,8 @@ module Shredder
15
15
 
16
16
  # note that these are streams
17
17
  def sew(shreds=@shreds, sewn=(@sewn or $stdout),
18
- readers: shreds, writer: sewn, limit: 0)
19
- shreds,xor,count = readers.length,0,0
18
+ readers: shreds, writer: sewn, limit: 0, xor: 0)
19
+ shreds,count = readers.length,0
20
20
  while byte = readers[count%shreds].getbyte do
21
21
  writer.putc(xor=(byte^xor))
22
22
  count += 1 # note that 0 is skipped
@@ -25,7 +25,7 @@ module Shredder
25
25
  return count
26
26
  end
27
27
 
28
- def shred_files(b, m=2, basename: b, n: m)
28
+ def shred_files(b=nil, m=2, basename: b, n: m)
29
29
  case basename
30
30
  when Array
31
31
  basename
@@ -9,10 +9,10 @@ module Shredder
9
9
  def shred(limit=0)
10
10
  writers = count = nil
11
11
  begin
12
- writers = @shreds.map{|shred| File.open(shred, 'wb')}
12
+ writers = @shreds.map{File.open _1, 'wb'}
13
13
  count = Streams.new($stdin, writers).shred(limit: limit)
14
14
  ensure
15
- writers.each{|writer| writer.close} if writers
15
+ writers.each{_1.close} if writers
16
16
  end
17
17
  return count
18
18
  end
@@ -20,10 +20,10 @@ module Shredder
20
20
  def sew(limit=0)
21
21
  readers = count = nil
22
22
  begin
23
- readers = @shreds.map{|shred| File.open(shred, 'r')}
23
+ readers = @shreds.map{File.open _1, 'r'}
24
24
  count = Streams.new($stdout, readers).sew(limit: limit)
25
25
  ensure
26
- readers.each{|reader| reader.close} if readers
26
+ readers.each{_1.close} if readers
27
27
  end
28
28
  return count
29
29
  end
data/lib/shredder.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  module Shredder
2
- VERSION = '2.0.200126'
2
+ VERSION = '3.0.210928'
3
+ require 'shredder/shredder'
4
+ autoload :Streams, 'shredder/streams'
5
+ autoload :StdIO, 'shredder/stdio'
6
+ autoload :Files, 'shredder/files'
3
7
  end
4
- require 'shredder/shredder'
5
- require 'shredder/streams'
6
- require 'shredder/stdio'
7
- require 'shredder/files'
8
8
  # Requires:
9
9
  #`ruby`
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shredder
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.200126
4
+ version: 3.0.210928
5
5
  platform: ruby
6
6
  authors:
7
- - carlosjhr64
8
- autorequire:
7
+ - CarlosJHR64
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-26 00:00:00.000000000 Z
11
+ date: 2021-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: help_parser
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '6.5'
19
+ version: '8.0'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 6.5.0
22
+ version: 8.0.210917
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '6.5'
29
+ version: '8.0'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 6.5.0
32
+ version: 8.0.210917
33
33
  description: 'Shred a file into file fragments, and join fragments back into a restored
34
34
  file.
35
35
 
@@ -51,7 +51,7 @@ homepage: https://github.com/carlosjhr64/shredder
51
51
  licenses:
52
52
  - MIT
53
53
  metadata: {}
54
- post_install_message:
54
+ post_install_message:
55
55
  rdoc_options: []
56
56
  require_paths:
57
57
  - lib
@@ -66,9 +66,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
68
  requirements:
69
- - 'ruby: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]'
70
- rubygems_version: 3.1.2
71
- signing_key:
69
+ - 'ruby: ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux]'
70
+ rubygems_version: 3.2.22
71
+ signing_key:
72
72
  specification_version: 4
73
73
  summary: Shred a file into file fragments, and join fragments back into a restored
74
74
  file.