terminalwire-client 0.3.5.alpha2 → 0.3.5.rc1

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: 71670dcad977bad04159203205f6633a2d58cb69ada42ff31a20020da4cb78da
4
- data.tar.gz: 47e09b84bdce4377c8f537fd280fe87b46a472f727067e264132b372f79f4b59
3
+ metadata.gz: a9be7d471f5b59d1c6ea38379eb86a6775989432e3e77724395ef16b653d40c4
4
+ data.tar.gz: bcf718fed5322c5e812f4c7ef25f68d332cd84cf1c3ed195751d7376e6b4243a
5
5
  SHA512:
6
- metadata.gz: 2ea6735db6ec83b7c6102ed269505dc2afe6ea95268b1a33ed4fc4cdd327127f8776d4df8cc798640bb071d4e0e4e23347312edf5590de272e074ce129bfd294
7
- data.tar.gz: 3b666212526f3b183ff8f8d4d302ff87edd1f27ddb7ae3f1deda90107eccff6d33898d7422972461b6348c4b4ac658c2fbe4a0933f1a066a96457c47609e3cad
6
+ metadata.gz: 4f5038358a03b60e9bc40b4d12f581c88a16d1b277663b25d07ffa17ae95652948cadd90ef6fb846e49689490aa44c6b5205f76a961f074c47fac87af9a30742
7
+ data.tar.gz: a470a342cb59c467b1126363631c0b1765ed66d2d541726ac1ff4f0c7a8230a2aaa9ca2f1970e5217edd14004fd79bc417cf7cb8cdb31e0a653a085e740243b7
@@ -15,19 +15,14 @@ module Terminalwire::Client
15
15
  @adapter = adapter
16
16
  @program_arguments = arguments
17
17
  @program_name = program_name
18
- @entitlement = Entitlement::Policy.resolve(authority: @endpoint.authority)
19
-
18
+ @entitlement = Entitlement::Policy.resolve(
19
+ authority: @endpoint.authority
20
+ )
21
+ @resources = Resource::Handler.new(
22
+ adapter: @adapter,
23
+ entitlement: @entitlement
24
+ )
20
25
  yield self if block_given?
21
-
22
- @resources = Resource::Handler.new do |it|
23
- it << Resource::STDOUT.new("stdout", @adapter, entitlement:)
24
- it << Resource::STDIN.new("stdin", @adapter, entitlement:)
25
- it << Resource::STDERR.new("stderr", @adapter, entitlement:)
26
- it << Resource::Browser.new("browser", @adapter, entitlement:)
27
- it << Resource::File.new("file", @adapter, entitlement:)
28
- it << Resource::Directory.new("directory", @adapter, entitlement:)
29
- it << Resource::EnvironmentVariable.new("environment_variable", @adapter, entitlement:)
30
- end
31
26
  end
32
27
 
33
28
  def verify_license
@@ -6,8 +6,20 @@ module Terminalwire::Client::Resource
6
6
  class Handler
7
7
  include Enumerable
8
8
 
9
- def initialize
9
+ def initialize(adapter:, entitlement:)
10
+ @adapter = adapter
11
+ @entitlement = entitlement
10
12
  @resources = {}
13
+
14
+ # Register default resources
15
+ self << STDOUT
16
+ self << STDIN
17
+ self << STDERR
18
+ self << Browser
19
+ self << File
20
+ self << Directory
21
+ self << EnvironmentVariable
22
+
11
23
  yield self if block_given?
12
24
  end
13
25
 
@@ -15,12 +27,18 @@ module Terminalwire::Client::Resource
15
27
  @resources.values.each(&block)
16
28
  end
17
29
 
18
- def add(resource)
30
+ def add(resource_class)
31
+ # Get the resource name from its key
32
+ resource_name = resource_class.key
33
+
34
+ # Instantiate the resource with proper parameters
35
+ resource = resource_class.new(resource_name, @adapter, entitlement: @entitlement)
36
+
19
37
  # Detect if the resource is already registered and throw an error
20
- if @resources.key?(resource.name)
21
- raise "Resource #{resource.name} already registered"
38
+ if @resources.key?(resource_name)
39
+ raise "Resource #{resource_name} already registered"
22
40
  else
23
- @resources[resource.name] = resource
41
+ @resources[resource_name] = resource
24
42
  end
25
43
  end
26
44
  alias :<< :add
@@ -36,10 +54,12 @@ module Terminalwire::Client::Resource
36
54
 
37
55
  # Dispatcher, security, and response macros for resources.
38
56
  class Base < Terminalwire::Resource::Base
39
- def initialize(*, entitlement:, **)
40
- super(*, **)
57
+ def initialize(name = nil, adapter = nil, entitlement: nil)
58
+ # Use class key as default name if not provided
59
+ name ||= self.class.key if self.class.respond_to?(:key)
60
+ super(name, adapter)
41
61
  @entitlement = entitlement
42
- connect
62
+ connect if entitlement # Only connect if entitlement is provided
43
63
  end
44
64
 
45
65
  def command(command, **parameters)
@@ -63,6 +83,10 @@ module Terminalwire::Client::Resource
63
83
  end
64
84
 
65
85
  class EnvironmentVariable < Base
86
+ def self.key
87
+ "environment_variable"
88
+ end
89
+
66
90
  # Accepts a list of environment variables to permit.
67
91
  def read(name:)
68
92
  ENV[name]
@@ -80,6 +104,10 @@ module Terminalwire::Client::Resource
80
104
  end
81
105
 
82
106
  class STDOUT < Base
107
+ def self.key
108
+ "stdout"
109
+ end
110
+
83
111
  def connect
84
112
  @io = $stdout
85
113
  end
@@ -100,12 +128,20 @@ module Terminalwire::Client::Resource
100
128
  end
101
129
 
102
130
  class STDERR < STDOUT
131
+ def self.key
132
+ "stderr"
133
+ end
134
+
103
135
  def connect
104
136
  @io = $stderr
105
137
  end
106
138
  end
107
139
 
108
140
  class STDIN < Base
141
+ def self.key
142
+ "stdin"
143
+ end
144
+
109
145
  def connect
110
146
  @io = $stdin
111
147
  end
@@ -126,6 +162,10 @@ module Terminalwire::Client::Resource
126
162
  end
127
163
 
128
164
  class File < Base
165
+ def self.key
166
+ "file"
167
+ end
168
+
129
169
  File = ::File
130
170
 
131
171
  def read(path:)
@@ -160,6 +200,10 @@ module Terminalwire::Client::Resource
160
200
  end
161
201
 
162
202
  class Directory < Base
203
+ def self.key
204
+ "directory"
205
+ end
206
+
163
207
  File = ::File
164
208
 
165
209
  def list(path:)
@@ -188,6 +232,10 @@ module Terminalwire::Client::Resource
188
232
  end
189
233
 
190
234
  class Browser < Base
235
+ def self.key
236
+ "browser"
237
+ end
238
+
191
239
  def launch(url:)
192
240
  Launchy.open(URI(url))
193
241
  # TODO: This is a hack to get the `respond` method to work.
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terminalwire-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5.alpha2
4
+ version: 0.3.5.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Gessler
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-05-01 00:00:00.000000000 Z
10
+ date: 2025-10-24 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: launchy
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - '='
31
31
  - !ruby/object:Gem::Version
32
- version: 0.3.5.alpha2
32
+ version: 0.3.5.rc1
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - '='
38
38
  - !ruby/object:Gem::Version
39
- version: 0.3.5.alpha2
39
+ version: 0.3.5.rc1
40
40
  description: Stream command-line apps from your server without a web API
41
41
  email:
42
42
  - brad@terminalwire.com