gensx
Version:
`GenSX command line tools.
65 lines • 3.28 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
import { Box, Text, useApp } from "ink";
import { useEffect, useState } from "react";
import { ErrorMessage } from "../../components/ErrorMessage.js";
import { LoadingSpinner } from "../../components/LoadingSpinner.js";
import { useProjectName } from "../../hooks/useProjectName.js";
import { getAuth } from "../../utils/config.js";
import { getSelectedEnvironment } from "../../utils/env-config.js";
function useShowEnvironment(initialProjectName) {
const { exit } = useApp();
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const [selectedEnvironment, setSelectedEnvironment] = useState(null);
const { loading: projectLoading, error: projectError, projectName, } = useProjectName(initialProjectName);
useEffect(() => {
let mounted = true;
async function showEnvironmentFlow() {
if (!projectName)
return;
try {
// Check authentication first
const authConfig = await getAuth();
if (!authConfig) {
throw new Error("Not authenticated. Please run 'gensx login' first.");
}
const selectedEnv = await getSelectedEnvironment(projectName);
if (mounted) {
setSelectedEnvironment(selectedEnv);
setLoading(false);
}
}
catch (err) {
if (mounted) {
const error = err instanceof Error ? err : new Error(String(err));
setError(error);
setLoading(false);
setTimeout(() => {
exit();
}, 100);
}
}
}
void showEnvironmentFlow();
return () => {
mounted = false;
};
}, [projectName, exit]);
return {
loading: loading || projectLoading,
error: error ?? projectError,
projectName,
selectedEnvironment,
};
}
export function ShowEnvironmentUI({ projectName: initialProjectName }) {
const { loading, error, projectName, selectedEnvironment } = useShowEnvironment(initialProjectName);
if (error) {
return _jsx(ErrorMessage, { message: error.message });
}
if (loading || !projectName) {
return _jsx(LoadingSpinner, {});
}
return (_jsx(Box, { flexDirection: "column", gap: 1, children: selectedEnvironment ? (_jsxs(Text, { children: [_jsx(Text, { color: "blue", children: "\u2139\uFE0E" }), " Active environment for project", " ", _jsx(Text, { color: "cyan", children: projectName }), ":", " ", _jsx(Text, { color: "green", children: selectedEnvironment })] })) : (_jsxs(_Fragment, { children: [_jsxs(Text, { children: [_jsx(Text, { color: "blue", children: "\u2139\uFE0E" }), " No active environment set for project", " ", _jsx(Text, { color: "cyan", children: projectName })] }), _jsxs(Text, { color: "gray", dimColor: true, children: ["\u203A Run ", _jsx(Text, { color: "yellow", children: "gensx env select <env-name>" }), " ", "to activate an environment."] })] })) }));
}
//# sourceMappingURL=show.js.map