kawazu
Version:
kawazu CLI tool for real-time chat in your editor
81 lines (80 loc) • 3.57 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.showProfile = showProfile;
exports.openProfile = openProfile;
const chalk_1 = __importDefault(require("chalk"));
const node_fetch_1 = __importDefault(require("node-fetch"));
const config_1 = require("../utils/config");
async function showProfile(username) {
try {
const config = await (0, config_1.loadConfig)();
console.log(chalk_1.default.blue(` ${username} のプロフィールを取得中...`));
// API リクエスト
const response = await (0, node_fetch_1.default)(`${config.server_url}/api/profiles/${username}/url`);
const result = await response.json();
if (!response.ok || !result.success) {
console.error(chalk_1.default.red(` ${result.error || 'プロフィールが見つかりません'}`));
return;
}
const { url, is_public } = result.data;
console.log(chalk_1.default.green('\n プロフィールが見つかりました!'));
console.log(` ユーザー: ${chalk_1.default.cyan(username)}`);
console.log(` URL: ${chalk_1.default.blue(url)}`);
if (!is_public) {
console.log(chalk_1.default.yellow(' このプロフィールはプライベート設定です'));
}
console.log(chalk_1.default.gray('\n 上記URLをブラウザで開いてプロフィールを確認できます'));
}
catch (error) {
console.error(chalk_1.default.red(` エラーが発生しました: ${error.message}`));
if (error.code === 'ECONNREFUSED') {
console.log(chalk_1.default.yellow(' APIサーバーが起動していない可能性があります'));
}
}
}
async function openProfile(username) {
try {
const config = await (0, config_1.loadConfig)();
// プロフィールURL取得
const response = await (0, node_fetch_1.default)(`${config.server_url}/api/profiles/${username}/url`);
const result = await response.json();
if (!response.ok || !result.success) {
console.error(chalk_1.default.red(` ${result.error || 'プロフィールが見つかりません'}`));
return;
}
const { url } = result.data;
// プラットフォーム別でブラウザオープン
const { spawn } = require('child_process');
const platform = process.platform;
let command;
let args;
if (platform === 'darwin') {
command = 'open';
args = [url];
}
else if (platform === 'win32') {
command = 'start';
args = [url];
}
else {
command = 'xdg-open';
args = [url];
}
console.log(chalk_1.default.blue(` ブラウザで ${username} のプロフィールを開いています...`));
console.log(chalk_1.default.gray(`URL: ${url}`));
const child = spawn(command, args, {
detached: true,
stdio: 'ignore'
});
child.unref();
}
catch (error) {
console.error(chalk_1.default.red(` ブラウザを開けませんでした: ${error.message}`));
console.log(chalk_1.default.yellow(' 手動でブラウザを開いて以下のURLにアクセスしてください:'));
// フォールバック: URL表示
await showProfile(username);
}
}