toys-core 0.14.5 → 0.14.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f37d61c7aa836f0cf61b8f16c3276cfb75b8aa0984f95e646ce4b5f0f75b434
4
- data.tar.gz: 8030abe70c882204c75f0dc2098da59318e9c514bbb1fd1efdffcb28857e2410
3
+ metadata.gz: af0d0ca4cb5ad8e29460fbb43a4a2d1466375c5346a4e5ea311075650945b83b
4
+ data.tar.gz: a2ee5cff31d49d7c028add28d8c64520e2dba5633d4cc01f8b97c5b26b2667d3
5
5
  SHA512:
6
- metadata.gz: b3e7f4918dc4ea6ed9b77506b0f298be2268264d3f4468378c4953f805bb7a9715af09d95fa0b0638bc5b9098e1919cee875beb6af549d70d9d4988e37307219
7
- data.tar.gz: 1d71d7991acbfbc37e65c25f8507da1d6ed2e26798d2dbfd1117606983d647df8e4b8baac2887022374cf6b7a2fa31fa6e40e1085976acf27a19de1d9a495d0a
6
+ metadata.gz: 4fdc394813c50de79636b0146f9c163de53479212555d5a34e0b7138fe5d385b08c531419677f1e8bbf3174b01b4c23e9413eaa826e0528173e207ef4babb304
7
+ data.tar.gz: 6d31d318b0a910c61a61ef1eccf4ca0086aaa67f6d8ed085096cd18b1f1a483fa0dcf9e9386d7260ec5dd94b27e1af55ffaa816a22c345ec99d7cb4c6598ef9c
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Release History
2
2
 
3
+ ### v0.14.7 / 2023-07-19
4
+
5
+ * FIXED: Fixed an exception when passing a non-string to puts in the terminal mixin
6
+
7
+ ### v0.14.6 / 2023-06-29
8
+
9
+ * FIXED: Fixed a GitCache exception when loading a repository containing a broken symlink
10
+
3
11
  ### v0.14.5 / 2023-03-20
4
12
 
5
13
  * FIXED: Rescue broken pipe errors by default when running a pager
data/lib/toys/core.rb CHANGED
@@ -9,7 +9,7 @@ module Toys
9
9
  # Current version of Toys core.
10
10
  # @return [String]
11
11
  #
12
- VERSION = "0.14.5"
12
+ VERSION = "0.14.7"
13
13
  end
14
14
 
15
15
  ##
@@ -8,16 +8,16 @@ module Toys
8
8
  # This mixin provides an instance of {Toys::Utils::GitCache}, providing
9
9
  # cached access to files from a remote git repo.
10
10
  #
11
- # Example usage:
11
+ # @example
12
12
  #
13
- # include :git_cache
13
+ # include :git_cache
14
14
  #
15
- # def run
16
- # # Pull and cache the HEAD commit from the Toys repo.
17
- # dir = git_cache.find("https://github.com/dazuma/toys.git")
18
- # # Display the contents of the readme file.
19
- # puts File.read(File.join(dir, "README.md"))
20
- # end
15
+ # def run
16
+ # # Pull and cache the HEAD commit from the Toys repo.
17
+ # dir = git_cache.get("https://github.com/dazuma/toys.git")
18
+ # # Display the contents of the readme file.
19
+ # puts File.read(File.join(dir, "README.md"))
20
+ # end
21
21
  #
22
22
  module GitCache
23
23
  include Mixin
@@ -402,7 +402,7 @@ module Toys
402
402
  Array(remotes).map do |remote|
403
403
  dir = repo_base_dir_for(remote)
404
404
  if ::File.directory?(dir)
405
- ::FileUtils.chmod_R("u+w", dir)
405
+ ::FileUtils.chmod_R("u+w", dir, force: true)
406
406
  ::FileUtils.rm_rf(dir)
407
407
  remote
408
408
  end
@@ -568,9 +568,9 @@ module Toys
568
568
  source_path = ::File.join(dir, sha)
569
569
  unless repo_lock.source_exists?(sha, path)
570
570
  ::FileUtils.mkdir_p(source_path)
571
- ::FileUtils.chmod_R("u+w", source_path)
571
+ ::FileUtils.chmod_R("u+w", source_path, force: true)
572
572
  copy_from_repo(repo_path, source_path, sha, path)
573
- ::FileUtils.chmod_R("a-w", source_path)
573
+ ::FileUtils.chmod_R("a-w", source_path, force: true)
574
574
  end
575
575
  repo_lock.access_source!(sha, path)
576
576
  path == "." ? source_path : ::File.join(source_path, path)
@@ -579,7 +579,7 @@ module Toys
579
579
  def copy_files(dir, sha, path, repo_lock, into)
580
580
  repo_path = ::File.join(dir, REPO_DIR_NAME)
581
581
  ::FileUtils.mkdir_p(into)
582
- ::FileUtils.chmod_R("u+w", into)
582
+ ::FileUtils.chmod_R("u+w", into, force: true)
583
583
  Compat.dir_children(into).each { |child| ::FileUtils.rm_rf(::File.join(into, child)) }
584
584
  result = copy_from_repo(repo_path, into, sha, path)
585
585
  repo_lock.access_repo!
@@ -594,7 +594,7 @@ module Toys
594
594
  to_path = ::File.join(into, entry)
595
595
  unless ::File.exist?(to_path)
596
596
  from_path = ::File.join(repo_dir, entry)
597
- ::FileUtils.cp_r(from_path, to_path)
597
+ ::FileUtils.copy_entry(from_path, to_path)
598
598
  end
599
599
  end
600
600
  into
@@ -603,7 +603,7 @@ module Toys
603
603
  unless ::File.exist?(to_path)
604
604
  from_path = ::File.join(repo_dir, path)
605
605
  ::FileUtils.mkdir_p(::File.dirname(to_path))
606
- ::FileUtils.cp_r(from_path, to_path)
606
+ ::FileUtils.copy_entry(from_path, to_path)
607
607
  end
608
608
  to_path
609
609
  end
@@ -104,7 +104,7 @@ module Toys
104
104
  # @return [String] String with styles removed
105
105
  #
106
106
  def self.remove_style_escapes(str)
107
- str.gsub(/\e\[\d+(;\d+)*m/, "")
107
+ str.to_s.gsub(/\e\[\d+(;\d+)*m/, "")
108
108
  end
109
109
 
110
110
  ##
@@ -158,7 +158,7 @@ module Toys
158
158
  def write(str = "", *styles)
159
159
  @output_mutex.synchronize do
160
160
  begin
161
- output&.write(apply_styles(str, *styles))
161
+ output&.write(apply_styles(str.to_s, *styles))
162
162
  output&.flush
163
163
  rescue ::IOError
164
164
  nil
@@ -200,7 +200,7 @@ module Toys
200
200
  # @return [self]
201
201
  #
202
202
  def puts(str = "", *styles)
203
- str = "#{str}\n" unless str.end_with?("\n")
203
+ str = "#{str}\n" unless str.to_s.end_with?("\n")
204
204
  write(str, *styles)
205
205
  end
206
206
  alias say puts
@@ -240,7 +240,7 @@ module Toys
240
240
  trailing_text = default.nil? ? nil : "[#{default}]"
241
241
  end
242
242
  if trailing_text
243
- ptext, pspaces, = prompt.partition(/\s+$/)
243
+ ptext, pspaces, = prompt.to_s.partition(/\s+$/)
244
244
  prompt = "#{ptext} #{trailing_text}#{pspaces}"
245
245
  end
246
246
  write(prompt, *styles)
@@ -307,13 +307,13 @@ module Toys
307
307
  return nil unless block_given?
308
308
  frame_length ||= DEFAULT_SPINNER_FRAME_LENGTH
309
309
  frames ||= DEFAULT_SPINNER_FRAMES
310
- write(leading_text) unless leading_text.empty?
310
+ write(leading_text) unless leading_text.to_s.empty?
311
311
  spin = SpinDriver.new(self, frames, Array(style), frame_length)
312
312
  begin
313
313
  yield
314
314
  ensure
315
315
  spin.stop
316
- write(final_text) unless final_text.empty?
316
+ write(final_text) unless final_text.to_s.empty?
317
317
  end
318
318
  end
319
319
 
@@ -377,7 +377,7 @@ module Toys
377
377
  def apply_styles(str, *styles)
378
378
  if styled
379
379
  prefix = escape_styles(*styles)
380
- suffix = prefix.empty? || str.end_with?(CLEAR_CODE) ? "" : CLEAR_CODE
380
+ suffix = prefix.empty? || str.to_s.end_with?(CLEAR_CODE) ? "" : CLEAR_CODE
381
381
  "#{prefix}#{str}#{suffix}"
382
382
  else
383
383
  Terminal.remove_style_escapes(str)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toys-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.5
4
+ version: 0.14.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Azuma
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-20 00:00:00.000000000 Z
11
+ date: 2023-07-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Toys-Core is the command line tool framework underlying Toys. It can
14
14
  be used to create command line executables using the Toys DSL and classes.
@@ -78,10 +78,10 @@ homepage: https://github.com/dazuma/toys
78
78
  licenses:
79
79
  - MIT
80
80
  metadata:
81
- changelog_uri: https://dazuma.github.io/toys/gems/toys-core/v0.14.5/file.CHANGELOG.html
81
+ changelog_uri: https://dazuma.github.io/toys/gems/toys-core/v0.14.7/file.CHANGELOG.html
82
82
  source_code_uri: https://github.com/dazuma/toys/tree/main/toys-core
83
83
  bug_tracker_uri: https://github.com/dazuma/toys/issues
84
- documentation_uri: https://dazuma.github.io/toys/gems/toys-core/v0.14.5
84
+ documentation_uri: https://dazuma.github.io/toys/gems/toys-core/v0.14.7
85
85
  post_install_message:
86
86
  rdoc_options: []
87
87
  require_paths: