@calltelemetry/cli 0.1.0
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.
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +201 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/db.d.ts +3 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +143 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/diag.d.ts +3 -0
- package/dist/commands/diag.d.ts.map +1 -0
- package/dist/commands/diag.js +123 -0
- package/dist/commands/diag.js.map +1 -0
- package/dist/commands/docker.d.ts +3 -0
- package/dist/commands/docker.d.ts.map +1 -0
- package/dist/commands/docker.js +34 -0
- package/dist/commands/docker.js.map +1 -0
- package/dist/commands/jtapi.d.ts +3 -0
- package/dist/commands/jtapi.d.ts.map +1 -0
- package/dist/commands/jtapi.js +36 -0
- package/dist/commands/jtapi.js.map +1 -0
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +49 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/offline.d.ts +3 -0
- package/dist/commands/offline.d.ts.map +1 -0
- package/dist/commands/offline.js +170 -0
- package/dist/commands/offline.js.map +1 -0
- package/dist/commands/secrets.d.ts +3 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +55 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +13 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +3 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +202 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/bundle.d.ts +5 -0
- package/dist/lib/bundle.d.ts.map +1 -0
- package/dist/lib/bundle.js +134 -0
- package/dist/lib/bundle.js.map +1 -0
- package/dist/lib/certs.d.ts +3 -0
- package/dist/lib/certs.d.ts.map +1 -0
- package/dist/lib/certs.js +29 -0
- package/dist/lib/certs.js.map +1 -0
- package/dist/lib/compose.d.ts +36 -0
- package/dist/lib/compose.d.ts.map +1 -0
- package/dist/lib/compose.js +137 -0
- package/dist/lib/compose.js.map +1 -0
- package/dist/lib/db.d.ts +6 -0
- package/dist/lib/db.d.ts.map +1 -0
- package/dist/lib/db.js +6 -0
- package/dist/lib/db.js.map +1 -0
- package/dist/lib/fs.d.ts +20 -0
- package/dist/lib/fs.d.ts.map +1 -0
- package/dist/lib/fs.js +72 -0
- package/dist/lib/fs.js.map +1 -0
- package/dist/lib/jtapi.d.ts +6 -0
- package/dist/lib/jtapi.d.ts.map +1 -0
- package/dist/lib/jtapi.js +27 -0
- package/dist/lib/jtapi.js.map +1 -0
- package/dist/lib/network.d.ts +43 -0
- package/dist/lib/network.d.ts.map +1 -0
- package/dist/lib/network.js +172 -0
- package/dist/lib/network.js.map +1 -0
- package/dist/lib/paths.d.ts +19 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +57 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/postgres.d.ts +4 -0
- package/dist/lib/postgres.d.ts.map +1 -0
- package/dist/lib/postgres.js +49 -0
- package/dist/lib/postgres.js.map +1 -0
- package/dist/lib/rpc.d.ts +5 -0
- package/dist/lib/rpc.d.ts.map +1 -0
- package/dist/lib/rpc.js +28 -0
- package/dist/lib/rpc.js.map +1 -0
- package/dist/lib/secrets.d.ts +38 -0
- package/dist/lib/secrets.d.ts.map +1 -0
- package/dist/lib/secrets.js +132 -0
- package/dist/lib/secrets.js.map +1 -0
- package/dist/lib/system.d.ts +12 -0
- package/dist/lib/system.d.ts.map +1 -0
- package/dist/lib/system.js +61 -0
- package/dist/lib/system.js.map +1 -0
- package/dist/ui/components/AppShell.d.ts +9 -0
- package/dist/ui/components/AppShell.d.ts.map +1 -0
- package/dist/ui/components/AppShell.js +6 -0
- package/dist/ui/components/AppShell.js.map +1 -0
- package/dist/ui/components/Confirm.d.ts +7 -0
- package/dist/ui/components/Confirm.d.ts.map +1 -0
- package/dist/ui/components/Confirm.js +14 -0
- package/dist/ui/components/Confirm.js.map +1 -0
- package/dist/ui/components/DataTable.d.ts +12 -0
- package/dist/ui/components/DataTable.d.ts.map +1 -0
- package/dist/ui/components/DataTable.js +28 -0
- package/dist/ui/components/DataTable.js.map +1 -0
- package/dist/ui/components/Divider.d.ts +6 -0
- package/dist/ui/components/Divider.d.ts.map +1 -0
- package/dist/ui/components/Divider.js +6 -0
- package/dist/ui/components/Divider.js.map +1 -0
- package/dist/ui/components/KeyValue.d.ts +11 -0
- package/dist/ui/components/KeyValue.d.ts.map +1 -0
- package/dist/ui/components/KeyValue.js +7 -0
- package/dist/ui/components/KeyValue.js.map +1 -0
- package/dist/ui/components/Section.d.ts +8 -0
- package/dist/ui/components/Section.d.ts.map +1 -0
- package/dist/ui/components/Section.js +6 -0
- package/dist/ui/components/Section.js.map +1 -0
- package/dist/ui/components/SelectMenu.d.ts +14 -0
- package/dist/ui/components/SelectMenu.d.ts.map +1 -0
- package/dist/ui/components/SelectMenu.js +55 -0
- package/dist/ui/components/SelectMenu.js.map +1 -0
- package/dist/ui/components/ShellOutput.d.ts +7 -0
- package/dist/ui/components/ShellOutput.d.ts.map +1 -0
- package/dist/ui/components/ShellOutput.js +10 -0
- package/dist/ui/components/ShellOutput.js.map +1 -0
- package/dist/ui/components/Spinner.d.ts +6 -0
- package/dist/ui/components/Spinner.d.ts.map +1 -0
- package/dist/ui/components/Spinner.js +7 -0
- package/dist/ui/components/Spinner.js.map +1 -0
- package/dist/ui/components/StatusBox.d.ts +8 -0
- package/dist/ui/components/StatusBox.d.ts.map +1 -0
- package/dist/ui/components/StatusBox.js +12 -0
- package/dist/ui/components/StatusBox.js.map +1 -0
- package/dist/ui/components/StatusLine.d.ts +8 -0
- package/dist/ui/components/StatusLine.d.ts.map +1 -0
- package/dist/ui/components/StatusLine.js +13 -0
- package/dist/ui/components/StatusLine.js.map +1 -0
- package/dist/ui/components/StepList.d.ts +11 -0
- package/dist/ui/components/StepList.d.ts.map +1 -0
- package/dist/ui/components/StepList.js +19 -0
- package/dist/ui/components/StepList.js.map +1 -0
- package/dist/ui/components/SubSection.d.ts +8 -0
- package/dist/ui/components/SubSection.d.ts.map +1 -0
- package/dist/ui/components/SubSection.js +6 -0
- package/dist/ui/components/SubSection.js.map +1 -0
- package/dist/ui/components/TextInput.d.ts +11 -0
- package/dist/ui/components/TextInput.d.ts.map +1 -0
- package/dist/ui/components/TextInput.js +7 -0
- package/dist/ui/components/TextInput.js.map +1 -0
- package/dist/ui/components/index.d.ts +16 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/index.js +15 -0
- package/dist/ui/components/index.js.map +1 -0
- package/dist/ui/hooks/index.d.ts +7 -0
- package/dist/ui/hooks/index.d.ts.map +1 -0
- package/dist/ui/hooks/index.js +5 -0
- package/dist/ui/hooks/index.js.map +1 -0
- package/dist/ui/hooks/useAsyncTask.d.ts +9 -0
- package/dist/ui/hooks/useAsyncTask.d.ts.map +1 -0
- package/dist/ui/hooks/useAsyncTask.js +22 -0
- package/dist/ui/hooks/useAsyncTask.js.map +1 -0
- package/dist/ui/hooks/usePolling.d.ts +8 -0
- package/dist/ui/hooks/usePolling.d.ts.map +1 -0
- package/dist/ui/hooks/usePolling.js +43 -0
- package/dist/ui/hooks/usePolling.js.map +1 -0
- package/dist/ui/hooks/useStepRunner.d.ts +16 -0
- package/dist/ui/hooks/useStepRunner.d.ts.map +1 -0
- package/dist/ui/hooks/useStepRunner.js +42 -0
- package/dist/ui/hooks/useStepRunner.js.map +1 -0
- package/dist/ui/hooks/useStreamingProcess.d.ts +8 -0
- package/dist/ui/hooks/useStreamingProcess.d.ts.map +1 -0
- package/dist/ui/hooks/useStreamingProcess.js +49 -0
- package/dist/ui/hooks/useStreamingProcess.js.map +1 -0
- package/dist/ui/types.d.ts +24 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +2 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/ui/views/CertsStatusView.d.ts +2 -0
- package/dist/ui/views/CertsStatusView.d.ts.map +1 -0
- package/dist/ui/views/CertsStatusView.js +95 -0
- package/dist/ui/views/CertsStatusView.js.map +1 -0
- package/dist/ui/views/DbBackupView.d.ts +2 -0
- package/dist/ui/views/DbBackupView.d.ts.map +1 -0
- package/dist/ui/views/DbBackupView.js +62 -0
- package/dist/ui/views/DbBackupView.js.map +1 -0
- package/dist/ui/views/DbCompactView.d.ts +2 -0
- package/dist/ui/views/DbCompactView.d.ts.map +1 -0
- package/dist/ui/views/DbCompactView.js +28 -0
- package/dist/ui/views/DbCompactView.js.map +1 -0
- package/dist/ui/views/DbListView.d.ts +2 -0
- package/dist/ui/views/DbListView.d.ts.map +1 -0
- package/dist/ui/views/DbListView.js +30 -0
- package/dist/ui/views/DbListView.js.map +1 -0
- package/dist/ui/views/DbSizeView.d.ts +2 -0
- package/dist/ui/views/DbSizeView.d.ts.map +1 -0
- package/dist/ui/views/DbSizeView.js +21 -0
- package/dist/ui/views/DbSizeView.js.map +1 -0
- package/dist/ui/views/DbStatusView.d.ts +2 -0
- package/dist/ui/views/DbStatusView.d.ts.map +1 -0
- package/dist/ui/views/DbStatusView.js +41 -0
- package/dist/ui/views/DbStatusView.js.map +1 -0
- package/dist/ui/views/DbTablesView.d.ts +6 -0
- package/dist/ui/views/DbTablesView.d.ts.map +1 -0
- package/dist/ui/views/DbTablesView.js +28 -0
- package/dist/ui/views/DbTablesView.js.map +1 -0
- package/dist/ui/views/DiagDatabaseView.d.ts +2 -0
- package/dist/ui/views/DiagDatabaseView.d.ts.map +1 -0
- package/dist/ui/views/DiagDatabaseView.js +51 -0
- package/dist/ui/views/DiagDatabaseView.js.map +1 -0
- package/dist/ui/views/DiagNetworkView.d.ts +2 -0
- package/dist/ui/views/DiagNetworkView.d.ts.map +1 -0
- package/dist/ui/views/DiagNetworkView.js +169 -0
- package/dist/ui/views/DiagNetworkView.js.map +1 -0
- package/dist/ui/views/DiagServiceView.d.ts +2 -0
- package/dist/ui/views/DiagServiceView.d.ts.map +1 -0
- package/dist/ui/views/DiagServiceView.js +37 -0
- package/dist/ui/views/DiagServiceView.js.map +1 -0
- package/dist/ui/views/DockerNetworkView.d.ts +2 -0
- package/dist/ui/views/DockerNetworkView.d.ts.map +1 -0
- package/dist/ui/views/DockerNetworkView.js +29 -0
- package/dist/ui/views/DockerNetworkView.js.map +1 -0
- package/dist/ui/views/DockerPruneView.d.ts +2 -0
- package/dist/ui/views/DockerPruneView.d.ts.map +1 -0
- package/dist/ui/views/DockerPruneView.js +57 -0
- package/dist/ui/views/DockerPruneView.js.map +1 -0
- package/dist/ui/views/DockerStatusView.d.ts +2 -0
- package/dist/ui/views/DockerStatusView.d.ts.map +1 -0
- package/dist/ui/views/DockerStatusView.js +43 -0
- package/dist/ui/views/DockerStatusView.js.map +1 -0
- package/dist/ui/views/JtapiDisableView.d.ts +2 -0
- package/dist/ui/views/JtapiDisableView.d.ts.map +1 -0
- package/dist/ui/views/JtapiDisableView.js +55 -0
- package/dist/ui/views/JtapiDisableView.js.map +1 -0
- package/dist/ui/views/JtapiEnableView.d.ts +2 -0
- package/dist/ui/views/JtapiEnableView.d.ts.map +1 -0
- package/dist/ui/views/JtapiEnableView.js +47 -0
- package/dist/ui/views/JtapiEnableView.js.map +1 -0
- package/dist/ui/views/JtapiStatusView.d.ts +2 -0
- package/dist/ui/views/JtapiStatusView.d.ts.map +1 -0
- package/dist/ui/views/JtapiStatusView.js +18 -0
- package/dist/ui/views/JtapiStatusView.js.map +1 -0
- package/dist/ui/views/JtapiTroubleshootView.d.ts +2 -0
- package/dist/ui/views/JtapiTroubleshootView.d.ts.map +1 -0
- package/dist/ui/views/JtapiTroubleshootView.js +120 -0
- package/dist/ui/views/JtapiTroubleshootView.js.map +1 -0
- package/dist/ui/views/MainMenu.d.ts +8 -0
- package/dist/ui/views/MainMenu.d.ts.map +1 -0
- package/dist/ui/views/MainMenu.js +110 -0
- package/dist/ui/views/MainMenu.js.map +1 -0
- package/dist/ui/views/MigrateHistoryView.d.ts +2 -0
- package/dist/ui/views/MigrateHistoryView.d.ts.map +1 -0
- package/dist/ui/views/MigrateHistoryView.js +25 -0
- package/dist/ui/views/MigrateHistoryView.js.map +1 -0
- package/dist/ui/views/MigrateRollbackView.d.ts +6 -0
- package/dist/ui/views/MigrateRollbackView.d.ts.map +1 -0
- package/dist/ui/views/MigrateRollbackView.js +50 -0
- package/dist/ui/views/MigrateRollbackView.js.map +1 -0
- package/dist/ui/views/MigrateRunView.d.ts +2 -0
- package/dist/ui/views/MigrateRunView.d.ts.map +1 -0
- package/dist/ui/views/MigrateRunView.js +50 -0
- package/dist/ui/views/MigrateRunView.js.map +1 -0
- package/dist/ui/views/MigrateStatusView.d.ts +2 -0
- package/dist/ui/views/MigrateStatusView.d.ts.map +1 -0
- package/dist/ui/views/MigrateStatusView.js +88 -0
- package/dist/ui/views/MigrateStatusView.js.map +1 -0
- package/dist/ui/views/MigrateWatchView.d.ts +6 -0
- package/dist/ui/views/MigrateWatchView.d.ts.map +1 -0
- package/dist/ui/views/MigrateWatchView.js +83 -0
- package/dist/ui/views/MigrateWatchView.js.map +1 -0
- package/dist/ui/views/OfflineListView.d.ts +2 -0
- package/dist/ui/views/OfflineListView.d.ts.map +1 -0
- package/dist/ui/views/OfflineListView.js +47 -0
- package/dist/ui/views/OfflineListView.js.map +1 -0
- package/dist/ui/views/SecretsSetupView.d.ts +2 -0
- package/dist/ui/views/SecretsSetupView.d.ts.map +1 -0
- package/dist/ui/views/SecretsSetupView.js +94 -0
- package/dist/ui/views/SecretsSetupView.js.map +1 -0
- package/dist/ui/views/SecretsStatusView.d.ts +2 -0
- package/dist/ui/views/SecretsStatusView.d.ts.map +1 -0
- package/dist/ui/views/SecretsStatusView.js +36 -0
- package/dist/ui/views/SecretsStatusView.js.map +1 -0
- package/dist/ui/views/StatusView.d.ts +2 -0
- package/dist/ui/views/StatusView.d.ts.map +1 -0
- package/dist/ui/views/StatusView.js +80 -0
- package/dist/ui/views/StatusView.js.map +1 -0
- package/dist/utils/output.d.ts +11 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +30 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/prompt.d.ts +6 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +25 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/version.d.ts +8 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +35 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useApp } from 'ink';
|
|
4
|
+
import { composeExec } from '../../lib/compose.js';
|
|
5
|
+
import { DB_USER, DB_NAME, PG_ENV } from '../../lib/db.js';
|
|
6
|
+
import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
|
|
7
|
+
import { useAsyncTask } from '../hooks/index.js';
|
|
8
|
+
export function DbSizeView() {
|
|
9
|
+
const { exit } = useApp();
|
|
10
|
+
const sizeTask = useAsyncTask(async () => {
|
|
11
|
+
const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-c',
|
|
12
|
+
`SELECT pg_size_pretty(pg_database_size('${DB_NAME}')) AS database_size;`], { env: PG_ENV, pipe: true });
|
|
13
|
+
return (result.stdout ?? '').trim();
|
|
14
|
+
});
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (sizeTask.status === 'done' || sizeTask.status === 'error')
|
|
17
|
+
exit();
|
|
18
|
+
}, [sizeTask.status, exit]);
|
|
19
|
+
return (_jsx(AppShell, { command: "ct db size", children: _jsxs(Section, { title: "Database Size", children: [sizeTask.status === 'pending' && _jsx(Spinner, { label: "Querying database size..." }), sizeTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Could not query database size" }), sizeTask.status === 'done' && sizeTask.data && _jsx(ShellOutput, { content: sizeTask.data })] }) }));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=DbSizeView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DbSizeView.js","sourceRoot":"","sources":["../../../src/ui/views/DbSizeView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,UAAU;IACxB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EACnC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;YAC1C,2CAA2C,OAAO,uBAAuB,CAAC,EAC3E,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO;YAAE,IAAI,EAAE,CAAC;IACxE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAE5B,OAAO,CACL,KAAC,QAAQ,IAAC,OAAO,EAAC,YAAY,YAC5B,MAAC,OAAO,IAAC,KAAK,EAAC,eAAe,aAC3B,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,2BAA2B,GAAG,EAC9E,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,+BAA+B,GAAG,EACjG,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,GAAI,IAC/E,GACD,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DbStatusView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DbStatusView.tsx"],"names":[],"mappings":"AAUA,wBAAgB,YAAY,4CAwD3B"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useApp } from 'ink';
|
|
4
|
+
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { composeExec } from '../../lib/compose.js';
|
|
7
|
+
import { DB_USER, DB_NAME, PG_ENV } from '../../lib/db.js';
|
|
8
|
+
import { getPaths } from '../../lib/paths.js';
|
|
9
|
+
import { AppShell, Section, StatusLine, Spinner, KeyValue } from '../components/index.js';
|
|
10
|
+
import { useAsyncTask } from '../hooks/index.js';
|
|
11
|
+
export function DbStatusView() {
|
|
12
|
+
const { exit } = useApp();
|
|
13
|
+
const readyTask = useAsyncTask(async () => {
|
|
14
|
+
await composeExec('db', ['pg_isready', '-U', DB_USER, '-d', DB_NAME], { pipe: true });
|
|
15
|
+
return true;
|
|
16
|
+
});
|
|
17
|
+
const sizeTask = useAsyncTask(async () => {
|
|
18
|
+
const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-t', '-c',
|
|
19
|
+
`SELECT pg_size_pretty(pg_database_size('${DB_NAME}')) AS database_size;`], { env: PG_ENV, pipe: true });
|
|
20
|
+
return (result.stdout ?? '').trim();
|
|
21
|
+
});
|
|
22
|
+
const backupsTask = useAsyncTask(async () => {
|
|
23
|
+
const { dbDumpsDir } = getPaths();
|
|
24
|
+
if (!existsSync(dbDumpsDir))
|
|
25
|
+
return [];
|
|
26
|
+
return readdirSync(dbDumpsDir)
|
|
27
|
+
.filter(f => f.endsWith('.sql'))
|
|
28
|
+
.map(f => {
|
|
29
|
+
const stat = statSync(join(dbDumpsDir, f));
|
|
30
|
+
const sizeMb = (stat.size / 1024 / 1024).toFixed(1);
|
|
31
|
+
return { key: f, value: `${sizeMb} MB` };
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
const allDone = [readyTask, sizeTask, backupsTask].every(t => t.status === 'done' || t.status === 'error');
|
|
35
|
+
useEffect(() => { if (allDone)
|
|
36
|
+
exit(); }, [allDone, exit]);
|
|
37
|
+
return (_jsxs(AppShell, { command: "ct db status", children: [_jsxs(Section, { title: "Database Connection", children: [readyTask.status === 'pending' && _jsx(Spinner, { label: "Checking database..." }), readyTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Database not accepting connections" }), readyTask.status === 'done' && _jsx(StatusLine, { status: "ok", label: "Database: accepting connections" })] }), _jsxs(Section, { title: "Database Size", children: [sizeTask.status === 'pending' && _jsx(Spinner, { label: "Querying size..." }), sizeTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Could not query database size" }), sizeTask.status === 'done' && _jsx(StatusLine, { status: "info", label: `Database size: ${sizeTask.data}` })] }), _jsxs(Section, { title: "Available Backups", children: [backupsTask.status === 'pending' && _jsx(Spinner, { label: "Listing backups..." }), backupsTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Could not list backups" }), backupsTask.status === 'done' && backupsTask.data && (backupsTask.data.length === 0
|
|
38
|
+
? _jsx(StatusLine, { status: "info", label: "No backups found" })
|
|
39
|
+
: _jsx(KeyValue, { items: backupsTask.data }))] })] }));
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=DbStatusView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DbStatusView.js","sourceRoot":"","sources":["../../../src/ui/views/DbStatusView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAa,MAAM,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAe,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,YAAY;IAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QACxC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EACnC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;YAChD,2CAA2C,OAAO,uBAAuB,CAAC,EAC3E,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QAC1C,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,EAAE,CAAC;QACvC,OAAO,WAAW,CAAC,UAAU,CAAC;aAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACpD,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IAC3G,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO;QAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAE3D,OAAO,CACL,MAAC,QAAQ,IAAC,OAAO,EAAC,cAAc,aAC9B,MAAC,OAAO,IAAC,KAAK,EAAC,qBAAqB,aACjC,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,sBAAsB,GAAG,EAC1E,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,oCAAoC,GAAG,EACvG,SAAS,CAAC,MAAM,KAAK,MAAM,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,iCAAiC,GAAG,IAC1F,EAEV,MAAC,OAAO,IAAC,KAAK,EAAC,eAAe,aAC3B,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,kBAAkB,GAAG,EACrE,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,+BAA+B,GAAG,EACjG,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAE,kBAAkB,QAAQ,CAAC,IAAI,EAAE,GAAI,IAC7F,EAEV,MAAC,OAAO,IAAC,KAAK,EAAC,mBAAmB,aAC/B,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,oBAAoB,GAAG,EAC1E,WAAW,CAAC,MAAM,KAAK,OAAO,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,wBAAwB,GAAG,EAC7F,WAAW,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,IAAI,CACpD,WAAW,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;wBAC3B,CAAC,CAAC,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,kBAAkB,GAAG;wBACvD,CAAC,CAAC,KAAC,QAAQ,IAAC,KAAK,EAAE,WAAW,CAAC,IAAI,GAAI,CAC1C,IACO,IACD,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DbTablesView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DbTablesView.tsx"],"names":[],"mappings":"AAOA,UAAU,KAAK;IAAG,IAAI,CAAC,EAAE,MAAM,CAAC;CAAE;AAElC,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,2CAuC3C"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useApp } from 'ink';
|
|
4
|
+
import { composeExec } from '../../lib/compose.js';
|
|
5
|
+
import { DB_USER, DB_NAME, PG_ENV } from '../../lib/db.js';
|
|
6
|
+
import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
|
|
7
|
+
import { useAsyncTask } from '../hooks/index.js';
|
|
8
|
+
export function DbTablesView({ name }) {
|
|
9
|
+
const { exit } = useApp();
|
|
10
|
+
const tablesTask = useAsyncTask(async () => {
|
|
11
|
+
const whereClause = name
|
|
12
|
+
? `AND c.relname LIKE '%${name}%'`
|
|
13
|
+
: '';
|
|
14
|
+
const query = `SELECT table_name, row_count, pg_size_pretty(total_bytes) AS total_size, pg_size_pretty(index_bytes) AS index_size, pg_size_pretty(table_bytes) AS table_size FROM (SELECT c.relname AS table_name, c.reltuples::BIGINT AS row_count, pg_total_relation_size(c.oid) AS total_bytes, pg_indexes_size(c.oid) AS index_bytes, pg_relation_size(c.oid) AS table_bytes FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = 'public' AND c.relkind = 'r' ${whereClause}) t ORDER BY total_bytes DESC;`;
|
|
15
|
+
const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-c', query], { env: PG_ENV, pipe: true });
|
|
16
|
+
return (result.stdout ?? '').trim();
|
|
17
|
+
});
|
|
18
|
+
const sizeTask = useAsyncTask(async () => {
|
|
19
|
+
const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-c',
|
|
20
|
+
`SELECT pg_size_pretty(pg_database_size('${DB_NAME}')) AS database_size;`], { env: PG_ENV, pipe: true });
|
|
21
|
+
return (result.stdout ?? '').trim();
|
|
22
|
+
});
|
|
23
|
+
const allDone = [tablesTask, sizeTask].every(t => t.status === 'done' || t.status === 'error');
|
|
24
|
+
useEffect(() => { if (allDone)
|
|
25
|
+
exit(); }, [allDone, exit]);
|
|
26
|
+
return (_jsxs(AppShell, { command: name ? `ct db tables ${name}` : 'ct db tables', children: [_jsxs(Section, { title: name ? `Table Sizes: ${name}` : 'All Table Sizes', children: [tablesTask.status === 'pending' && _jsx(Spinner, { label: "Querying table sizes..." }), tablesTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Query failed" }), tablesTask.status === 'done' && tablesTask.data && _jsx(ShellOutput, { content: tablesTask.data })] }), _jsxs(Section, { title: "Database Total Size", children: [sizeTask.status === 'pending' && _jsx(Spinner, { label: "Querying size..." }), sizeTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Query failed" }), sizeTask.status === 'done' && sizeTask.data && _jsx(ShellOutput, { content: sizeTask.data })] })] }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=DbTablesView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DbTablesView.js","sourceRoot":"","sources":["../../../src/ui/views/DbTablesView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagDatabaseView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DiagDatabaseView.tsx"],"names":[],"mappings":"AAcA,wBAAgB,gBAAgB,4CA+E/B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { Box, Text, useApp } from 'ink';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import { composeExec } from '../../lib/compose.js';
|
|
6
|
+
import { DB_USER, DB_NAME, PG_ENV } from '../../lib/db.js';
|
|
7
|
+
import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
|
|
8
|
+
import { useAsyncTask } from '../hooks/index.js';
|
|
9
|
+
export function DiagDatabaseView() {
|
|
10
|
+
const { exit } = useApp();
|
|
11
|
+
// Docker stats
|
|
12
|
+
const statsTask = useAsyncTask(async () => {
|
|
13
|
+
try {
|
|
14
|
+
const { stdout } = await execa('docker', ['stats', '--no-stream'], { stdout: 'pipe', stderr: 'pipe' });
|
|
15
|
+
return stdout;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
// All SQL queries
|
|
22
|
+
const queriesTask = useAsyncTask(async () => {
|
|
23
|
+
const queries = [
|
|
24
|
+
['Active Running Queries', `SELECT pid, now() - pg_stat_activity.query_start AS duration, query, state, wait_event_type FROM pg_stat_activity WHERE state <> 'idle' AND query NOT ILIKE '%pg_stat_activity%' ORDER BY duration DESC LIMIT 20;`],
|
|
25
|
+
['Connection Count by State', `SELECT count(*) as total_connections, state, usename FROM pg_stat_activity GROUP BY state, usename ORDER BY count(*) DESC;`],
|
|
26
|
+
['Blocked Queries (lock contention)', `SELECT blocked_locks.pid AS blocked_pid, blocking_locks.pid AS blocking_pid, LEFT(blocked_activity.query,50) AS blocked_stmt FROM pg_catalog.pg_locks blocked_locks JOIN pg_catalog.pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid JOIN pg_catalog.pg_locks blocking_locks ON blocking_locks.locktype = blocked_locks.locktype AND blocking_locks.database IS NOT DISTINCT FROM blocked_locks.database AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation AND blocking_locks.pid <> blocked_locks.pid JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid WHERE NOT blocked_locks.granted;`],
|
|
27
|
+
['Tables with High Sequential Scans', `SELECT relname, seq_scan, idx_scan, n_tup_ins, n_tup_upd, n_tup_del FROM pg_stat_user_tables ORDER BY seq_scan DESC LIMIT 15;`],
|
|
28
|
+
['Dead Tuples (needs vacuum)', `SELECT relname, n_dead_tup, n_live_tup, last_vacuum, last_autovacuum FROM pg_stat_user_tables WHERE n_dead_tup > 1000 ORDER BY n_dead_tup DESC LIMIT 10;`],
|
|
29
|
+
['Active MV Refreshes, Index Builds, Vacuum', `SELECT pid, now() - query_start AS duration, state, LEFT(query, 80) as operation FROM pg_stat_activity WHERE query ILIKE '%REFRESH MATERIALIZED%' OR query ILIKE '%CREATE INDEX%' OR query ILIKE '%VACUUM%' OR query ILIKE '%ANALYZE%';`],
|
|
30
|
+
['Materialized Views', `SELECT matviewname, hasindexes, ispopulated FROM pg_matviews ORDER BY matviewname;`],
|
|
31
|
+
];
|
|
32
|
+
const results = [];
|
|
33
|
+
for (const [title, query] of queries) {
|
|
34
|
+
try {
|
|
35
|
+
const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-c', query], { env: PG_ENV, pipe: true });
|
|
36
|
+
results.push({ title, output: (result.stdout ?? '').trim() });
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
results.push({ title, output: 'Query failed', error: true });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return results;
|
|
43
|
+
});
|
|
44
|
+
const allDone = [statsTask, queriesTask].every(t => t.status === 'done' || t.status === 'error');
|
|
45
|
+
useEffect(() => { if (allDone)
|
|
46
|
+
exit(); }, [allDone, exit]);
|
|
47
|
+
return (_jsxs(AppShell, { command: "ct diag database", children: [_jsxs(Section, { title: "Container CPU/Memory Usage", children: [statsTask.status === 'pending' && _jsx(Spinner, { label: "Loading docker stats..." }), statsTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Could not get docker stats" }), statsTask.status === 'done' && statsTask.data === null && _jsx(StatusLine, { status: "warn", label: "Docker stats not available" }), statsTask.status === 'done' && statsTask.data && _jsx(ShellOutput, { content: statsTask.data })] }), queriesTask.status === 'pending' && (_jsx(Section, { title: "Database Queries", children: _jsx(Spinner, { label: "Running database diagnostics..." }) })), queriesTask.status === 'error' && (_jsx(Section, { title: "Database Queries", children: _jsx(StatusLine, { status: "fail", label: "Database diagnostics failed" }) })), queriesTask.status === 'done' && queriesTask.data && queriesTask.data.map((result, i) => (_jsx(Section, { title: result.title, children: result.error
|
|
48
|
+
? _jsx(StatusLine, { status: "fail", label: "Query failed" })
|
|
49
|
+
: _jsx(ShellOutput, { content: result.output }) }, i))), allDone && (_jsx(Box, { marginTop: 1, paddingLeft: 2, children: _jsx(Text, { bold: true, dimColor: true, children: '=== Database Diagnostics Complete ===' }) }))] }));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=DiagDatabaseView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagDatabaseView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagDatabaseView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagNetworkView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DiagNetworkView.tsx"],"names":[],"mappings":"AA+DA,wBAAgB,eAAe,4CAiO9B"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
3
|
+
import { Box, Text, useApp } from 'ink';
|
|
4
|
+
import { getNetworkInterfaceList, getSystemHostname, getPlatformInfo, resolveDns, checkTcpPort, checkHttps, getPingArgs, getDefaultGateway, } from '../../lib/network.js';
|
|
5
|
+
import { getPaths } from '../../lib/paths.js';
|
|
6
|
+
import { AppShell, Section, KeyValue, DataTable, StatusLine, ShellOutput, Spinner, } from '../components/index.js';
|
|
7
|
+
import { useStreamingProcess } from '../hooks/index.js';
|
|
8
|
+
function netmaskToCidr(netmask) {
|
|
9
|
+
return netmask
|
|
10
|
+
.split('.')
|
|
11
|
+
.reduce((bits, octet) => bits + (Number(octet) >>> 0).toString(2).replace(/0/g, '').length, 0);
|
|
12
|
+
}
|
|
13
|
+
// Section 5/6: Ping section component
|
|
14
|
+
function PingSection({ title, target, startWhen }) {
|
|
15
|
+
const args = useMemo(() => getPingArgs(target), [target]);
|
|
16
|
+
const { lines, isRunning, start } = useStreamingProcess('ping', args);
|
|
17
|
+
const [started, setStarted] = useState(false);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (startWhen && !started) {
|
|
20
|
+
setStarted(true);
|
|
21
|
+
start();
|
|
22
|
+
}
|
|
23
|
+
}, [startWhen, started, start]);
|
|
24
|
+
if (!startWhen && !started) {
|
|
25
|
+
return (_jsx(Section, { title: title, children: _jsx(Spinner, { label: "Waiting..." }) }));
|
|
26
|
+
}
|
|
27
|
+
return (_jsxs(Section, { title: title, children: [isRunning && lines.length === 0 && _jsx(Spinner, { label: "Pinging..." }), lines.length > 0 && _jsx(ShellOutput, { content: lines.join('\n') }), isRunning && lines.length > 0 && _jsx(Spinner, { label: "Pinging..." })] }));
|
|
28
|
+
}
|
|
29
|
+
export function DiagNetworkView() {
|
|
30
|
+
const { exit } = useApp();
|
|
31
|
+
// Section 1: System Info (synchronous)
|
|
32
|
+
const platInfo = getPlatformInfo();
|
|
33
|
+
const sysHostname = getSystemHostname();
|
|
34
|
+
// Section 2: Network Interfaces (synchronous)
|
|
35
|
+
const ifaces = getNetworkInterfaceList();
|
|
36
|
+
const external = ifaces.filter(i => !i.internal);
|
|
37
|
+
const internal = ifaces.filter(i => i.internal);
|
|
38
|
+
const allIfaces = [...external, ...internal];
|
|
39
|
+
const ifaceRows = allIfaces.map(iface => {
|
|
40
|
+
const isExt = !iface.internal;
|
|
41
|
+
const cidr = iface.family === 'IPv4' ? `/${netmaskToCidr(iface.netmask)}` : '';
|
|
42
|
+
return {
|
|
43
|
+
name: iface.name,
|
|
44
|
+
type: isExt ? 'External' : 'Internal',
|
|
45
|
+
address: `${iface.address}${cidr}`,
|
|
46
|
+
family: iface.family,
|
|
47
|
+
mac: isExt ? iface.mac : '-',
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
// Section 3: Default Gateway (async)
|
|
51
|
+
const [gateway, setGateway] = useState(undefined);
|
|
52
|
+
// Section 4: DNS Resolution (async)
|
|
53
|
+
const [dnsResults, setDnsResults] = useState(undefined);
|
|
54
|
+
// Section 7: HTTPS Connectivity (async)
|
|
55
|
+
const [httpsResult, setHttpsResult] = useState(undefined);
|
|
56
|
+
// Section 8: CT Service Ports (async)
|
|
57
|
+
const [portResults, setPortResults] = useState(undefined);
|
|
58
|
+
// Track completion for exit
|
|
59
|
+
const [allDone, setAllDone] = useState(false);
|
|
60
|
+
// Run gateway detection
|
|
61
|
+
useEffect(() => {
|
|
62
|
+
getDefaultGateway().then(gw => setGateway(gw));
|
|
63
|
+
}, []);
|
|
64
|
+
// Run DNS resolution
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
const targets = ['google.com', 'storage.googleapis.com'];
|
|
67
|
+
Promise.all(targets.map(h => resolveDns(h))).then(results => setDnsResults(results));
|
|
68
|
+
}, []);
|
|
69
|
+
// Run HTTPS check
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
const { gcsBaseUrl } = getPaths();
|
|
72
|
+
const testUrl = `${gcsBaseUrl}/cli.sh`;
|
|
73
|
+
checkHttps(testUrl).then(result => setHttpsResult(result));
|
|
74
|
+
}, []);
|
|
75
|
+
// Run port checks
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
const ports = [
|
|
78
|
+
[4000, 'API'],
|
|
79
|
+
[5432, 'PostgreSQL'],
|
|
80
|
+
[4222, 'NATS'],
|
|
81
|
+
[8080, 'JTAPI Sidecar'],
|
|
82
|
+
];
|
|
83
|
+
Promise.all(ports.map(([port, label]) => checkTcpPort('localhost', port, 3000).then(r => ({ ...r, label })))).then(results => setPortResults(results));
|
|
84
|
+
}, []);
|
|
85
|
+
// Gateway is resolved (including null = not found)
|
|
86
|
+
const gatewayReady = gateway !== undefined;
|
|
87
|
+
// Track ping completion via lines/exitCode
|
|
88
|
+
const [gatewayPingDone, setGatewayPingDone] = useState(false);
|
|
89
|
+
const [internetPingDone, setInternetPingDone] = useState(false);
|
|
90
|
+
// Check if everything is done and exit
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
const pingsResolved = (gateway === null || gatewayPingDone) && internetPingDone;
|
|
93
|
+
if (gatewayReady &&
|
|
94
|
+
dnsResults !== undefined &&
|
|
95
|
+
httpsResult !== undefined &&
|
|
96
|
+
portResults !== undefined &&
|
|
97
|
+
pingsResolved &&
|
|
98
|
+
!allDone) {
|
|
99
|
+
setAllDone(true);
|
|
100
|
+
// Give a small delay for final render
|
|
101
|
+
const timer = setTimeout(() => exit(), 200);
|
|
102
|
+
return () => clearTimeout(timer);
|
|
103
|
+
}
|
|
104
|
+
}, [gatewayReady, dnsResults, httpsResult, portResults, gatewayPingDone, internetPingDone, gateway, allDone, exit]);
|
|
105
|
+
return (_jsxs(AppShell, { title: "CallTelemetry CLI", command: "ct diag network", children: [_jsx(Section, { title: "System Info", children: _jsx(KeyValue, { items: [
|
|
106
|
+
{ key: 'Hostname', value: sysHostname },
|
|
107
|
+
{ key: 'Platform', value: platInfo.platform },
|
|
108
|
+
{ key: 'Node', value: platInfo.nodeVersion },
|
|
109
|
+
] }) }), _jsx(Section, { title: "Network Interfaces", children: _jsx(DataTable, { columns: [
|
|
110
|
+
{ key: 'name', label: 'Name', width: 12 },
|
|
111
|
+
{ key: 'type', label: 'Type', width: 10 },
|
|
112
|
+
{ key: 'family', label: 'Family', width: 6 },
|
|
113
|
+
{ key: 'address', label: 'Address', width: 42 },
|
|
114
|
+
{ key: 'mac', label: 'MAC', width: 17 },
|
|
115
|
+
], rows: ifaceRows }) }), _jsxs(Section, { title: "Default Gateway", children: [!gatewayReady && _jsx(Spinner, { label: "Detecting gateway..." }), gatewayReady && gateway && (_jsx(StatusLine, { status: "ok", label: `Gateway: ${gateway}` })), gatewayReady && !gateway && (_jsx(StatusLine, { status: "fail", label: "Unable to detect default gateway" }))] }), _jsxs(Section, { title: "DNS Resolution", children: [!dnsResults && _jsx(Spinner, { label: "Resolving DNS..." }), dnsResults && dnsResults.map((result, i) => {
|
|
116
|
+
const ok = result.ipv4.length > 0 || result.ipv6.length > 0;
|
|
117
|
+
const addr = result.ipv4[0] ?? result.ipv6[0];
|
|
118
|
+
return (_jsx(StatusLine, { status: ok ? 'ok' : 'fail', label: ok
|
|
119
|
+
? `${result.host} -> ${addr}`
|
|
120
|
+
: `${result.host} -> ${result.error ?? 'no addresses'}`, detail: `${result.durationMs}ms` }, i));
|
|
121
|
+
})] }), gateway !== null && (_jsx(GatewayPingSection, { gateway: gateway ?? '', startWhen: gatewayReady && gateway !== null, onDone: () => setGatewayPingDone(true) })), gateway === null && gatewayReady && (_jsx(Section, { title: "Gateway Ping", children: _jsx(StatusLine, { status: "fail", label: "Skipped - no gateway detected" }) })), _jsx(InternetPingSection, { startWhen: gatewayReady, onDone: () => setInternetPingDone(true) }), _jsxs(Section, { title: "HTTPS Connectivity", children: [!httpsResult && _jsx(Spinner, { label: "Checking HTTPS..." }), httpsResult && httpsResult.status !== undefined && httpsResult.status < 400 && (_jsxs(Box, { flexDirection: "column", children: [_jsx(StatusLine, { status: "ok", label: httpsResult.url }), _jsx(KeyValue, { items: [
|
|
122
|
+
{ key: 'Status', value: String(httpsResult.status) },
|
|
123
|
+
{ key: 'Latency', value: `${httpsResult.durationMs}ms` },
|
|
124
|
+
...(httpsResult.tlsVersion ? [{ key: 'TLS', value: httpsResult.tlsVersion }] : []),
|
|
125
|
+
...(httpsResult.certExpiry ? [{ key: 'Cert Expires', value: httpsResult.certExpiry }] : []),
|
|
126
|
+
] })] })), httpsResult && (httpsResult.status === undefined || httpsResult.status >= 400) && (_jsx(StatusLine, { status: "fail", label: `${httpsResult.url} -> ${httpsResult.error ?? `HTTP ${httpsResult.status}`}` }))] }), _jsxs(Section, { title: "CT Service Ports", children: [!portResults && _jsx(Spinner, { label: "Checking ports..." }), portResults && portResults.map((check, i) => {
|
|
127
|
+
const portStr = `localhost:${check.port}`;
|
|
128
|
+
return (_jsx(StatusLine, { status: check.open ? 'ok' : 'fail', label: `${portStr} (${check.label})`, detail: check.open
|
|
129
|
+
? `open (${check.durationMs}ms)`
|
|
130
|
+
: check.error ?? 'closed' }, i));
|
|
131
|
+
})] }), allDone && (_jsx(Box, { marginTop: 1, paddingLeft: 2, children: _jsx(Text, { bold: true, dimColor: true, children: '=== Network Diagnostics Complete ===' }) }))] }));
|
|
132
|
+
}
|
|
133
|
+
// Wrapper for gateway ping with onDone callback
|
|
134
|
+
function GatewayPingSection({ gateway, startWhen, onDone }) {
|
|
135
|
+
const args = useMemo(() => getPingArgs(gateway), [gateway]);
|
|
136
|
+
const { lines, isRunning, exitCode, start } = useStreamingProcess('ping', args);
|
|
137
|
+
const [started, setStarted] = useState(false);
|
|
138
|
+
useEffect(() => {
|
|
139
|
+
if (startWhen && !started && gateway) {
|
|
140
|
+
setStarted(true);
|
|
141
|
+
start();
|
|
142
|
+
}
|
|
143
|
+
}, [startWhen, started, start, gateway]);
|
|
144
|
+
useEffect(() => {
|
|
145
|
+
if (started && !isRunning && exitCode !== undefined) {
|
|
146
|
+
onDone();
|
|
147
|
+
}
|
|
148
|
+
}, [started, isRunning, exitCode, onDone]);
|
|
149
|
+
return (_jsxs(Section, { title: `Gateway Ping (${gateway})`, children: [!started && _jsx(Spinner, { label: "Waiting..." }), started && isRunning && lines.length === 0 && _jsx(Spinner, { label: "Pinging..." }), lines.length > 0 && _jsx(ShellOutput, { content: lines.join('\n') }), started && isRunning && lines.length > 0 && _jsx(Spinner, { label: "Pinging..." }), started && !isRunning && exitCode !== 0 && (_jsx(StatusLine, { status: "fail", label: "Gateway unreachable" }))] }));
|
|
150
|
+
}
|
|
151
|
+
// Wrapper for internet ping with onDone callback
|
|
152
|
+
function InternetPingSection({ startWhen, onDone }) {
|
|
153
|
+
const args = useMemo(() => getPingArgs('google.com'), []);
|
|
154
|
+
const { lines, isRunning, exitCode, start } = useStreamingProcess('ping', args);
|
|
155
|
+
const [started, setStarted] = useState(false);
|
|
156
|
+
useEffect(() => {
|
|
157
|
+
if (startWhen && !started) {
|
|
158
|
+
setStarted(true);
|
|
159
|
+
start();
|
|
160
|
+
}
|
|
161
|
+
}, [startWhen, started, start]);
|
|
162
|
+
useEffect(() => {
|
|
163
|
+
if (started && !isRunning && exitCode !== undefined) {
|
|
164
|
+
onDone();
|
|
165
|
+
}
|
|
166
|
+
}, [started, isRunning, exitCode, onDone]);
|
|
167
|
+
return (_jsxs(Section, { title: "Internet Ping (google.com)", children: [!started && _jsx(Spinner, { label: "Waiting..." }), started && isRunning && lines.length === 0 && _jsx(Spinner, { label: "Pinging..." }), lines.length > 0 && _jsx(ShellOutput, { content: lines.join('\n') }), started && isRunning && lines.length > 0 && _jsx(Spinner, { label: "Pinging..." }), started && !isRunning && exitCode !== 0 && (_jsx(StatusLine, { status: "fail", label: "Internet unreachable" }))] }));
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=DiagNetworkView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagNetworkView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagNetworkView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagServiceView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DiagServiceView.tsx"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,4CAoD9B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useApp } from 'ink';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import { compose } from '../../lib/compose.js';
|
|
6
|
+
import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
|
|
7
|
+
import { useAsyncTask } from '../hooks/index.js';
|
|
8
|
+
export function DiagServiceView() {
|
|
9
|
+
const { exit } = useApp();
|
|
10
|
+
// Section 1: Systemd logs
|
|
11
|
+
const systemdTask = useAsyncTask(async () => {
|
|
12
|
+
try {
|
|
13
|
+
const { stdout } = await execa('sudo', [
|
|
14
|
+
'journalctl', '-u', 'docker-compose-app.service', '-n', '50', '--no-pager'
|
|
15
|
+
], { stdout: 'pipe', stderr: 'pipe' });
|
|
16
|
+
return stdout;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null; // Not available
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
// Section 2: Web container logs
|
|
23
|
+
const webTask = useAsyncTask(async () => {
|
|
24
|
+
const result = await compose(['logs', '--tail=50', 'web'], { pipe: true });
|
|
25
|
+
return result.stdout ?? '';
|
|
26
|
+
});
|
|
27
|
+
// Section 3: DB container logs
|
|
28
|
+
const dbTask = useAsyncTask(async () => {
|
|
29
|
+
const result = await compose(['logs', '--tail=50', 'db'], { pipe: true });
|
|
30
|
+
return result.stdout ?? '';
|
|
31
|
+
});
|
|
32
|
+
const allDone = [systemdTask, webTask, dbTask].every(t => t.status === 'done' || t.status === 'error');
|
|
33
|
+
useEffect(() => { if (allDone)
|
|
34
|
+
exit(); }, [allDone, exit]);
|
|
35
|
+
return (_jsxs(AppShell, { command: "ct diag service", children: [_jsxs(Section, { title: "Systemd Service Logs (Last 50 lines)", children: [systemdTask.status === 'pending' && _jsx(Spinner, { label: "Loading systemd logs..." }), systemdTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Systemd logs not available" }), systemdTask.status === 'done' && systemdTask.data === null && _jsx(StatusLine, { status: "warn", label: "Systemd logs not available" }), systemdTask.status === 'done' && systemdTask.data && _jsx(ShellOutput, { content: systemdTask.data })] }), _jsxs(Section, { title: "Web Container (Last 50 lines)", children: [webTask.status === 'pending' && _jsx(Spinner, { label: "Loading web logs..." }), webTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Could not fetch web logs" }), webTask.status === 'done' && webTask.data && _jsx(ShellOutput, { content: webTask.data })] }), _jsxs(Section, { title: "Database Container (Last 50 lines)", children: [dbTask.status === 'pending' && _jsx(Spinner, { label: "Loading database logs..." }), dbTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Could not fetch database logs" }), dbTask.status === 'done' && dbTask.data && _jsx(ShellOutput, { content: dbTask.data })] })] }));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=DiagServiceView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagServiceView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagServiceView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,0BAA0B;IAC1B,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;gBACrC,YAAY,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY;aAC3E,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,CAAC,gBAAgB;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,gCAAgC;IAChC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QACrC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IACvG,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO;QAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAE3D,OAAO,CACL,MAAC,QAAQ,IAAC,OAAO,EAAC,iBAAiB,aACjC,MAAC,OAAO,IAAC,KAAK,EAAC,sCAAsC,aAClD,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,yBAAyB,GAAG,EAC/E,WAAW,CAAC,MAAM,KAAK,OAAO,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,GAAG,EACjG,WAAW,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,GAAG,EAC7H,WAAW,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,WAAW,CAAC,IAAI,GAAI,IACxF,EAEV,MAAC,OAAO,IAAC,KAAK,EAAC,+BAA+B,aAC3C,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,qBAAqB,GAAG,EACvE,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,0BAA0B,GAAG,EAC3F,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,OAAO,CAAC,IAAI,GAAI,IAC5E,EAEV,MAAC,OAAO,IAAC,KAAK,EAAC,oCAAoC,aAChD,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,0BAA0B,GAAG,EAC3E,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,+BAA+B,GAAG,EAC/F,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,MAAM,CAAC,IAAI,GAAI,IACzE,IACD,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DockerNetworkView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DockerNetworkView.tsx"],"names":[],"mappings":"AAMA,wBAAgB,iBAAiB,4CA0ChC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useApp } from 'ink';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
|
|
6
|
+
import { useAsyncTask } from '../hooks/index.js';
|
|
7
|
+
export function DockerNetworkView() {
|
|
8
|
+
const { exit } = useApp();
|
|
9
|
+
const networkTask = useAsyncTask(async () => {
|
|
10
|
+
const { stdout: networkIds } = await execa('docker', [
|
|
11
|
+
'network', 'ls', '-q', '-f', 'name=ct',
|
|
12
|
+
], { stdout: 'pipe', stderr: 'pipe' });
|
|
13
|
+
if (!networkIds.trim()) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const ids = networkIds.trim().split('\n');
|
|
17
|
+
const { stdout } = await execa('docker', [
|
|
18
|
+
'network', 'inspect', ...ids,
|
|
19
|
+
], { stdout: 'pipe', stderr: 'pipe' });
|
|
20
|
+
return stdout;
|
|
21
|
+
});
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (networkTask.status === 'done' || networkTask.status === 'error') {
|
|
24
|
+
exit();
|
|
25
|
+
}
|
|
26
|
+
}, [networkTask.status, exit]);
|
|
27
|
+
return (_jsx(AppShell, { command: "ct docker network", children: _jsxs(Section, { title: "Docker Network Configuration", children: [networkTask.status === 'pending' && _jsx(Spinner, { label: "Inspecting networks..." }), networkTask.status === 'error' && (_jsx(StatusLine, { status: "fail", label: "Network 'ct' not found" })), networkTask.status === 'done' && networkTask.data === null && (_jsx(StatusLine, { status: "fail", label: "Network 'ct' not found" })), networkTask.status === 'done' && networkTask.data && (_jsx(ShellOutput, { content: networkTask.data }))] }) }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=DockerNetworkView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DockerNetworkView.js","sourceRoot":"","sources":["../../../src/ui/views/DockerNetworkView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,iBAAiB;IAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QAC1C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACnD,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS;SACvC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEvC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACvC,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG;SAC7B,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEvC,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACpE,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,OAAO,CACL,KAAC,QAAQ,IAAC,OAAO,EAAC,mBAAmB,YACnC,MAAC,OAAO,IAAC,KAAK,EAAC,8BAA8B,aAC1C,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,wBAAwB,GAAG,EAC9E,WAAW,CAAC,MAAM,KAAK,OAAO,IAAI,CACjC,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,wBAAwB,GAAG,CAC5D,EACA,WAAW,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,IAAI,CAC7D,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,wBAAwB,GAAG,CAC5D,EACA,WAAW,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,IAAI,CACpD,KAAC,WAAW,IAAC,OAAO,EAAE,WAAW,CAAC,IAAI,GAAI,CAC3C,IACO,GACD,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DockerPruneView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DockerPruneView.tsx"],"names":[],"mappings":"AA6CA,wBAAgB,eAAe,4CA2B9B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { Box, useApp } from 'ink';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import { AppShell, Section, StepList, Divider, StatusLine } from '../components/index.js';
|
|
6
|
+
import { useStepRunner } from '../hooks/index.js';
|
|
7
|
+
const steps = [
|
|
8
|
+
{
|
|
9
|
+
label: 'Remove stopped containers',
|
|
10
|
+
run: async () => {
|
|
11
|
+
await execa('docker', ['container', 'prune', '-f'], { stdout: 'pipe', stderr: 'pipe' });
|
|
12
|
+
return 'done';
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
label: 'Remove unused networks',
|
|
17
|
+
run: async () => {
|
|
18
|
+
await execa('docker', ['network', 'prune', '-f'], { stdout: 'pipe', stderr: 'pipe' });
|
|
19
|
+
return 'done';
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
label: 'Remove unused volumes',
|
|
24
|
+
run: async () => {
|
|
25
|
+
await execa('docker', ['volume', 'prune', '-f'], { stdout: 'pipe', stderr: 'pipe' });
|
|
26
|
+
return 'done';
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
label: 'Remove unused images',
|
|
31
|
+
run: async () => {
|
|
32
|
+
await execa('docker', ['image', 'prune', '-a', '-f', '--filter', 'until=24h'], { stdout: 'pipe', stderr: 'pipe' });
|
|
33
|
+
return 'done';
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
label: 'Remove dangling images',
|
|
38
|
+
run: async () => {
|
|
39
|
+
await execa('docker', ['image', 'prune', '-f'], { stdout: 'pipe', stderr: 'pipe' });
|
|
40
|
+
return 'done';
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
export function DockerPruneView() {
|
|
45
|
+
const { exit } = useApp();
|
|
46
|
+
const { states, isDone, run } = useStepRunner(steps);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
run();
|
|
49
|
+
}, [run]);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (isDone) {
|
|
52
|
+
exit();
|
|
53
|
+
}
|
|
54
|
+
}, [isDone, exit]);
|
|
55
|
+
return (_jsxs(AppShell, { command: "ct docker prune", children: [_jsx(Section, { title: "Docker Cleanup", children: _jsx(StepList, { steps: states }) }), isDone && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Divider, {}), _jsx(StatusLine, { status: "ok", label: "Docker cleanup complete" })] }))] }));
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=DockerPruneView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DockerPruneView.js","sourceRoot":"","sources":["../../../src/ui/views/DockerPruneView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DockerStatusView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DockerStatusView.tsx"],"names":[],"mappings":"AAOA,wBAAgB,gBAAgB,4CAqE/B"}
|