cli-ui 2.2.0 → 2.2.2

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: 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