chore: rename app
This commit is contained in:
Generated
+1
-1
@@ -2472,7 +2472,7 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "xboctploy"
|
name = "xboct-deploy"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
|||||||
+2
-2
@@ -1,10 +1,10 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "xboctploy"
|
name = "xboct-deploy"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
description = "Lightweight CLI to deploy hobby projects from a local PC to a VPS over SSH"
|
description = "Lightweight CLI to deploy hobby projects from a local PC to a VPS over SSH"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
repository = "https://xboct-git.duckdns.org/Ku6epXBOCTuK/xboctploy"
|
repository = "https://xboct-git.duckdns.org/Ku6epXBOCTuK/xboct-deploy"
|
||||||
keywords = ["deploy", "ssh", "sftp", "vps", "cli"]
|
keywords = ["deploy", "ssh", "sftp", "vps", "cli"]
|
||||||
categories = ["command-line-utilities", "development-tools"]
|
categories = ["command-line-utilities", "development-tools"]
|
||||||
rust-version = "1.88"
|
rust-version = "1.88"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# xboctploy
|
# xboct-deploy
|
||||||
|
|
||||||
Легковесная CLI-утилита на Rust для централизованного деплоя хобби-проектов
|
Легковесная CLI-утилита на Rust для централизованного деплоя хобби-проектов
|
||||||
(Node.js, Rust) с локального ПК на слабую VPS по SSH.
|
(Node.js, Rust) с локального ПК на слабую VPS по SSH.
|
||||||
@@ -19,12 +19,12 @@ cargo install --path .
|
|||||||
## Быстрый старт
|
## Быстрый старт
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
xboctploy --list # показать проекты из конфига
|
xboct-deploy --list # показать проекты из конфига
|
||||||
xboctploy --list-servers # показать серверы из конфига
|
xboct-deploy --list-servers # показать серверы из конфига
|
||||||
xboctploy --pick # интерактивно выбрать проект (нечёткий поиск)
|
xboct-deploy --pick # интерактивно выбрать проект (нечёткий поиск)
|
||||||
xboctploy --dry-run demo # напечатать план деплоя без выполнения
|
xboct-deploy --dry-run demo # напечатать план деплоя без выполнения
|
||||||
xboctploy demo # задеплоить проект demo
|
xboct-deploy demo # задеплоить проект demo
|
||||||
xboctploy --this # задеплоить проект текущей папки (глобальный конфиг)
|
xboct-deploy --this # задеплоить проект текущей папки (глобальный конфиг)
|
||||||
```
|
```
|
||||||
|
|
||||||
Вывод:
|
Вывод:
|
||||||
@@ -43,7 +43,7 @@ Deploy successful! (total 2.3s)
|
|||||||
|
|
||||||
1. `--config PATH`, если указан явно;
|
1. `--config PATH`, если указан явно;
|
||||||
2. `./deploy.toml` в текущей папке — удобно держать рядом с проектом и в тестах;
|
2. `./deploy.toml` в текущей папке — удобно держать рядом с проектом и в тестах;
|
||||||
3. глобальный `~/.config/xboctploy/deploy.toml` — запуск «из любой папки».
|
3. глобальный `~/.config/xboct-deploy/deploy.toml` — запуск «из любой папки».
|
||||||
|
|
||||||
`--this` деплоит проект, чей `workdir` совпадает с текущей папкой; конфиг
|
`--this` деплоит проект, чей `workdir` совпадает с текущей папкой; конфиг
|
||||||
ищется по обычной цепочке, так что временный локальный `./deploy.toml`
|
ищется по обычной цепочке, так что временный локальный `./deploy.toml`
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ use clap::{ArgGroup, Parser};
|
|||||||
|
|
||||||
/// Deploy hobby projects from a local PC to a VPS over SSH.
|
/// Deploy hobby projects from a local PC to a VPS over SSH.
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
#[command(name = "xboctploy", version, about)]
|
#[command(name = "xboct-deploy", version, about)]
|
||||||
#[command(arg_required_else_help = true)]
|
#[command(arg_required_else_help = true)]
|
||||||
#[command(group = ArgGroup::new("target").required(true).args(["project", "list", "list_servers", "pick", "this"]))]
|
#[command(group = ArgGroup::new("target").required(true).args(["project", "list", "list_servers", "pick", "this"]))]
|
||||||
pub struct Cli {
|
pub struct Cli {
|
||||||
|
|||||||
+2
-2
@@ -6,7 +6,7 @@ use anyhow::{Context, Result, bail};
|
|||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
pub const CONFIG_FILE_NAME: &str = "deploy.toml";
|
pub const CONFIG_FILE_NAME: &str = "deploy.toml";
|
||||||
pub const GLOBAL_DIR: &str = "xboctploy";
|
pub const GLOBAL_DIR: &str = "xboct-deploy";
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
#[serde(deny_unknown_fields)]
|
#[serde(deny_unknown_fields)]
|
||||||
@@ -423,7 +423,7 @@ commands = []
|
|||||||
|
|
||||||
fn tmpdir(tag: &str) -> PathBuf {
|
fn tmpdir(tag: &str) -> PathBuf {
|
||||||
let dir =
|
let dir =
|
||||||
std::env::temp_dir().join(format!("xboctploy-tests-{}-{tag}", std::process::id()));
|
std::env::temp_dir().join(format!("xboct-deploy-tests-{}-{tag}", std::process::id()));
|
||||||
let _ = fs::remove_dir_all(&dir);
|
let _ = fs::remove_dir_all(&dir);
|
||||||
fs::create_dir_all(&dir).unwrap();
|
fs::create_dir_all(&dir).unwrap();
|
||||||
dir
|
dir
|
||||||
|
|||||||
+1
-1
@@ -97,7 +97,7 @@ mod tests {
|
|||||||
|
|
||||||
fn tmpdir(tag: &str) -> PathBuf {
|
fn tmpdir(tag: &str) -> PathBuf {
|
||||||
let dir =
|
let dir =
|
||||||
std::env::temp_dir().join(format!("xboctploy-local-{}-{tag}", std::process::id()));
|
std::env::temp_dir().join(format!("xboct-deploy-local-{}-{tag}", std::process::id()));
|
||||||
let _ = fs::remove_dir_all(&dir);
|
let _ = fs::remove_dir_all(&dir);
|
||||||
fs::create_dir_all(&dir).unwrap();
|
fs::create_dir_all(&dir).unwrap();
|
||||||
dir
|
dir
|
||||||
|
|||||||
Reference in New Issue
Block a user