shredder 2.0.200126 → 3.1.221230

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: 2ba5d85280357dd18d03bad08517e9c7d4b7ef3e914c6939f758cfb066b0f9fd
4
+ data.tar.gz: b52e79f345d49b690850add5a60a9c22d72f9b0c0156f51dd421b96902813599
5
5
  SHA512:
6
- metadata.gz: 52830fd82dd9711003bd78e039df4467e66b95b013ca622c28103e65265dbe8b02841f886008db00b66508e2e34a47eb8f586c398b11fecf41e2ed5bcc6274c2
7
- data.tar.gz: 766b712345d5efa6783a730d4f9afb4a00fe48e40a7f805a65252c7075edf1bad5f6cb750ab388f842e4accd2e58bb26612d6ed1b6d43eb85f57dbcdb9f5d929
6
+ metadata.gz: 2d1267dc8c07c547304af86c273379f498c4ea033878cc244d0d02d8946d720e6d2592acd768288f885ca31830685cd93ed037ad4d4d349a9c9e36bef4b07999
7
+ data.tar.gz: 2f16d4adf30f708116eb5875435b650b6aa9e76a6afcbae0768a24c5abf6e527fe61dd62bf7ce3a4deb35364c022bf8c1c1e7e0559a258087d965c1ee08562e3
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.1.221230](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) 2022 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
@@ -2,17 +2,17 @@ module Shredder
2
2
  class StdIO
3
3
  include Shredder
4
4
  # this one takes shred filenames and uses $stdin or $stdout appropriately.
5
- def initialize(*args)
6
- @shreds = shred_files(*args)
5
+ def initialize(...)
6
+ @shreds = shred_files(...)
7
7
  end
8
8
 
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.1.221230'
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.1.221230
5
5
  platform: ruby
6
6
  authors:
7
- - carlosjhr64
7
+ - CarlosJHR64
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-26 00:00:00.000000000 Z
11
+ date: 2022-12-30 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.1'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 6.5.0
22
+ version: 8.1.221206
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.1'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 6.5.0
32
+ version: 8.1.221206
33
33
  description: 'Shred a file into file fragments, and join fragments back into a restored
34
34
  file.
35
35
 
@@ -66,8 +66,8 @@ 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
69
+ - 'ruby: ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [aarch64-linux]'
70
+ rubygems_version: 3.3.7
71
71
  signing_key:
72
72
  specification_version: 4
73
73
  summary: Shred a file into file fragments, and join fragments back into a restored