cli-ui 2.2.0 → 2.2.2

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: 8f063229317bef21e8a24f2190dd907c1a1080eefad787871dc8f07b95a3c31b
4
- data.tar.gz: 6379c4023ca55081b2d5260ce79ed9615c304c7ab099b9318883a04ef4d11e1e
3
+ metadata.gz: '09d2f934743c06d2682e5edd21001d81bc80f559015310483fa1d88571c05bcb'
4
+ data.tar.gz: 47abf444dffe2a80da451889dceeaf9056e9794e585d7d2074d222bbf943aea2
5
5
  SHA512:
6
- metadata.gz: 07f5f6b944ceeadd42359bc5c3edde469fb034641ad0ea274306097ec2471af1d8b6fb1fbc85f5d30c43ddb1472b6af1ee1688a921deea6404cbf642239d4ffe
7
- data.tar.gz: 25c645e1b2c6078e3ace849ef02ff85b727e88df4dedfa4baf200a56760369cf440ca435fe8ca18e3e24f301dfa80e772e48c6ccdf12a5dd9b6e4c2d5b4ae353
6
+ metadata.gz: 2ac5bc5856d536eb2fd70a77f0c1df9af493a2b8b3395249f47eaae9f0013b360ae4769828fb476b3b7e2d9fe74f73243106fe3c3c96ab476a603b93b8dc9a95
7
+ data.tar.gz: b65d111cd17a436e6a5d317ab04fd86e72bfcc9dd05f440fb7db50a5b48eaa2e20c89f35aedbf708b099ad3634ebb5a9fb8be7366828ce382aa8998a69c0284a
@@ -92,7 +92,7 @@ module CLI
92
92
  extend T::Sig
93
93
 
94
94
  @capture_mutex = Mutex.new
95
- @stdin_mutex = ReentrantMutex.new
95
+ @stdin_mutex = CLI::UI::ReentrantMutex.new
96
96
  @active_captures = 0
97
97
  @saved_stdin = nil
98
98
 
@@ -262,7 +262,7 @@ module CLI
262
262
  sig { params(stream: IO).void }
263
263
  def initialize(stream)
264
264
  @stream = stream
265
- @m = ReentrantMutex.new
265
+ @m = CLI::UI::ReentrantMutex.new
266
266
  end
267
267
 
268
268
  sig { type_parameters(:T).params(block: T.proc.returns(T.type_parameter(:T))).returns(T.type_parameter(:T)) }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module CLI
4
4
  module UI
5
- VERSION = '2.2.0'
5
+ VERSION = '2.2.2'
6
6
  end
7
7
  end
@@ -0,0 +1,78 @@
1
+ # Copyright (c) 2014 Boris Bera
2
+ #
3
+ # MIT License
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ # Sourced from https://github.com/dotboris/reentrant_mutex
25
+ module CLI
26
+ module UI
27
+ class ReentrantMutex < Mutex
28
+ def initialize
29
+ @count_mutex = Mutex.new
30
+ @counts = Hash.new(0)
31
+
32
+ super
33
+ end
34
+
35
+ def synchronize
36
+ raise ThreadError, 'Must be called with a block' unless block_given?
37
+
38
+ begin
39
+ lock
40
+ yield
41
+ ensure
42
+ unlock
43
+ end
44
+ end
45
+
46
+ def lock
47
+ c = increase_count Thread.current
48
+ super if c <= 1
49
+ end
50
+
51
+ def unlock
52
+ c = decrease_count Thread.current
53
+ if c <= 0
54
+ super
55
+ delete_count Thread.current
56
+ end
57
+ end
58
+
59
+ def count
60
+ @count_mutex.synchronize { @counts[Thread.current] }
61
+ end
62
+
63
+ private
64
+
65
+ def increase_count(thread)
66
+ @count_mutex.synchronize { @counts[thread] += 1 }
67
+ end
68
+
69
+ def decrease_count(thread)
70
+ @count_mutex.synchronize { @counts[thread] -= 1 }
71
+ end
72
+
73
+ def delete_count(thread)
74
+ @count_mutex.synchronize { @counts.delete(thread) }
75
+ end
76
+ end
77
+ end
78
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cli-ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Burke Libbey
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2023-04-17 00:00:00.000000000 Z
13
+ date: 2023-04-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: minitest
@@ -79,6 +79,7 @@ files:
79
79
  - lib/cli/ui/widgets/base.rb
80
80
  - lib/cli/ui/widgets/status.rb
81
81
  - lib/cli/ui/wrap.rb
82
+ - vendor/reentrant_mutex.rb
82
83
  homepage: https://github.com/shopify/cli-ui
83
84
  licenses:
84
85
  - MIT