tty-file 0.8.0 → 0.9.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 +4 -4
- data/CHANGELOG.md +11 -0
- data/lib/tty/file.rb +75 -85
- data/lib/tty/file/create_file.rb +5 -5
- data/lib/tty/file/differ.rb +5 -4
- data/lib/tty/file/digest_file.rb +4 -4
- data/lib/tty/file/download_file.rb +5 -5
- data/lib/tty/file/version.rb +1 -1
- metadata +19 -56
- data/Rakefile +0 -10
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/spec/fixtures/cli_app/%name%_cli.rb +0 -2
- data/spec/fixtures/cli_app/commands/subcommand.rb +0 -2
- data/spec/fixtures/cli_app/excluded/%name%_cli.rb +0 -2
- data/spec/fixtures/templates/%file_name%.rb +0 -1
- data/spec/fixtures/templates/unit_test.rb +0 -1
- data/spec/spec_helper.rb +0 -94
- data/spec/unit/append_to_file_spec.rb +0 -110
- data/spec/unit/binary_spec.rb +0 -230
- data/spec/unit/checksum_file_spec.rb +0 -48
- data/spec/unit/chmod_spec.rb +0 -92
- data/spec/unit/copy_directory_spec.rb +0 -120
- data/spec/unit/copy_file_spec.rb +0 -172
- data/spec/unit/create_directory_spec.rb +0 -93
- data/spec/unit/create_file_spec.rb +0 -130
- data/spec/unit/diff_spec.rb +0 -107
- data/spec/unit/differ/call_spec.rb +0 -101
- data/spec/unit/download_file_spec.rb +0 -68
- data/spec/unit/escape_glob_path_spec.rb +0 -14
- data/spec/unit/inject_into_file_spec.rb +0 -176
- data/spec/unit/prepend_to_file_spec.rb +0 -124
- data/spec/unit/read_to_char_spec.rb +0 -24
- data/spec/unit/remove_file_spec.rb +0 -67
- data/spec/unit/replace_in_file_spec.rb +0 -140
- data/spec/unit/tail_file_spec.rb +0 -77
- data/tasks/console.rake +0 -11
- data/tasks/coverage.rake +0 -11
- data/tasks/spec.rake +0 -29
- data/tty-file.gemspec +0 -33
data/lib/tty/file/differ.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "diff/lcs"
|
4
|
+
require "diff/lcs/hunk"
|
5
|
+
require "enumerator"
|
6
6
|
|
7
7
|
module TTY
|
8
8
|
module File
|
@@ -26,7 +26,8 @@ module TTY
|
|
26
26
|
# @api public
|
27
27
|
def call
|
28
28
|
diffs = Diff::LCS.diff(string_a_lines, string_b_lines)
|
29
|
-
return
|
29
|
+
return "" if diffs.empty?
|
30
|
+
|
30
31
|
hunks = extract_hunks(diffs)
|
31
32
|
format_hunks(hunks)
|
32
33
|
end
|
data/lib/tty/file/digest_file.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "stringio"
|
4
|
+
require "openssl"
|
5
5
|
|
6
6
|
module TTY
|
7
7
|
module File
|
8
8
|
class DigestFile
|
9
9
|
attr_reader :source
|
10
10
|
|
11
|
-
def initialize(source, mode
|
11
|
+
def initialize(source, mode)
|
12
12
|
@source = source
|
13
13
|
@digest = OpenSSL::Digest.new(mode)
|
14
14
|
end
|
15
15
|
|
16
16
|
def call
|
17
17
|
if ::FileTest.file?(source.to_s)
|
18
|
-
::File.open(source,
|
18
|
+
::File.open(source, "rb") { |f| checksum_io(f, @digest) }
|
19
19
|
else
|
20
20
|
non_file = source
|
21
21
|
if non_file.is_a?(String)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "uri"
|
4
|
+
require "net/http"
|
5
5
|
|
6
6
|
module TTY
|
7
7
|
module File
|
@@ -31,11 +31,11 @@ module TTY
|
|
31
31
|
|
32
32
|
# @api private
|
33
33
|
def download(uri, path, limit)
|
34
|
-
raise DownloadError,
|
34
|
+
raise DownloadError, "Redirect limit reached!" if limit.zero?
|
35
35
|
content = []
|
36
36
|
|
37
37
|
Net::HTTP.start(uri.host, uri.port,
|
38
|
-
use_ssl: uri.scheme ==
|
38
|
+
use_ssl: uri.scheme == "https") do |http|
|
39
39
|
http.request_get(uri.request_uri) do |response|
|
40
40
|
case response
|
41
41
|
when Net::HTTPSuccess
|
@@ -43,7 +43,7 @@ module TTY
|
|
43
43
|
content << seg
|
44
44
|
end
|
45
45
|
when Net::HTTPRedirection
|
46
|
-
download(URI.parse(response[
|
46
|
+
download(URI.parse(response["location"]), path, limit - 1)
|
47
47
|
else
|
48
48
|
response.error!
|
49
49
|
end
|
data/lib/tty/file/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tty-file
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Murach
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pastel
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.20'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.20'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: diff-lcs
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.3'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: bundler
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '1.5'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '1.5'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rake
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,14 +70,14 @@ dependencies:
|
|
84
70
|
name: rspec
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- - "
|
73
|
+
- - ">="
|
88
74
|
- !ruby/object:Gem::Version
|
89
75
|
version: '3.0'
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- - "
|
80
|
+
- - ">="
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '3.0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
@@ -110,17 +96,17 @@ dependencies:
|
|
110
96
|
version: '3.4'
|
111
97
|
description: File manipulation utility methods.
|
112
98
|
email:
|
113
|
-
-
|
99
|
+
- piotr@piotrmurach.com
|
114
100
|
executables: []
|
115
101
|
extensions: []
|
116
|
-
extra_rdoc_files:
|
102
|
+
extra_rdoc_files:
|
103
|
+
- README.md
|
104
|
+
- CHANGELOG.md
|
105
|
+
- LICENSE.txt
|
117
106
|
files:
|
118
107
|
- CHANGELOG.md
|
119
108
|
- LICENSE.txt
|
120
109
|
- README.md
|
121
|
-
- Rakefile
|
122
|
-
- bin/console
|
123
|
-
- bin/setup
|
124
110
|
- lib/tty-file.rb
|
125
111
|
- lib/tty/file.rb
|
126
112
|
- lib/tty/file/create_file.rb
|
@@ -129,38 +115,15 @@ files:
|
|
129
115
|
- lib/tty/file/download_file.rb
|
130
116
|
- lib/tty/file/read_backward_file.rb
|
131
117
|
- lib/tty/file/version.rb
|
132
|
-
- spec/fixtures/cli_app/%name%_cli.rb
|
133
|
-
- spec/fixtures/cli_app/commands/subcommand.rb
|
134
|
-
- spec/fixtures/cli_app/excluded/%name%_cli.rb
|
135
|
-
- spec/fixtures/templates/%file_name%.rb
|
136
|
-
- spec/fixtures/templates/unit_test.rb
|
137
|
-
- spec/spec_helper.rb
|
138
|
-
- spec/unit/append_to_file_spec.rb
|
139
|
-
- spec/unit/binary_spec.rb
|
140
|
-
- spec/unit/checksum_file_spec.rb
|
141
|
-
- spec/unit/chmod_spec.rb
|
142
|
-
- spec/unit/copy_directory_spec.rb
|
143
|
-
- spec/unit/copy_file_spec.rb
|
144
|
-
- spec/unit/create_directory_spec.rb
|
145
|
-
- spec/unit/create_file_spec.rb
|
146
|
-
- spec/unit/diff_spec.rb
|
147
|
-
- spec/unit/differ/call_spec.rb
|
148
|
-
- spec/unit/download_file_spec.rb
|
149
|
-
- spec/unit/escape_glob_path_spec.rb
|
150
|
-
- spec/unit/inject_into_file_spec.rb
|
151
|
-
- spec/unit/prepend_to_file_spec.rb
|
152
|
-
- spec/unit/read_to_char_spec.rb
|
153
|
-
- spec/unit/remove_file_spec.rb
|
154
|
-
- spec/unit/replace_in_file_spec.rb
|
155
|
-
- spec/unit/tail_file_spec.rb
|
156
|
-
- tasks/console.rake
|
157
|
-
- tasks/coverage.rake
|
158
|
-
- tasks/spec.rake
|
159
|
-
- tty-file.gemspec
|
160
118
|
homepage: https://piotrmurach.github.io/tty
|
161
119
|
licenses:
|
162
120
|
- MIT
|
163
|
-
metadata:
|
121
|
+
metadata:
|
122
|
+
allowed_push_host: https://rubygems.org
|
123
|
+
changelog_uri: https://github.com/piotrmurach/tty-file/blob/master/CHANGELOG.md
|
124
|
+
documentation_uri: https://www.rubydoc.info/gems/tty-file
|
125
|
+
homepage_uri: https://piotrmurach.github.io/tty
|
126
|
+
source_code_uri: https://github.com/piotrmurach/tty-file
|
164
127
|
post_install_message:
|
165
128
|
rdoc_options: []
|
166
129
|
require_paths:
|
@@ -176,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
176
139
|
- !ruby/object:Gem::Version
|
177
140
|
version: '0'
|
178
141
|
requirements: []
|
179
|
-
rubygems_version: 3.
|
142
|
+
rubygems_version: 3.1.2
|
180
143
|
signing_key:
|
181
144
|
specification_version: 4
|
182
145
|
summary: File manipulation utility methods.
|
data/Rakefile
DELETED
data/bin/console
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "tty/file"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start
|
data/bin/setup
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
<%= foo %>
|
@@ -1 +0,0 @@
|
|
1
|
-
class <%= class_name %>Test; end
|
data/spec/spec_helper.rb
DELETED
@@ -1,94 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
if ENV['COVERAGE'] || ENV['TRAVIS']
|
4
|
-
require 'simplecov'
|
5
|
-
require 'coveralls'
|
6
|
-
|
7
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
8
|
-
SimpleCov::Formatter::HTMLFormatter,
|
9
|
-
Coveralls::SimpleCov::Formatter
|
10
|
-
]
|
11
|
-
|
12
|
-
SimpleCov.start do
|
13
|
-
command_name 'spec'
|
14
|
-
add_filter 'spec'
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
require 'tty/file'
|
19
|
-
require 'find'
|
20
|
-
require "webmock/rspec"
|
21
|
-
|
22
|
-
module Helpers
|
23
|
-
def gem_root
|
24
|
-
::File.join(File.dirname(__FILE__), "..")
|
25
|
-
end
|
26
|
-
|
27
|
-
def dir_path(*args)
|
28
|
-
path = ::File.join(gem_root, *args)
|
29
|
-
::FileUtils.mkdir_p(path) unless ::File.exist?(path)
|
30
|
-
::File.realpath(path)
|
31
|
-
end
|
32
|
-
|
33
|
-
def fixtures_path(*args)
|
34
|
-
::File.join(dir_path('spec', 'fixtures'), *args)
|
35
|
-
end
|
36
|
-
|
37
|
-
def tmp_path(*args)
|
38
|
-
::File.join(dir_path('tmp'), *args)
|
39
|
-
end
|
40
|
-
|
41
|
-
def tmp_pathname(*args)
|
42
|
-
Pathname.new(tmp_path(*args))
|
43
|
-
end
|
44
|
-
|
45
|
-
def exists_and_identical?(source, dest)
|
46
|
-
dest_path = tmp_path(dest)
|
47
|
-
expect(::File.exist?(dest_path)).to be(true)
|
48
|
-
|
49
|
-
source_path = fixtures_path(source)
|
50
|
-
expect(::FileUtils).to be_identical(source_path, dest_path)
|
51
|
-
end
|
52
|
-
|
53
|
-
def strip_heredoc(content)
|
54
|
-
indent = content.scan(/^[ \t]*(?=\S)/).min.size || 0
|
55
|
-
content.gsub(/^[ \t]{#{indent}}/, '')
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
RSpec.configure do |config|
|
60
|
-
config.include(Helpers)
|
61
|
-
|
62
|
-
config.before(:each) do
|
63
|
-
FileUtils.cp_r(fixtures_path('/.'), tmp_path)
|
64
|
-
end
|
65
|
-
|
66
|
-
config.after(:each) do
|
67
|
-
FileUtils.rm_rf(tmp_path)
|
68
|
-
end
|
69
|
-
|
70
|
-
config.expect_with :rspec do |expectations|
|
71
|
-
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
72
|
-
end
|
73
|
-
|
74
|
-
config.mock_with :rspec do |mocks|
|
75
|
-
mocks.verify_partial_doubles = true
|
76
|
-
end
|
77
|
-
|
78
|
-
# Limits the available syntax to the non-monkey patched syntax that is recommended.
|
79
|
-
config.disable_monkey_patching!
|
80
|
-
|
81
|
-
# This setting enables warnings. It's recommended, but in some cases may
|
82
|
-
# be too noisy due to issues in dependencies.
|
83
|
-
config.warnings = true
|
84
|
-
|
85
|
-
if config.files_to_run.one?
|
86
|
-
config.default_formatter = 'doc'
|
87
|
-
end
|
88
|
-
|
89
|
-
config.profile_examples = 2
|
90
|
-
|
91
|
-
config.order = :random
|
92
|
-
|
93
|
-
Kernel.srand config.seed
|
94
|
-
end
|
@@ -1,110 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe TTY::File, "#append_to_file" do
|
4
|
-
shared_context "appending to files" do
|
5
|
-
it "appends to file" do
|
6
|
-
file = path_factory.call('Gemfile')
|
7
|
-
|
8
|
-
TTY::File.append_to_file(file, "gem 'tty'", verbose: false)
|
9
|
-
|
10
|
-
expect(File.read(file)).to eq([
|
11
|
-
"gem 'nokogiri'\n",
|
12
|
-
"gem 'rails', '5.0.0'\n",
|
13
|
-
"gem 'rack', '>=1.0'\n",
|
14
|
-
"gem 'tty'"
|
15
|
-
].join)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "appends multiple lines to file" do
|
19
|
-
file = path_factory.call('Gemfile')
|
20
|
-
|
21
|
-
TTY::File.append_to_file(file, "gem 'tty'\n", "gem 'rake'", verbose: false)
|
22
|
-
|
23
|
-
expect(File.read(file)).to eq([
|
24
|
-
"gem 'nokogiri'\n",
|
25
|
-
"gem 'rails', '5.0.0'\n",
|
26
|
-
"gem 'rack', '>=1.0'\n",
|
27
|
-
"gem 'tty'\n",
|
28
|
-
"gem 'rake'"
|
29
|
-
].join)
|
30
|
-
end
|
31
|
-
|
32
|
-
it "appends content in a block" do
|
33
|
-
file = path_factory.call('Gemfile')
|
34
|
-
|
35
|
-
TTY::File.append_to_file(file, verbose: false) { "gem 'tty'"}
|
36
|
-
|
37
|
-
expect(File.read(file)).to eq([
|
38
|
-
"gem 'nokogiri'\n",
|
39
|
-
"gem 'rails', '5.0.0'\n",
|
40
|
-
"gem 'rack', '>=1.0'\n",
|
41
|
-
"gem 'tty'"
|
42
|
-
].join)
|
43
|
-
end
|
44
|
-
|
45
|
-
it "doesn't append if already present" do
|
46
|
-
file = path_factory.call('Gemfile')
|
47
|
-
|
48
|
-
TTY::File.append_to_file(file, "gem 'rack', '>=1.0'\n", force: false, verbose: false)
|
49
|
-
|
50
|
-
expect(::File.read(file)).to eq([
|
51
|
-
"gem 'nokogiri'\n",
|
52
|
-
"gem 'rails', '5.0.0'\n",
|
53
|
-
"gem 'rack', '>=1.0'\n",
|
54
|
-
].join)
|
55
|
-
end
|
56
|
-
|
57
|
-
it "appends safely checking if content already present" do
|
58
|
-
file = path_factory.call('Gemfile')
|
59
|
-
|
60
|
-
TTY::File.safe_append_to_file(file, "gem 'rack', '>=1.0'\n", verbose: false)
|
61
|
-
|
62
|
-
expect(::File.read(file)).to eq([
|
63
|
-
"gem 'nokogiri'\n",
|
64
|
-
"gem 'rails', '5.0.0'\n",
|
65
|
-
"gem 'rack', '>=1.0'\n",
|
66
|
-
].join)
|
67
|
-
end
|
68
|
-
|
69
|
-
it "appends multiple times by default" do
|
70
|
-
file = path_factory.call('Gemfile')
|
71
|
-
|
72
|
-
TTY::File.append_to_file(file, "gem 'tty'\n", verbose: false)
|
73
|
-
TTY::File.append_to_file(file, "gem 'tty'\n", verbose: false)
|
74
|
-
|
75
|
-
expect(::File.read(file)).to eq([
|
76
|
-
"gem 'nokogiri'\n",
|
77
|
-
"gem 'rails', '5.0.0'\n",
|
78
|
-
"gem 'rack', '>=1.0'\n",
|
79
|
-
"gem 'tty'\n",
|
80
|
-
"gem 'tty'\n"
|
81
|
-
].join)
|
82
|
-
end
|
83
|
-
|
84
|
-
it "logs action" do
|
85
|
-
file = path_factory.call('Gemfile')
|
86
|
-
expect {
|
87
|
-
TTY::File.add_to_file(file, "gem 'tty'")
|
88
|
-
}.to output(/\e\[32mappend\e\[0m.*Gemfile/).to_stdout_from_any_process
|
89
|
-
end
|
90
|
-
|
91
|
-
it "logs action without color" do
|
92
|
-
file = path_factory.call('Gemfile')
|
93
|
-
expect {
|
94
|
-
TTY::File.add_to_file(file, "gem 'tty'", color: false)
|
95
|
-
}.to output(/\s+append.*Gemfile/).to_stdout_from_any_process
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
context "when passed a String instance for the file argument" do
|
100
|
-
let(:path_factory) { method(:tmp_path) }
|
101
|
-
|
102
|
-
include_context "appending to files"
|
103
|
-
end
|
104
|
-
|
105
|
-
context "when passed a Pathname instance for the file argument" do
|
106
|
-
let(:path_factory) { method(:tmp_pathname) }
|
107
|
-
|
108
|
-
include_context "appending to files"
|
109
|
-
end
|
110
|
-
end
|