feat: 命令行应用增加tailchat docker init命令

pull/64/head
moonrailgun 2 years ago
parent 97c152914d
commit f1238badbd

@ -35,6 +35,7 @@
"dependencies": {
"@types/dockerode": "^3.3.10",
"as-table": "^1.0.55",
"chalk": "4.1.2",
"dockerode": "^3.3.4",
"dotenv": "^16.0.0",
"filesize": "^8.0.7",

@ -4,9 +4,32 @@ import asTable from 'as-table';
import filesize from 'filesize';
import ora from 'ora';
import Spinnies from 'spinnies';
import fs from 'fs-extra';
import got from 'got';
import path from 'path';
import chalk from 'chalk';
import inquirer from 'inquirer';
// https://docs.docker.com/engine/api/v1.41/
const initWelcome = chalk.green(`================
, !
tailchat: ${chalk.underline(
path.join(process.cwd(), './tailchat')
)}
:
- ${chalk.bold('cd tailchat')} ${chalk.gray('# 移动到安装目录')}
- ${chalk.bold('tailchat docker update')} ${chalk.gray('# 下载/更新官方镜像')}
- ${chalk.bold('docker compose up')} ${chalk.gray('# 启动服务')}
================`);
const envUrl =
'https://ghproxy.com/https://raw.githubusercontent.com/msgbyte/tailchat/master/docker-compose.env';
const configUrl =
'https://ghproxy.com/https://raw.githubusercontent.com/msgbyte/tailchat/master/docker-compose.yml';
const remoteImageName = 'moonrailgun/tailchat:latest';
const targetImage = {
repo: 'tailchat',
@ -19,6 +42,40 @@ export const dockerCommand: CommandModule = {
describe: 'Tailchat 镜像管理',
builder: (yargs) =>
yargs
.command(
'init',
'初始化Tailchat with docker配置',
(yargs) => {},
async (args) => {
const spinner = ora();
try {
spinner.start('开始下载最新的配置文件');
const [rawEnv, rawConfig] = await Promise.all([
got(envUrl).then((res) => res.body),
got(configUrl).then((res) => res.body),
]);
spinner.info('配置文件下载完毕');
// TODO: 需要实现交互式初始化引导用户配置SECRETAPI_URL, SMTP 服务
spinner.info('正在创建目录 tailchat ...');
await fs.mkdir('./tailchat');
spinner.info('正在写入配置文件 ...');
await Promise.all([
fs.writeFile('./tailchat/docker-compose.env', rawEnv),
fs.writeFile('./tailchat/docker-compose.yml', rawConfig),
]);
spinner.succeed('配置初始化完毕');
console.log(initWelcome);
} catch (err) {
spinner.fail('Tailchat with docker 初始化出现意外');
console.error(err);
}
}
)
.command(
'doctor',
'docker环境检查',

@ -69,6 +69,7 @@ importers:
'@types/spinnies': ^0.5.0
'@types/yargs': ^17.0.10
as-table: ^1.0.55
chalk: 4.1.2
cross-env: ^7.0.3
dockerode: ^3.3.4
dotenv: ^16.0.0
@ -97,6 +98,7 @@ importers:
dependencies:
'@types/dockerode': 3.3.10
as-table: 1.0.55
chalk: 4.1.2
dockerode: 3.3.4
dotenv: 16.0.2
filesize: 8.0.7
@ -14508,11 +14510,6 @@ packages:
ansi-styles: 4.3.0
supports-color: 7.2.0
/chalk/5.0.1:
resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
dev: false
/chalk/5.1.2:
resolution: {integrity: sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
@ -26684,7 +26681,7 @@ packages:
hasBin: true
dependencies:
'@types/liftoff': 4.0.0
chalk: 5.0.1
chalk: 5.1.2
interpret: 2.2.0
liftoff: 4.0.0
minimist: 1.2.6

Loading…
Cancel
Save