@calltelemetry/cli 0.2.6 → 0.3.1

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.
Files changed (108) hide show
  1. package/dist/commands/update.d.ts.map +1 -1
  2. package/dist/commands/update.js +16 -41
  3. package/dist/commands/update.js.map +1 -1
  4. package/dist/index.js +3 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/bundle.d.ts +16 -1
  7. package/dist/lib/bundle.d.ts.map +1 -1
  8. package/dist/lib/bundle.js +64 -14
  9. package/dist/lib/bundle.js.map +1 -1
  10. package/dist/lib/rpc-scripts.d.ts +2 -0
  11. package/dist/lib/rpc-scripts.d.ts.map +1 -0
  12. package/dist/lib/rpc-scripts.js +55 -0
  13. package/dist/lib/rpc-scripts.js.map +1 -0
  14. package/dist/lib/update.d.ts +13 -0
  15. package/dist/lib/update.d.ts.map +1 -0
  16. package/dist/lib/update.js +67 -0
  17. package/dist/lib/update.js.map +1 -0
  18. package/dist/ui/components/Section.d.ts.map +1 -1
  19. package/dist/ui/components/Section.js +4 -2
  20. package/dist/ui/components/Section.js.map +1 -1
  21. package/dist/ui/components/SelectMenu.d.ts.map +1 -1
  22. package/dist/ui/components/SelectMenu.js +7 -1
  23. package/dist/ui/components/SelectMenu.js.map +1 -1
  24. package/dist/ui/hooks/useComposeLogs.d.ts.map +1 -1
  25. package/dist/ui/hooks/useComposeLogs.js +8 -2
  26. package/dist/ui/hooks/useComposeLogs.js.map +1 -1
  27. package/dist/ui/hooks/usePolling.d.ts.map +1 -1
  28. package/dist/ui/hooks/usePolling.js +6 -0
  29. package/dist/ui/hooks/usePolling.js.map +1 -1
  30. package/dist/ui/utils/serviceDisplay.d.ts +5 -0
  31. package/dist/ui/utils/serviceDisplay.d.ts.map +1 -0
  32. package/dist/ui/utils/serviceDisplay.js +43 -0
  33. package/dist/ui/utils/serviceDisplay.js.map +1 -0
  34. package/dist/ui/views/CertsStatusView.js +1 -1
  35. package/dist/ui/views/CertsStatusView.js.map +1 -1
  36. package/dist/ui/views/DbBackupView.js +1 -1
  37. package/dist/ui/views/DbBackupView.js.map +1 -1
  38. package/dist/ui/views/DbCompactView.js +1 -1
  39. package/dist/ui/views/DbCompactView.js.map +1 -1
  40. package/dist/ui/views/DbListView.js +1 -1
  41. package/dist/ui/views/DbListView.js.map +1 -1
  42. package/dist/ui/views/DbSizeView.js +1 -1
  43. package/dist/ui/views/DbSizeView.js.map +1 -1
  44. package/dist/ui/views/DbStatusView.js +1 -1
  45. package/dist/ui/views/DbStatusView.js.map +1 -1
  46. package/dist/ui/views/DbTablesView.d.ts.map +1 -1
  47. package/dist/ui/views/DbTablesView.js +4 -3
  48. package/dist/ui/views/DbTablesView.js.map +1 -1
  49. package/dist/ui/views/DiagDatabaseView.js +1 -1
  50. package/dist/ui/views/DiagDatabaseView.js.map +1 -1
  51. package/dist/ui/views/DiagNetworkView.d.ts.map +1 -1
  52. package/dist/ui/views/DiagNetworkView.js +1 -17
  53. package/dist/ui/views/DiagNetworkView.js.map +1 -1
  54. package/dist/ui/views/DiagServiceView.js +1 -1
  55. package/dist/ui/views/DiagServiceView.js.map +1 -1
  56. package/dist/ui/views/DockerNetworkView.d.ts.map +1 -1
  57. package/dist/ui/views/DockerNetworkView.js +22 -4
  58. package/dist/ui/views/DockerNetworkView.js.map +1 -1
  59. package/dist/ui/views/DockerPruneView.d.ts.map +1 -1
  60. package/dist/ui/views/DockerPruneView.js +13 -6
  61. package/dist/ui/views/DockerPruneView.js.map +1 -1
  62. package/dist/ui/views/DockerStatusView.js +1 -1
  63. package/dist/ui/views/DockerStatusView.js.map +1 -1
  64. package/dist/ui/views/JtapiDisableView.js +1 -1
  65. package/dist/ui/views/JtapiDisableView.js.map +1 -1
  66. package/dist/ui/views/JtapiEnableView.js +1 -1
  67. package/dist/ui/views/JtapiEnableView.js.map +1 -1
  68. package/dist/ui/views/JtapiStatusView.js +1 -1
  69. package/dist/ui/views/JtapiStatusView.js.map +1 -1
  70. package/dist/ui/views/JtapiTroubleshootView.js +1 -1
  71. package/dist/ui/views/JtapiTroubleshootView.js.map +1 -1
  72. package/dist/ui/views/MainMenu.d.ts.map +1 -1
  73. package/dist/ui/views/MainMenu.js +66 -65
  74. package/dist/ui/views/MainMenu.js.map +1 -1
  75. package/dist/ui/views/MigrateHistoryView.js +1 -1
  76. package/dist/ui/views/MigrateHistoryView.js.map +1 -1
  77. package/dist/ui/views/MigrateRollbackView.d.ts.map +1 -1
  78. package/dist/ui/views/MigrateRollbackView.js +16 -5
  79. package/dist/ui/views/MigrateRollbackView.js.map +1 -1
  80. package/dist/ui/views/MigrateRunView.d.ts.map +1 -1
  81. package/dist/ui/views/MigrateRunView.js +16 -5
  82. package/dist/ui/views/MigrateRunView.js.map +1 -1
  83. package/dist/ui/views/MigrateStatusView.d.ts.map +1 -1
  84. package/dist/ui/views/MigrateStatusView.js +2 -55
  85. package/dist/ui/views/MigrateStatusView.js.map +1 -1
  86. package/dist/ui/views/MigrateWatchView.d.ts.map +1 -1
  87. package/dist/ui/views/MigrateWatchView.js +2 -55
  88. package/dist/ui/views/MigrateWatchView.js.map +1 -1
  89. package/dist/ui/views/OfflineListView.js +1 -1
  90. package/dist/ui/views/OfflineListView.js.map +1 -1
  91. package/dist/ui/views/SecretsStatusView.js +1 -1
  92. package/dist/ui/views/SecretsStatusView.js.map +1 -1
  93. package/dist/ui/views/ServiceLogsView.js +1 -1
  94. package/dist/ui/views/ServiceLogsView.js.map +1 -1
  95. package/dist/ui/views/ServicesView.d.ts.map +1 -1
  96. package/dist/ui/views/ServicesView.js +7 -54
  97. package/dist/ui/views/ServicesView.js.map +1 -1
  98. package/dist/ui/views/StatusView.js +1 -1
  99. package/dist/ui/views/StatusView.js.map +1 -1
  100. package/dist/ui/views/UpdateView.d.ts +6 -0
  101. package/dist/ui/views/UpdateView.d.ts.map +1 -0
  102. package/dist/ui/views/UpdateView.js +302 -0
  103. package/dist/ui/views/UpdateView.js.map +1 -0
  104. package/dist/utils/version.d.ts +7 -0
  105. package/dist/utils/version.d.ts.map +1 -1
  106. package/dist/utils/version.js +66 -9
  107. package/dist/utils/version.js.map +1 -1
  108. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateHistoryView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateHistoryView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MigrateHistoryView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateHistoryView.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateRollbackView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MigrateRollbackView.tsx"],"names":[],"mappings":"AAOA,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,KAAS,EAAE,MAAM,EAAE,EAAE,wBAAwB,2CA8DlF"}
1
+ {"version":3,"file":"MigrateRollbackView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MigrateRollbackView.tsx"],"names":[],"mappings":"AAOA,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,KAAS,EAAE,MAAM,EAAE,EAAE,wBAAwB,2CA4ElF"}
@@ -1,12 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect } from 'react';
2
+ import { useState, useEffect } from 'react';
3
3
  import { Box, Text, useInput } from 'ink';
4
4
  import { composePs } from '../../lib/compose.js';
5
5
  import { rpc, rpcOk } from '../../lib/rpc.js';
6
- import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
6
+ import { AppShell, Section, ShellOutput, Spinner, StatusLine, Confirm } from '../components/index.js';
7
7
  import { useAsyncTask, useFinish } from '../hooks/index.js';
8
8
  export function MigrateRollbackView({ steps = 1, onBack }) {
9
9
  const finish = useFinish(onBack);
10
+ const [confirmed, setConfirmed] = useState(false);
10
11
  const readyTask = useAsyncTask(async () => {
11
12
  const container = await composePs('web');
12
13
  if (!container)
@@ -14,7 +15,7 @@ export function MigrateRollbackView({ steps = 1, onBack }) {
14
15
  if (!await rpcOk())
15
16
  throw new Error('Cannot connect to application via RPC. It may still be starting up.');
16
17
  return true;
17
- });
18
+ }, false);
18
19
  const rollbackTask = useAsyncTask(async () => {
19
20
  const output = await rpc(`
20
21
  IO.puts("=== Rolling Back Migrations ===")
@@ -36,6 +37,11 @@ export function MigrateRollbackView({ steps = 1, onBack }) {
36
37
  `);
37
38
  return output;
38
39
  }, false);
40
+ // Start ready check after confirmation
41
+ useEffect(() => {
42
+ if (confirmed)
43
+ readyTask.run();
44
+ }, [confirmed]);
39
45
  // Chain: run rollback after ready check passes
40
46
  useEffect(() => {
41
47
  if (readyTask.status === 'done')
@@ -46,9 +52,14 @@ export function MigrateRollbackView({ steps = 1, onBack }) {
46
52
  useEffect(() => { if (allDone && !onBack)
47
53
  finish(); }, [allDone, onBack, finish]);
48
54
  useInput((input, key) => {
49
- if (onBack && allDone && (input === 'q' || key.escape))
55
+ if (!confirmed && (input === 'n' || input === 'q' || key.escape || key.leftArrow))
56
+ finish();
57
+ if (onBack && allDone && (input === 'q' || key.escape || key.leftArrow))
50
58
  finish();
51
59
  });
52
- return (_jsxs(AppShell, { command: "ct migrate rollback", children: [_jsxs(Section, { title: `Rollback Migrations (${steps} step${steps === 1 ? '' : 's'})`, children: [readyTask.status === 'pending' && _jsx(Spinner, { label: "Checking web container..." }), readyTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: readyTask.error?.message ?? 'Web container not ready' }), readyTask.status === 'done' && rollbackTask.status === 'pending' && _jsx(Spinner, { label: `Rolling back ${steps} migration${steps === 1 ? '' : 's'}...` }), rollbackTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: rollbackTask.error?.message ?? 'Migration rollback failed' }), rollbackTask.status === 'done' && rollbackTask.data && _jsx(ShellOutput, { content: rollbackTask.data }), rollbackTask.status === 'done' && _jsx(StatusLine, { status: "ok", label: "Migration rollback completed" })] }), onBack && allDone && (_jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "Press q to go back" }) }))] }));
60
+ return (_jsxs(AppShell, { command: "ct migrate rollback", children: [!confirmed && (_jsx(Section, { title: `Rollback Migrations (${steps} step${steps === 1 ? '' : 's'})`, children: _jsx(Confirm, { message: "Rollback last migration? This may cause data loss.", onConfirm: (yes) => { if (yes)
61
+ setConfirmed(true);
62
+ else
63
+ finish(); } }) })), confirmed && (_jsxs(Section, { title: `Rollback Migrations (${steps} step${steps === 1 ? '' : 's'})`, children: [readyTask.status === 'pending' && _jsx(Spinner, { label: "Checking web container..." }), readyTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: readyTask.error?.message ?? 'Web container not ready' }), readyTask.status === 'done' && rollbackTask.status === 'pending' && _jsx(Spinner, { label: `Rolling back ${steps} migration${steps === 1 ? '' : 's'}...` }), rollbackTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: rollbackTask.error?.message ?? 'Migration rollback failed' }), rollbackTask.status === 'done' && rollbackTask.data && _jsx(ShellOutput, { content: rollbackTask.data }), rollbackTask.status === 'done' && _jsx(StatusLine, { status: "ok", label: "Migration rollback completed" })] })), onBack && allDone && (_jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "Press q to go back" }) }))] }));
53
64
  }
54
65
  //# sourceMappingURL=MigrateRollbackView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateRollbackView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateRollbackView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MigrateRollbackView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateRollbackView.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateRunView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MigrateRunView.tsx"],"names":[],"mappings":"AAOA,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,mBAAmB,2CA8D7D"}
1
+ {"version":3,"file":"MigrateRunView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MigrateRunView.tsx"],"names":[],"mappings":"AAOA,UAAU,mBAAmB;IAC3B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,mBAAmB,2CA4E7D"}
@@ -1,12 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect } from 'react';
2
+ import { useState, useEffect } from 'react';
3
3
  import { Box, Text, useInput } from 'ink';
4
4
  import { composePs } from '../../lib/compose.js';
5
5
  import { rpc, rpcOk } from '../../lib/rpc.js';
6
- import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
6
+ import { AppShell, Section, ShellOutput, Spinner, StatusLine, Confirm } from '../components/index.js';
7
7
  import { useAsyncTask, useFinish } from '../hooks/index.js';
8
8
  export function MigrateRunView({ onBack }) {
9
9
  const finish = useFinish(onBack);
10
+ const [confirmed, setConfirmed] = useState(false);
10
11
  const readyTask = useAsyncTask(async () => {
11
12
  const container = await composePs('web');
12
13
  if (!container)
@@ -14,7 +15,7 @@ export function MigrateRunView({ onBack }) {
14
15
  if (!await rpcOk())
15
16
  throw new Error('Cannot connect to application via RPC. It may still be starting up.');
16
17
  return true;
17
- });
18
+ }, false);
18
19
  const runTask = useAsyncTask(async () => {
19
20
  const output = await rpc(`
20
21
  IO.puts("=== Running Migrations ===")
@@ -36,6 +37,11 @@ export function MigrateRunView({ onBack }) {
36
37
  `);
37
38
  return output;
38
39
  }, false);
40
+ // Start ready check after confirmation
41
+ useEffect(() => {
42
+ if (confirmed)
43
+ readyTask.run();
44
+ }, [confirmed]);
39
45
  // Chain: run migrations after ready check passes
40
46
  useEffect(() => {
41
47
  if (readyTask.status === 'done')
@@ -46,9 +52,14 @@ export function MigrateRunView({ onBack }) {
46
52
  useEffect(() => { if (allDone && !onBack)
47
53
  finish(); }, [allDone, onBack, finish]);
48
54
  useInput((input, key) => {
49
- if (onBack && allDone && (input === 'q' || key.escape))
55
+ if (!confirmed && (input === 'n' || input === 'q' || key.escape || key.leftArrow))
56
+ finish();
57
+ if (onBack && allDone && (input === 'q' || key.escape || key.leftArrow))
50
58
  finish();
51
59
  });
52
- return (_jsxs(AppShell, { command: "ct migrate run", children: [_jsxs(Section, { title: "Run Migrations", children: [readyTask.status === 'pending' && _jsx(Spinner, { label: "Checking web container..." }), readyTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: readyTask.error?.message ?? 'Web container not ready' }), readyTask.status === 'done' && runTask.status === 'pending' && _jsx(Spinner, { label: "Running pending migrations..." }), runTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: runTask.error?.message ?? 'Migration run failed' }), runTask.status === 'done' && runTask.data && _jsx(ShellOutput, { content: runTask.data }), runTask.status === 'done' && _jsx(StatusLine, { status: "ok", label: "Migration run completed" })] }), onBack && allDone && (_jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "Press q to go back" }) }))] }));
60
+ return (_jsxs(AppShell, { command: "ct migrate run", children: [!confirmed && (_jsx(Section, { title: "Run Migrations", children: _jsx(Confirm, { message: "Run pending database migrations?", onConfirm: (yes) => { if (yes)
61
+ setConfirmed(true);
62
+ else
63
+ finish(); } }) })), confirmed && (_jsxs(Section, { title: "Run Migrations", children: [readyTask.status === 'pending' && _jsx(Spinner, { label: "Checking web container..." }), readyTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: readyTask.error?.message ?? 'Web container not ready' }), readyTask.status === 'done' && runTask.status === 'pending' && _jsx(Spinner, { label: "Running pending migrations..." }), runTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: runTask.error?.message ?? 'Migration run failed' }), runTask.status === 'done' && runTask.data && _jsx(ShellOutput, { content: runTask.data }), runTask.status === 'done' && _jsx(StatusLine, { status: "ok", label: "Migration run completed" })] })), onBack && allDone && (_jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "Press q to go back" }) }))] }));
53
64
  }
54
65
  //# sourceMappingURL=MigrateRunView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateRunView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateRunView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MigrateRunView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateRunView.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateStatusView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MigrateStatusView.tsx"],"names":[],"mappings":"AA8DA,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,sBAAsB,2CA6CnE"}
1
+ {"version":3,"file":"MigrateStatusView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MigrateStatusView.tsx"],"names":[],"mappings":"AAQA,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,sBAAsB,2CA6CnE"}
@@ -3,62 +3,9 @@ import { useEffect } from 'react';
3
3
  import { Box, Text, useInput } from 'ink';
4
4
  import { composePs } from '../../lib/compose.js';
5
5
  import { rpc, rpcOk } from '../../lib/rpc.js';
6
+ import { MIGRATION_STATUS_RPC } from '../../lib/rpc-scripts.js';
6
7
  import { AppShell, Section, StatusLine, ShellOutput, Spinner } from '../components/index.js';
7
8
  import { useAsyncTask, useFinish } from '../hooks/index.js';
8
- const MIGRATION_STATUS_RPC = `
9
- alias Cdrcisco.Repo
10
- import Ecto.Query
11
-
12
- try do
13
- migrations = Ecto.Migrator.migrations(Repo)
14
- ordered = Enum.sort_by(migrations, fn {_, version, _} -> version end)
15
- {applied, pending} = Enum.split_with(ordered, fn {status, _, _} -> status == :up end)
16
- total = length(ordered)
17
- applied_count = length(applied)
18
- pending_count = length(pending)
19
-
20
- percent = if total == 0, do: 100.0, else: Float.round(applied_count / total * 100, 1)
21
-
22
- latest = Repo.one(
23
- from sm in "schema_migrations",
24
- order_by: [desc: sm.version],
25
- limit: 1,
26
- select: %{version: sm.version, inserted_at: sm.inserted_at}
27
- )
28
-
29
- IO.puts("=== Migration Progress ===")
30
- IO.puts("Applied migrations: \#{applied_count}/\#{total} (\#{percent}%)")
31
- IO.puts("Pending migrations: \#{pending_count}")
32
-
33
- case latest do
34
- %{version: version, inserted_at: timestamp} ->
35
- IO.puts("Latest applied: \#{version} @ \#{timestamp}")
36
- _ ->
37
- IO.puts("Latest applied: none recorded")
38
- end
39
-
40
- IO.puts("")
41
-
42
- if pending_count > 0 do
43
- {_, next_version, next_name} = hd(pending)
44
- IO.puts("Next pending: \#{next_version} - \#{next_name}")
45
- IO.puts("")
46
- IO.puts("=== Pending Queue ===")
47
- Enum.with_index(pending, 1)
48
- |> Enum.each(fn {{_, version, name}, idx} ->
49
- IO.puts("[\#{idx}/\#{pending_count}] \#{version} - \#{name}")
50
- end)
51
- else
52
- IO.puts("All migrations are up to date!")
53
- end
54
-
55
- IO.puts("::pending_count=\#{pending_count}")
56
- rescue
57
- e ->
58
- IO.puts("Error checking migrations: \#{inspect(e)}")
59
- IO.puts("::pending_count=error")
60
- end
61
- `;
62
9
  export function MigrateStatusView({ onBack }) {
63
10
  const finish = useFinish(onBack);
64
11
  const readyTask = useAsyncTask(async () => {
@@ -84,7 +31,7 @@ export function MigrateStatusView({ onBack }) {
84
31
  useEffect(() => { if (allDone && !onBack)
85
32
  finish(); }, [allDone, onBack, finish]);
86
33
  useInput((input, key) => {
87
- if (onBack && allDone && (input === 'q' || key.escape))
34
+ if (onBack && allDone && (input === 'q' || key.escape || key.leftArrow))
88
35
  finish();
89
36
  });
90
37
  return (_jsxs(AppShell, { command: "ct migrate status", children: [_jsxs(Section, { title: "Migration Status", children: [readyTask.status === 'pending' && _jsx(Spinner, { label: "Checking web container..." }), readyTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: readyTask.error?.message ?? 'Web container not ready' }), statusTask.status === 'pending' && _jsx(Spinner, { label: "Querying migration status..." }), statusTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Failed to query migrations" }), statusTask.status === 'done' && statusTask.data && _jsx(ShellOutput, { content: statusTask.data })] }), onBack && allDone && (_jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "Press q to go back" }) }))] }));
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateStatusView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateStatusView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MigrateStatusView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateStatusView.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateWatchView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MigrateWatchView.tsx"],"names":[],"mappings":"AA6DA,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,qBAAqB,2CAgD3E"}
1
+ {"version":3,"file":"MigrateWatchView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MigrateWatchView.tsx"],"names":[],"mappings":"AAOA,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,qBAAqB,2CAgD3E"}
@@ -2,62 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useRef } from 'react';
3
3
  import { Box, Text, useInput } from 'ink';
4
4
  import { rpc } from '../../lib/rpc.js';
5
+ import { MIGRATION_STATUS_RPC } from '../../lib/rpc-scripts.js';
5
6
  import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
6
7
  import { usePolling, useFinish } from '../hooks/index.js';
7
- const MIGRATION_STATUS_RPC = `
8
- alias Cdrcisco.Repo
9
- import Ecto.Query
10
-
11
- try do
12
- migrations = Ecto.Migrator.migrations(Repo)
13
- ordered = Enum.sort_by(migrations, fn {_, version, _} -> version end)
14
- {applied, pending} = Enum.split_with(ordered, fn {status, _, _} -> status == :up end)
15
- total = length(ordered)
16
- applied_count = length(applied)
17
- pending_count = length(pending)
18
-
19
- percent = if total == 0, do: 100.0, else: Float.round(applied_count / total * 100, 1)
20
-
21
- latest = Repo.one(
22
- from sm in "schema_migrations",
23
- order_by: [desc: sm.version],
24
- limit: 1,
25
- select: %{version: sm.version, inserted_at: sm.inserted_at}
26
- )
27
-
28
- IO.puts("=== Migration Progress ===")
29
- IO.puts("Applied migrations: \#{applied_count}/\#{total} (\#{percent}%)")
30
- IO.puts("Pending migrations: \#{pending_count}")
31
-
32
- case latest do
33
- %{version: version, inserted_at: timestamp} ->
34
- IO.puts("Latest applied: \#{version} @ \#{timestamp}")
35
- _ ->
36
- IO.puts("Latest applied: none recorded")
37
- end
38
-
39
- IO.puts("")
40
-
41
- if pending_count > 0 do
42
- {_, next_version, next_name} = hd(pending)
43
- IO.puts("Next pending: \#{next_version} - \#{next_name}")
44
- IO.puts("")
45
- IO.puts("=== Pending Queue ===")
46
- Enum.with_index(pending, 1)
47
- |> Enum.each(fn {{_, version, name}, idx} ->
48
- IO.puts("[\#{idx}/\#{pending_count}] \#{version} - \#{name}")
49
- end)
50
- else
51
- IO.puts("All migrations are up to date!")
52
- end
53
-
54
- IO.puts("::pending_count=\#{pending_count}")
55
- rescue
56
- e ->
57
- IO.puts("Error checking migrations: \#{inspect(e)}")
58
- IO.puts("::pending_count=error")
59
- end
60
- `;
61
8
  export function MigrateWatchView({ interval, onBack }) {
62
9
  const finish = useFinish(onBack);
63
10
  const stoppedRef = useRef(false);
@@ -81,7 +28,7 @@ export function MigrateWatchView({ interval, onBack }) {
81
28
  }
82
29
  }, [pendingCount, stop, onBack, finish]);
83
30
  useInput((input, key) => {
84
- if (onBack && watchDone && (input === 'q' || key.escape))
31
+ if (onBack && watchDone && (input === 'q' || key.escape || key.leftArrow))
85
32
  finish();
86
33
  });
87
34
  return (_jsxs(AppShell, { command: "ct migrate watch", children: [_jsxs(Section, { title: `Watch Migrations (interval: ${interval / 1000}s)`, children: [!data && !error && _jsx(Spinner, { label: "Polling migration status..." }), error && _jsx(StatusLine, { status: "warn", label: `Error: ${error.message}` }), data && displayContent && _jsx(ShellOutput, { content: displayContent }), pendingCount === '0' && _jsx(StatusLine, { status: "ok", label: "All migrations are up to date. Exiting watch mode." }), data && pendingCount !== '0' && pendingCount !== 'error' && (_jsx(Text, { dimColor: true, children: ` Next refresh in ${interval / 1000}s... Press Ctrl+C to stop.` }))] }), onBack && watchDone && (_jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "Press q to go back" }) }))] }));
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateWatchView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateWatchView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MigrateWatchView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateWatchView.tsx"],"names":[],"mappings":"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"}
@@ -41,7 +41,7 @@ export function OfflineListView({ onBack }) {
41
41
  finish();
42
42
  }, [listDone, onBack, finish]);
43
43
  useInput((input, key) => {
44
- if (onBack && listDone && (input === 'q' || key.escape))
44
+ if (onBack && listDone && (input === 'q' || key.escape || key.leftArrow))
45
45
  finish();
46
46
  });
47
47
  return (_jsxs(AppShell, { command: "ct offline list", children: [_jsxs(Section, { title: "Images in docker-compose.yml", children: [listTask.status === 'pending' && _jsx(Spinner, { label: "Inspecting images..." }), listTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: listTask.error?.message ?? 'Failed' }), listTask.status === 'done' && listTask.data && (_jsxs(_Fragment, { children: [_jsx(KeyValue, { items: listTask.data.images.map(item => ({
@@ -1 +1 @@
1
- {"version":3,"file":"OfflineListView.js","sourceRoot":"","sources":["../../../src/ui/views/OfflineListView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAM5D,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAAwB;IAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QACvC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACrD,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,OAAO,GAAqC,EAAE,CAAC;QACrD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE;oBAC3F,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;iBAC/B,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC;IAE3E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,IAAI,CAAC,MAAM;YAAE,MAAM,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE/B,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,MAAM,IAAI,QAAQ,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;YAAE,MAAM,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,QAAQ,IAAC,OAAO,EAAC,iBAAiB,aACjC,MAAC,OAAO,IAAC,KAAK,EAAC,8BAA8B,aAC1C,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,sBAAsB,GAAG,EACzE,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,GAAI,EACvG,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,IAAI,CAC9C,8BACE,KAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oCACjD,GAAG,EAAE,IAAI,CAAC,GAAG;oCACb,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE;iCACzF,CAAC,CAAC,GAAI,EACP,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAE,iBAAiB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAI,IAC1E,CACJ,IACO,EACT,MAAM,IAAI,QAAQ,IAAI,CACrB,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,QAAQ,yCAA0B,GACpC,CACP,IACQ,CACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"OfflineListView.js","sourceRoot":"","sources":["../../../src/ui/views/OfflineListView.tsx"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export function SecretsStatusView({ onBack }) {
18
18
  }
19
19
  }, [onBack, finish]);
20
20
  useInput((input, key) => {
21
- if (onBack && (input === 'q' || key.escape))
21
+ if (onBack && (input === 'q' || key.escape || key.leftArrow))
22
22
  finish();
23
23
  });
24
24
  const getStatus = (key, defaultValue) => {
@@ -1 +1 @@
1
- {"version":3,"file":"SecretsStatusView.js","sourceRoot":"","sources":["../../../src/ui/views/SecretsStatusView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SecretsStatusView.js","sourceRoot":"","sources":["../../../src/ui/views/SecretsStatusView.tsx"],"names":[],"mappings":"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"}
@@ -84,7 +84,7 @@ export function ServiceLogsView({ service, tail, onBack }) {
84
84
  return;
85
85
  }
86
86
  // Normal mode
87
- if (input === 'q' || key.escape) {
87
+ if (input === 'q' || key.escape || key.leftArrow) {
88
88
  stop();
89
89
  finish();
90
90
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceLogsView.js","sourceRoot":"","sources":["../../../src/ui/views/ServiceLogsView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ServiceLogsView.js","sourceRoot":"","sources":["../../../src/ui/views/ServiceLogsView.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ServicesView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/ServicesView.tsx"],"names":[],"mappings":"AAoBA,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAsWD,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CAK1E"}
1
+ {"version":3,"file":"ServicesView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/ServicesView.tsx"],"names":[],"mappings":"AAqBA,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAqUD,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CAK1E"}
@@ -5,6 +5,7 @@ import { AppShell, Section, StepList, Spinner } from '../components/index.js';
5
5
  import { usePolling, useStepRunner, useFinish } from '../hooks/index.js';
6
6
  import { getServiceList, startService, stopService, restartService, startAllServices, stopAllServices, } from '../../lib/services.js';
7
7
  import { ServiceLogsView } from './ServiceLogsView.js';
8
+ import { healthIcon, healthColor, extractVersion, extractUptime } from '../utils/serviceDisplay.js';
8
9
  /* ------------------------------------------------------------------ */
9
10
  /* Non-interactive (one-shot) mode */
10
11
  /* ------------------------------------------------------------------ */
@@ -50,56 +51,6 @@ function OneShotView({ action, service, onBack }) {
50
51
  }, [isDone, finish]);
51
52
  return (_jsx(AppShell, { command: `ct services ${action} ${service}`, children: _jsx(Section, { title: `${action.charAt(0).toUpperCase() + action.slice(1)} Service`, children: _jsx(StepList, { steps: states }) }) }));
52
53
  }
53
- /* ------------------------------------------------------------------ */
54
- /* Health / state helpers */
55
- /* ------------------------------------------------------------------ */
56
- function healthIcon(health, state) {
57
- if (state === 'exited' || state === 'dead')
58
- return '●';
59
- if (health === 'healthy')
60
- return '●';
61
- if (health === 'unhealthy')
62
- return '●';
63
- if (health === 'starting')
64
- return '●';
65
- if (state === 'running')
66
- return '●';
67
- return '○';
68
- }
69
- function healthColor(health, state) {
70
- if (state === 'exited' || state === 'dead')
71
- return 'red';
72
- if (health === 'healthy')
73
- return 'green';
74
- if (health === 'unhealthy')
75
- return 'red';
76
- if (health === 'starting')
77
- return 'yellow';
78
- if (state === 'running')
79
- return 'green';
80
- return 'gray';
81
- }
82
- function extractVersion(image) {
83
- if (!image)
84
- return '';
85
- const tag = image.includes(':') ? image.split(':').pop() : image;
86
- // Trim registry/org prefixes from the tag portion if it leaked through
87
- return tag;
88
- }
89
- function extractUptime(status) {
90
- if (!status)
91
- return '';
92
- // "Up 36 minutes (healthy)" -> "36m"
93
- const m = status.match(/Up\s+(?:About\s+)?(\d+)\s*(second|minute|hour|day|week|month)/i);
94
- if (!m) {
95
- if (status.toLowerCase().startsWith('exited'))
96
- return 'exited';
97
- return status.replace(/\s*\(.*\)/, '').trim();
98
- }
99
- const n = m[1];
100
- const unit = m[2].charAt(0);
101
- return `${n}${unit}`;
102
- }
103
54
  function formatPorts(ports) {
104
55
  if (!ports)
105
56
  return '';
@@ -122,11 +73,13 @@ function InteractiveView({ onBack }) {
122
73
  const [cursor, setCursor] = useState(0);
123
74
  const [actionState, setActionState] = useState(null);
124
75
  const [actionRunning, setActionRunning] = useState(false);
76
+ const [actionError, setActionError] = useState(null);
125
77
  const [logsService, setLogsService] = useState(null);
126
78
  const { data: services, error, start: startPolling, stop: stopPolling } = usePolling(getServiceList, 3000);
127
79
  // Execute an action and return to list
128
80
  const executeAction = useCallback(async (label, fn) => {
129
81
  setPhase('action');
82
+ setActionError(null);
130
83
  stopPolling();
131
84
  setActionState({ label, run: fn });
132
85
  }, [stopPolling]);
@@ -137,8 +90,8 @@ function InteractiveView({ onBack }) {
137
90
  setActionRunning(true);
138
91
  actionState
139
92
  .run()
140
- .catch(() => {
141
- // silently return to list on error
93
+ .catch((err) => {
94
+ setActionError(err instanceof Error ? err.message : String(err));
142
95
  })
143
96
  .finally(() => {
144
97
  setActionState(null);
@@ -189,7 +142,7 @@ function InteractiveView({ onBack }) {
189
142
  else if (input === 'X') {
190
143
  executeAction('Stopping all services...', () => stopAllServices().then(() => { }));
191
144
  }
192
- else if (input === 'q' || key.escape) {
145
+ else if (input === 'q' || key.escape || key.leftArrow) {
193
146
  finish();
194
147
  }
195
148
  });
@@ -228,7 +181,7 @@ function InteractiveView({ onBack }) {
228
181
  const uptime = extractUptime(svc.status);
229
182
  const ports = formatPorts(svc.ports);
230
183
  return (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: isActive ? 'cyan' : color, children: isActive ? ' ❯ ' : ` ${icon} ` }), _jsx(Text, { color: isActive ? 'cyan' : undefined, bold: isActive, children: svc.service.padEnd(svcWidth) }), _jsx(Text, { color: isActive ? 'cyan' : undefined, dimColor: !isActive, children: version.padEnd(verWidth) }), _jsx(Text, { color: isActive ? 'cyan' : undefined, dimColor: !isActive, children: uptime.padEnd(10) }), _jsx(Text, { color: isActive ? 'cyan' : undefined, dimColor: !isActive, children: ports })] }, svc.service));
231
- })] })), services && serviceList.length === 0 && (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { dimColor: true, children: "No services found in compose file." }) }))] }), serviceList.length > 0 && serviceList[cursor] && (_jsxs(Box, { paddingLeft: 4, paddingTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: serviceList[cursor].service }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Image: ' }), _jsx(Text, { children: serviceList[cursor].image })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' State: ' }), _jsxs(Text, { color: healthColor(serviceList[cursor].health, serviceList[cursor].state), children: [serviceList[cursor].state, serviceList[cursor].health ? ` (${serviceList[cursor].health})` : ''] })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Status: ' }), _jsx(Text, { children: serviceList[cursor].status })] }), serviceList[cursor].ports && (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Ports: ' }), _jsx(Text, { children: serviceList[cursor].ports })] }))] })), _jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: '↑↓ Navigate Enter/l Logs s Start x Stop r Restart a Start All X Stop All q Back' }) })] }));
184
+ })] })), services && serviceList.length === 0 && (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { dimColor: true, children: "No services found in compose file." }) }))] }), actionError && (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: "red", children: ["Error: ", actionError] }) })), serviceList.length > 0 && serviceList[cursor] && (_jsxs(Box, { paddingLeft: 4, paddingTop: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: serviceList[cursor].service }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Image: ' }), _jsx(Text, { children: serviceList[cursor].image })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' State: ' }), _jsxs(Text, { color: healthColor(serviceList[cursor].health, serviceList[cursor].state), children: [serviceList[cursor].state, serviceList[cursor].health ? ` (${serviceList[cursor].health})` : ''] })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Status: ' }), _jsx(Text, { children: serviceList[cursor].status })] }), serviceList[cursor].ports && (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Ports: ' }), _jsx(Text, { children: serviceList[cursor].ports })] }))] })), _jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: '↑↓ Navigate Enter/l Logs s Start x Stop r Restart a Start All X Stop All q Back' }) })] }));
232
185
  }
233
186
  /* ------------------------------------------------------------------ */
234
187
  /* Export */