fd 0.3.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f47b8695d25dbba024c4a5e44d471179919de3f7888a7dfac299d4b2f6e94224
4
+ data.tar.gz: 6f3fc8a90d2a5a355cfd3971fb795506ae875d80c1358687bcb299cad1c65052
5
+ SHA512:
6
+ metadata.gz: 388945f903ac60a83c25d0ee8e5ed51ebabe28b9889bc138daa30f2af1e9c1eab8e603cece9f788782e7316ac7c3e154fad5ea6bc42cf039c8635d07555b78c6
7
+ data.tar.gz: d0c163a40a65fbc22059b6a116531e6a759dfa5b422e32c36deb5c53a12ab7b8f135295934616a84304b4fc63cd46502e8fb02d700d7b282ad69877a2cd4ed82
@@ -0,0 +1,70 @@
1
+ # For most projects, this workflow file will not need changing; you simply need
2
+ # to commit it to your repository.
3
+ #
4
+ # You may wish to alter this file to override the set of languages analyzed,
5
+ # or to provide custom queries or build logic.
6
+ #
7
+ # ******** NOTE ********
8
+ # We have attempted to detect the languages in your repository. Please check
9
+ # the `language` matrix defined below to confirm you have the correct set of
10
+ # supported CodeQL languages.
11
+ #
12
+ name: "CodeQL for 'fd'"
13
+
14
+ on:
15
+ push:
16
+ branches: [ main ]
17
+ pull_request:
18
+ # The branches below must be a subset of the branches above
19
+ branches: [ main ]
20
+ schedule:
21
+ - cron: '23 0 * * 5'
22
+
23
+ jobs:
24
+ analyze:
25
+ name: Analyze
26
+ runs-on: ubuntu-latest
27
+ permissions:
28
+ actions: read
29
+ contents: read
30
+ security-events: write
31
+
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ language: [ 'ruby' ]
36
+ # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
37
+ # Learn more about CodeQL language support at https://git.io/codeql-language-support
38
+
39
+ steps:
40
+ - name: Checkout repository
41
+ uses: actions/checkout@v2
42
+
43
+ # Initializes the CodeQL tools for scanning.
44
+ - name: Initialize CodeQL
45
+ uses: github/codeql-action/init@v1
46
+ with:
47
+ languages: ${{ matrix.language }}
48
+ # If you wish to specify custom queries, you can do so here or in a config file.
49
+ # By default, queries listed here will override any specified in a config file.
50
+ # Prefix the list here with "+" to use these queries and those in the config file.
51
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
52
+
53
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
54
+ # If this step fails, then you should remove it and run the build manually (see below)
55
+ - name: Autobuild
56
+ uses: github/codeql-action/autobuild@v1
57
+
58
+ # ℹ️ Command-line programs to run using the OS shell.
59
+ # 📚 https://git.io/JvXDl
60
+
61
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
62
+ # and modify them (or add more) to build your code if your project
63
+ # uses a compiled language
64
+
65
+ #- run: |
66
+ # make bootstrap
67
+ # make release
68
+
69
+ - name: Perform CodeQL Analysis
70
+ uses: github/codeql-action/analyze@v1
@@ -0,0 +1,16 @@
1
+ name: Ruby
2
+
3
+ on: [push,pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+ - name: Set up Ruby
11
+ uses: ruby/setup-ruby@v1
12
+ with:
13
+ ruby-version: 3.1.0
14
+ bundler-cache: true
15
+ - name: Run the default task
16
+ run: bundle exec rake
data/.gitignore ADDED
@@ -0,0 +1,49 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ .idea
10
+ *.gem
11
+ *.rbc
12
+ /.config
13
+ /InstalledFiles
14
+ /spec/examples.txt
15
+ /test/tmp/
16
+ /test/version_tmp/
17
+
18
+ # Used by dotenv library to load environment variables.
19
+ # .env
20
+ # Ignore Byebug command history file.
21
+ .byebug_history
22
+ ## Specific to RubyMotion:
23
+ .dat*
24
+ .repl_history
25
+ build/
26
+ *.bridgesupport
27
+ build-iPhoneOS/
28
+ build-iPhoneSimulator/
29
+ ## Specific to RubyMotion (use of CocoaPods):
30
+ #
31
+ # We recommend against adding the Pods directory to your .gitignore. However
32
+ # you should judge for yourself, the pros and cons are mentioned at:
33
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
34
+ # vendor/Pods/
35
+ ## Documentation cache and generated files:
36
+ /.yardoc/
37
+ /rdoc/
38
+ ## Environment normalization:
39
+ /vendor/bundle
40
+ /lib/bundler/man/
41
+ # for a library or gem, you might want to ignore these files since the code is
42
+ # intended to run in multiple environments; otherwise, check them in:
43
+ # Gemfile.lock
44
+ # .ruby-version
45
+ # .ruby-gemset
46
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
47
+ .rvmrc
48
+ # Used by RuboCop. Remote config files pulled in from inherit_from directive.
49
+ # .rubocop-https?--*
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in fd.gemspec
6
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ guard :minitest do
4
+ watch(%r{\Atest/(.*)/?(.*)test\.rb\Z}) { 'test' }
5
+ watch(%r{\Alib/(.*/)?([^/]+)\.rb\Z}) { 'test' }
6
+ watch(%r{\Abin/fd\Z}) { 'test' }
7
+ watch(%r{\Atest/test_helper\.rb\Z}) { 'test' }
8
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2021 Stephan Kämper
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,58 @@
1
+ # fd - A simple file dumping tool
2
+
3
+ ## GitHub Actions
4
+
5
+ [![Main workflow: unit tests](https://github.com/s2k/fd/actions/workflows/main.yml/badge.svg)](https://github.com/s2k/fd/actions) <sup style="font-size:125%;">᛫</sup> [![CodeQL for 'fd'](https://github.com/s2k/fd/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/s2k/fd/actions/workflows/codeql-analysis.yml)
6
+
7
+ ## TL;DR
8
+
9
+ `fd` reads the file _as a sequence of bytes_ and dumps the file content to _STDOUT_, thus the name `fd`. It does so in two columns, the left one will display the hex values of the bytes in the file, the right one will display the characters.
10
+
11
+ ## Warning
12
+
13
+ This is, essentially, the same version I created **back in 2004**. It was programmed in a different world: On another operating system, using another file system (which most notably didn't have the concept of case-sensitive file names). This version originally used ISO-8859-1 as the default encoding, while it's now UTF-8. But since it reads the file byte wise, some characters will not be displayed as you would see them in a modern text editor.
14
+
15
+ In other words: It's a work in progress.
16
+
17
+ ## Installation
18
+
19
+ Add this line to your application's Gemfile:
20
+
21
+ ```ruby
22
+ gem 'fd'
23
+ ```
24
+
25
+ And then execute:
26
+
27
+ $ bundle install
28
+
29
+ Or install it yourself as:
30
+
31
+ $ gem install fd
32
+
33
+
34
+ ## Usage
35
+
36
+ ```
37
+ fd.rb [-w _number_] <em>file_name(s)</em>
38
+ ```
39
+
40
+ Depending on your operating system, you may have to type a bit more...
41
+
42
+ ```
43
+ ruby fd.rb [-w _number_] file_name(s)
44
+ ```
45
+
46
+ ## Development
47
+
48
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
49
+
50
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
51
+
52
+ ## Contributing
53
+
54
+ Bug reports and pull requests are welcome on GitHub at <https://github.com/s2k/fd>.
55
+
56
+ ## License
57
+
58
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << 'test'
8
+ t.libs << 'lib'
9
+ t.test_files = FileList['test/**/*_test.rb']
10
+ end
11
+
12
+ task default: :test
data/bin/console ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'fd'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ require 'pry'
11
+ Pry.start
data/bin/fd ADDED
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'fd'
5
+ require 'optparse'
6
+ require 'ostruct'
7
+
8
+ arguments = OpenStruct.new
9
+ arguments.width = 10
10
+
11
+ options = OptionParser.new do |opts|
12
+ opts.banner = "Usage: #{File.basename __FILE__} [options] file_names"
13
+
14
+ opts.on('-w', '--width=WIDTH [Integer]', Integer, 'Display upto _width_ bytes per row, optional, default is 10') do |width|
15
+ arguments.width = width
16
+ end
17
+
18
+ opts.on('-h', '--help', 'Display using this help') do
19
+ puts opts
20
+ exit
21
+ end
22
+
23
+ opts.on('-v', '--version', 'Display version info and quit') do
24
+ puts "fd version: #{Fd.version}"
25
+ exit
26
+ end
27
+ end
28
+
29
+ begin
30
+ ARGV.push('-h') if ARGV.empty?
31
+ options.parse!
32
+ rescue OptionParser::InvalidArgument
33
+ puts "fd doesn't work, this way:"
34
+ options.parse %w[--help]
35
+ exit 1
36
+ end
37
+
38
+ file_dumper = Fd.new(arguments.width)
39
+
40
+ ARGV.each do |fn|
41
+ file_dumper.dump(fn)
42
+ end
data/bin/setup ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
data/fd.gemspec ADDED
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/fd/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'fd'
7
+ spec.version = Fd::VERSION
8
+ spec.authors = ['Stephan Kämper']
9
+ spec.email = ['the.tester@seasidetesting.com']
10
+
11
+ spec.summary = 'fd is a simple (currently simplistic) tool to dump file contents in binary & text format - side by side'
12
+ spec.description = 'fd prints the given file in two columns: Hex values in the left column and the textual representations in the right column.'
13
+ spec.homepage = 'https://github.com/s2k/fd'
14
+ spec.license = 'MIT'
15
+ spec.required_ruby_version = '>= 3.1.0'
16
+
17
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
18
+
19
+ spec.metadata['homepage_uri'] = spec.homepage
20
+ spec.metadata['source_code_uri'] = 'https://github.com/s2k/fd'
21
+ # spec.metadata['changelog_uri'] = "TODO: Put your gem's CHANGELOG.md URL here."
22
+
23
+ spec.add_development_dependency 'guard-bundler'
24
+ spec.add_development_dependency 'guard-minitest'
25
+ spec.add_development_dependency 'minitest'
26
+ spec.add_development_dependency 'pry'
27
+ spec.add_development_dependency 'pry-doc'
28
+ spec.add_development_dependency 'rake'
29
+ spec.add_development_dependency 'rb-fsevent'
30
+ spec.add_development_dependency 'simplecov'
31
+ spec.add_development_dependency 'terminal-notifier'
32
+ spec.add_development_dependency 'terminal-notifier-guard'
33
+
34
+ # Specify which files should be added to the gem when it is released.
35
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
36
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
37
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
38
+ end
39
+ spec.bindir = 'bin'
40
+ spec.executables = spec.files.grep(%r{\Abin/}) { |f| File.basename(f) }
41
+ spec.require_paths = ['lib']
42
+
43
+ # Uncomment to register a new dependency of your gem
44
+ # spec.add_dependency "example-gem", "~> 1.0"
45
+
46
+ # For more information and examples about making a new gem, checkout our
47
+ # guide at: https://bundler.io/guides/creating_gem.html
48
+ spec.metadata['rubygems_mfa_required'] = 'true'
49
+ end
data/lib/fd/version.rb ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Here only the _VERSION_ of Fd is defined
4
+ # All other code is in lib/fd.rb
5
+ #
6
+ class Fd
7
+ VERSION = '0.3.0'
8
+
9
+ def self.version
10
+ VERSION
11
+ end
12
+ end
data/lib/fd.rb ADDED
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'fd/version'
4
+
5
+ # Fd dumps the content of a file to the standard output.
6
+ #
7
+ class Fd
8
+ class Error < StandardError; end
9
+
10
+ attr_reader :line_length, :char_table
11
+
12
+ # _line_length_ sets how many characters are displayed per line.
13
+ # Some <i>special non-printable/invisible characters</i> are displayed as their names.
14
+ #
15
+ # Name :: Char val
16
+ # NULL :: 0
17
+ # BEL :: 7
18
+ # BS :: 8
19
+ # TAB :: 9
20
+ # LF :: 10
21
+ # VT :: 11
22
+ # FF :: 12
23
+ # CR :: 13
24
+ # DEL :: 16
25
+ # ESC :: 27
26
+ # __ :: 32
27
+ #
28
+ def initialize(line_length)
29
+ raise ArgumentError,
30
+ "Line width must be a positive integer, was given '#{line_length}'" unless line_length.is_a?(Integer) && line_length.positive?
31
+
32
+ @line_length = line_length
33
+ @char_table = {}
34
+ @char_table[0] = 'NULL'
35
+ @char_table[7] = 'BEL'
36
+ @char_table[8] = 'BS'
37
+ @char_table[9] = 'TAB'
38
+ @char_table[10] = 'LF'
39
+ @char_table[11] = 'VT'
40
+ @char_table[12] = 'FF'
41
+ @char_table[13] = 'CR'
42
+ @char_table[16] = 'DEL'
43
+ @char_table[27] = 'ESC'
44
+ @char_table[32] = '__'
45
+ end
46
+
47
+ # dumps the given file _file_name_ to stdout.
48
+ def dump(file_name)
49
+ puts file_name
50
+ content = File.read(file_name)
51
+ raise "Not the expected encoding of UFT-8, got #{content.encoding}" unless content.encoding == Encoding::UTF_8
52
+
53
+ chars = content.chars
54
+ byte_count_in_line = 0
55
+ line = ''
56
+ hex_values = []
57
+ char_index = 0
58
+ while char_index < chars.size
59
+ char = chars[char_index]
60
+ bytes = char.bytes
61
+ if enough_space_in_line?(byte_count_in_line, bytes)
62
+ # Next char fits in line => Add hex values & character to line
63
+ byte_count_in_line += bytes.size
64
+ bytes.each { |bt| hex_values << format('%02x', bt) }
65
+ line += format('%5s', (char_table[char.ord] || char))
66
+ char_index += 1
67
+ else
68
+ # Print a new line…
69
+ print_single_line(hex_values, line)
70
+ # …and reset line internal values
71
+ byte_count_in_line = 0
72
+ hex_values.clear
73
+ line = ''
74
+ end
75
+ end
76
+ print_single_line(hex_values, line) unless line.empty?
77
+ end
78
+
79
+ private
80
+
81
+ def enough_space_in_line?(byte_count_in_line, bytes)
82
+ byte_count_in_line + bytes.size <= line_length
83
+ end
84
+
85
+ def print_single_line(hex_values, line)
86
+ puts("#{format("%#{(3 * line_length) - 1}s", hex_values.join(' '))} |#{format("%#{5 * line_length}s", line)}")
87
+ end
88
+ end
metadata ADDED
@@ -0,0 +1,206 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Stephan Kämper
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-01-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: guard-bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: guard-minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-doc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rb-fsevent
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: terminal-notifier
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: terminal-notifier-guard
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description: 'fd prints the given file in two columns: Hex values in the left column
154
+ and the textual representations in the right column.'
155
+ email:
156
+ - the.tester@seasidetesting.com
157
+ executables:
158
+ - console
159
+ - fd
160
+ - setup
161
+ extensions: []
162
+ extra_rdoc_files: []
163
+ files:
164
+ - ".github/workflows/codeql-analysis.yml"
165
+ - ".github/workflows/main.yml"
166
+ - ".gitignore"
167
+ - Gemfile
168
+ - Guardfile
169
+ - LICENSE.txt
170
+ - README.md
171
+ - Rakefile
172
+ - bin/console
173
+ - bin/fd
174
+ - bin/setup
175
+ - fd.gemspec
176
+ - lib/fd.rb
177
+ - lib/fd/version.rb
178
+ homepage: https://github.com/s2k/fd
179
+ licenses:
180
+ - MIT
181
+ metadata:
182
+ allowed_push_host: https://rubygems.org
183
+ homepage_uri: https://github.com/s2k/fd
184
+ source_code_uri: https://github.com/s2k/fd
185
+ rubygems_mfa_required: 'true'
186
+ post_install_message:
187
+ rdoc_options: []
188
+ require_paths:
189
+ - lib
190
+ required_ruby_version: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: 3.1.0
195
+ required_rubygems_version: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ requirements: []
201
+ rubygems_version: 3.3.5
202
+ signing_key:
203
+ specification_version: 4
204
+ summary: fd is a simple (currently simplistic) tool to dump file contents in binary
205
+ & text format - side by side
206
+ test_files: []