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 +4 -4
- data/lib/terminalwire/client/handler.rb +7 -12
- data/lib/terminalwire/client/resource.rb +56 -8
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a9be7d471f5b59d1c6ea38379eb86a6775989432e3e77724395ef16b653d40c4
|
|
4
|
+
data.tar.gz: bcf718fed5322c5e812f4c7ef25f68d332cd84cf1c3ed195751d7376e6b4243a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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(
|
|
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(
|
|
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?(
|
|
21
|
-
raise "Resource #{
|
|
38
|
+
if @resources.key?(resource_name)
|
|
39
|
+
raise "Resource #{resource_name} already registered"
|
|
22
40
|
else
|
|
23
|
-
@resources[
|
|
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(
|
|
40
|
-
|
|
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.
|
|
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-
|
|
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.
|
|
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.
|
|
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
|