ask-ruby-harness 0.3.8 → 0.3.9
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/ask/ruby/harness/tools/dev_url.rb +26 -20
- data/lib/ask/ruby/harness/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aeda8f21e3664c1a58c3bf7e4ca6ecd046a70b0656a9a78a2937d73443679a8f
|
|
4
|
+
data.tar.gz: f6a3c5e98a2ba1f07b33a7f4ff22b3c1e4217c234660e9878fd3f6bdc47d7c0c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c8fb3af4ec2967728ec38353afcd20f5c2aafea939bf5949fcd2a3ee6e4992517c7c76138dc5dd96f7fdda338dc08f2405da69aac2d29e4c4d9b5b74834a41d3
|
|
7
|
+
data.tar.gz: 3c5855c7c2f4c79d466b0e99990a7ba6424c73517a4a84c2165f5dccc51b7f684a15a8dd5e8b143106d654b01606c0d25ff97951ac195fe595c3c4aceb00b349
|
|
@@ -4,15 +4,15 @@ module Ask
|
|
|
4
4
|
module Ruby
|
|
5
5
|
module Harness
|
|
6
6
|
module Tools
|
|
7
|
-
# Structured access to
|
|
7
|
+
# Structured access to yamine's stable dev URLs: active routes,
|
|
8
8
|
# plus name -> URL resolution that inherits the current directory's
|
|
9
9
|
# variant context. Replaces scraping ports out of logs.
|
|
10
10
|
#
|
|
11
|
-
#
|
|
11
|
+
# yamine is an optional dependency: the tool degrades to a clear
|
|
12
12
|
# failure result when the gem is absent so harness hosts without it
|
|
13
13
|
# lose nothing.
|
|
14
14
|
class DevUrl < Ask::Ruby::Harness::Tool
|
|
15
|
-
description "List
|
|
15
|
+
description "List yamine dev-server routes and resolve stable " \
|
|
16
16
|
".localhost URLs. Use instead of guessing ports: " \
|
|
17
17
|
"'list' shows every active route with its URL and " \
|
|
18
18
|
"backend; 'get' resolves a service name to its URL " \
|
|
@@ -22,12 +22,12 @@ module Ask
|
|
|
22
22
|
param :name, type: :string, desc: "Service name for get (e.g. backend)", required: false
|
|
23
23
|
|
|
24
24
|
def execute(action: "list", name: nil)
|
|
25
|
-
unless defined?(
|
|
25
|
+
unless defined?(Yamine)
|
|
26
26
|
begin
|
|
27
|
-
require "
|
|
27
|
+
require "yamine"
|
|
28
28
|
rescue LoadError
|
|
29
29
|
return Ask::Result.failure(
|
|
30
|
-
"
|
|
30
|
+
"yamine is not installed. Add `gem \"yamine\"` to the Gemfile " \
|
|
31
31
|
"for stable .localhost dev URLs."
|
|
32
32
|
)
|
|
33
33
|
end
|
|
@@ -43,14 +43,14 @@ module Ask
|
|
|
43
43
|
private
|
|
44
44
|
|
|
45
45
|
def list
|
|
46
|
-
store =
|
|
46
|
+
store = Yamine::RouteStore.new(resolve_state_dir)
|
|
47
47
|
routes = store.load_routes
|
|
48
|
-
port =
|
|
49
|
-
tls =
|
|
48
|
+
port = Yamine::ProxyControl.proxy_port(store)
|
|
49
|
+
tls = Yamine::ProxyControl.proxy_tls(store)
|
|
50
50
|
entries = routes.map do |route|
|
|
51
51
|
{
|
|
52
52
|
hostname: route["hostname"],
|
|
53
|
-
url:
|
|
53
|
+
url: Yamine::Hostname.url(route["hostname"], port: port, tls: tls),
|
|
54
54
|
target: route["target"],
|
|
55
55
|
kind: route["kind"],
|
|
56
56
|
supervised: !route["spec"].nil?,
|
|
@@ -58,23 +58,23 @@ module Ask
|
|
|
58
58
|
}
|
|
59
59
|
end
|
|
60
60
|
{ routes: entries, proxy_port: port, count: entries.length }
|
|
61
|
-
rescue
|
|
61
|
+
rescue Yamine::Error => e
|
|
62
62
|
Ask::Result.failure(e.message)
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
def get(name)
|
|
66
66
|
return Ask::Result.failure("Name is required for action 'get'.") if name.nil? || name.to_s.strip.empty?
|
|
67
67
|
|
|
68
|
-
resolved =
|
|
69
|
-
hostnames =
|
|
70
|
-
app:
|
|
71
|
-
tlds: [resolved.tld ||
|
|
68
|
+
resolved = Yamine::Resolver.resolve(app_root.to_s, variant: ENV["ASK_LOCAL_VARIANT"])
|
|
69
|
+
hostnames = Yamine::Hostname.build(
|
|
70
|
+
app: Yamine::Sanitize.hostname_label(name),
|
|
71
|
+
tlds: [resolved.tld || Yamine::Hostname::DEFAULT_TLD],
|
|
72
72
|
variant: resolved.variant
|
|
73
73
|
)
|
|
74
|
-
store =
|
|
75
|
-
port =
|
|
76
|
-
tls =
|
|
77
|
-
url =
|
|
74
|
+
store = Yamine::RouteStore.new(resolve_state_dir)
|
|
75
|
+
port = Yamine::ProxyControl.proxy_port(store)
|
|
76
|
+
tls = Yamine::ProxyControl.proxy_tls(store)
|
|
77
|
+
url = Yamine::Hostname.url(hostnames.first, port: port, tls: tls)
|
|
78
78
|
{
|
|
79
79
|
name: name,
|
|
80
80
|
url: url,
|
|
@@ -82,9 +82,15 @@ module Ask
|
|
|
82
82
|
tld: resolved.tld,
|
|
83
83
|
registered: !store.find(hostnames.first).nil?
|
|
84
84
|
}
|
|
85
|
-
rescue
|
|
85
|
+
rescue Yamine::Error => e
|
|
86
86
|
Ask::Result.failure(e.message)
|
|
87
87
|
end
|
|
88
|
+
|
|
89
|
+
# Bridge the ASK_LOCAL_STATE_DIR env var (used by the ask-local
|
|
90
|
+
# harness) to yamine's YAMINE_STATE_DIR / default ~/.yamine path.
|
|
91
|
+
def resolve_state_dir
|
|
92
|
+
ENV["ASK_LOCAL_STATE_DIR"] || Yamine::Certs.state_dir
|
|
93
|
+
end
|
|
88
94
|
end
|
|
89
95
|
end
|
|
90
96
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ask-ruby-harness
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kaka Ruto
|
|
@@ -57,14 +57,14 @@ dependencies:
|
|
|
57
57
|
requirements:
|
|
58
58
|
- - ">="
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: 0.40.
|
|
60
|
+
version: 0.40.18
|
|
61
61
|
type: :runtime
|
|
62
62
|
prerelease: false
|
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
65
|
- - ">="
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: 0.40.
|
|
67
|
+
version: 0.40.18
|
|
68
68
|
- !ruby/object:Gem::Dependency
|
|
69
69
|
name: sqlite3
|
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|