1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#
# @synopsis: docker-url-handler
# @description: Internal script to handle opening docker/podman URLs
#
;SELECT jget(url, '/scheme') AS docker_scheme,
jget(url, '/host') AS docker_hostname,
jget(url, '/path') AS docker_path
FROM (SELECT parse_url($1) AS url)
;SELECT substr($docker_path, 2) AS docker_relpath
;SELECT CASE
$docker_hostname
WHEN 'compose' THEN (
SELECT group_concat(
printf(
':sh --name=%s %s-compose -f %s logs --no-log-prefix -f %s',
compose_services.key,
$docker_scheme,
$docker_relpath,
compose_services.key
),
char(10)
) AS cmds
FROM fstat($docker_relpath) AS st,
regexp_capture(
ifnull(
st.data,
raise_error(
'Cannot read compose configuration: ' || $docker_relpath,
st.error
)
),
'(?m)(?:^---$)?((?:(?:.|\n)(?!^(?:---|\.\.\.)$))+)'
) AS ydoc,
json_each(
yaml_to_json(
ydoc.content
),
'$.services'
) as compose_services
WHERE ydoc.match_index = 0
AND ydoc.capture_index = 1
)
ELSE CASE
$docker_path
WHEN '/' THEN printf(
':sh %s logs -f %s',
$docker_scheme,
$docker_hostname
)
ELSE printf(
':sh %s exec %s tail -n +0 -F "%s"',
$docker_scheme,
$docker_hostname,
$docker_path
)
END
END AS cmds
:eval ${cmds}
|