diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..e3c88ba --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,49 @@ +name: build + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build-rust: + strategy: + matrix: + platform: [ubuntu-latest] + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v2 + - name: Cache cargo registry + uses: actions/cache@v1 + with: + path: ~/.cargo/registry + key: ${{ runner.os }}-cargo-registry + - name: Cache cargo index + uses: actions/cache@v1 + with: + path: ~/.cargo/git + key: ${{ runner.os }}-cargo-index + - name: Cache cargo build + uses: actions/cache@v1 + with: + path: rust/target + key: ${{ runner.os }}-cargo-build-target + - name: Install stable + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + - name: Check code format + run: cargo fmt -- --check + - name: Check the package for errors + run: cargo check --all + - name: Lint rust sources + run: cargo clippy --all-targets --all-features --tests --benches -- -D warnings + - name: Run tests + run: RUST_BACKTRACE=1 cargo test --all-features -- --test-threads=1 --nocapture + - name: Generate docs + run: cargo doc --all-features --no-deps diff --git a/Cargo.lock b/Cargo.lock index a54286a..4cc1cda 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -798,7 +798,7 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "salvo-cli" -version = "0.1.11" +version = "0.1.19" dependencies = [ "ansi_term", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 93fbd59..e3abfe2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "salvo-cli" -version = "0.1.11" +version = "0.1.19" edition = "2021" authors = ["Fankai Liu liufankai137@outlook.com"] keywords = ["salvo", "cli","template"] diff --git a/README.md b/README.md index c30fb31..0d34a23 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,20 @@ +
+ Savlo +
+
+ + build status + + + crates.io + + + Download + + License +
-# Salvo CLI +## Introduction Salvo CLI is a command-line interface tool for the [Salvo](https://github.com/salvo-rs/salvo) web framework. It helps streamline the process of setting up a new Salvo project by generating a template structure. @@ -8,32 +23,88 @@ Salvo CLI is a command-line interface tool for the [Salvo](https://github.com/sa ```bash cargo install salvo-cli ``` + ## Usage + To create a new Salvo project, use the new command followed by the name of your project: ```bash +//use the local language salvo-cli new project_name + +// Use English +salvo-cli new project_name --lang=en + +// 使用简体中文 +salvo-cli new project_name --lang=zh + +// 使用繁體中文 +salvo-cli new project_name --lang=zh_TW + +// Utilisez le français +salvo-cli new project_name --lang=fr + +// 日本語を使用する +salvo-cli new project_name --lang=ja + +// Usa el español +salvo-cli new project_name --lang=es + +// Verwenden Sie Deutsch +salvo-cli new project_name --lang=de + +// Используйте русский +salvo-cli new project_name --lang=ru + +// Usa l `italiano +salvo-cli new project_name --lang=it + +// Use o português +salvo-cli new project_name --lang=pt + +// 한국어를 사용하십시오 +salvo-cli new project_name --lang=ko + +// Bruk norsk +salvo-cli new project_name --lang=no + +// Notaðu íslensku +salvo-cli new project_name --lang=is + +// Використовуйте українську +salvo-cli new project_name --lang=uk + +// ใช้ภาษาไทย +salvo-cli new project_name --lang=th + +// Χρησιμοποιήστε την ελληνική +salvo-cli new project_name --lang=el + +// Brug dansk +salvo-cli new project_name --lang=da ``` + ## Update + ```bashs cargo install --force salvo-cli ``` ### Feature Development Plan -| Status |Plan | -|:---:|:---:| -|✅| web api template | -|✅| web site with template | -|✅|with sqlx template| -|✅|basic midware | -|✅|suport sqlite,pgsql,mysql| -|✅|with seaorm template| -|✅| better web site | -|✅| with diesel template| -|| with Rbatis template| +| Status | Plan | +| :----: | :--------------------------------------------------------------------------------: | +| ✅ | web api template | +| ✅ | web site template | +| ✅ | Template with SQLx, SeaORM, Diesel, Rbatis (support for SQLite, PostgreSQL, MySQL) | +| ✅ | Basic middleware | +| ⏳ | More middleware | +| ⏳ | Support for MongoDB | + ## License + This project is licensed under the MIT OR Apache-2.0 License. ## Contributing + Contributions are welcome! Please feel free to submit a Pull Request. diff --git a/locales/app.yml b/locales/app.yml index ff37518..415693e 100644 --- a/locales/app.yml +++ b/locales/app.yml @@ -382,4 +382,22 @@ select_db_type: uk: виберіть тип бази даних th: เลือกประเภทฐานข้อมูล el: επιλέξτε τύπο βάσης δεδομένων - da: vælg databasetype \ No newline at end of file + da: vælg databasetype +access_instructions: + en: After running it, you can access /login with the default username:zhangsan and password:123 + zh_CN: 运行之后,您可以使用默认用户名:zhangsan和密码:123访问/login + zh_TW: 運行之後,您可以使用預設的使用者名稱:zhangsan和密碼:123來訪問/login + fr: Après l'avoir exécuté, vous pouvez accéder à /login avec le nom d'utilisateur par défaut:zhangsan et le mot de passe:123 + ja: 実行した後、デフォルトのユーザー名:zhangsanとパスワード:123で/loginにアクセスできます + es: Después de ejecutarlo, puedes acceder a /login con el nombre de usuario predeterminado:zhangsan y la contraseña:123 + de: Nach dem Ausführen können Sie sich mit dem Standard-Benutzernamen:zhangsan und Passwort:123 bei /login anmelden + ru: После запуска вы можете войти в /login с использованием стандартного имени пользователя:zhangsan и пароля:123 + it: Dopo averlo eseguito, è possibile accedere a /login con il nome utente predefinito:zhangsan e la password:123 + pt: Depois de executá-lo, você pode acessar /login com o nome de usuário padrão:zhangsan e a senha:123 + ko: 실행한 후 기본 사용자 이름:zhangsan 및 비밀번호:123으로 /login에 접속할 수 있습니다 + no: Etter at du har kjørt det, kan du få tilgang til /login med standard brukernavn:zhangsan og passord:123 + is: Eftir að hafa keyrt það, getur þú notað /login með sjálfgefna notendanafnið:zhangsan og lykilorðið:123 + uk: Після його запуску Ви можете отримати доступ до /login за допомогою стандартного імені користувача:zhangsan та пароля:123 + th: หลังจากทำการรันแล้ว คุณสามารถเข้าถึง /login ด้วยชื่อผู้ใช้งานเริ่มต้น:zhangsan และรหัสผ่าน:123 + el: Αφού το τρέξετε, μπορείτε να προσπελάσετε το /login με το προεπιλεγμένο όνομα χρήστη:zhangsan και τον κωδικό πρόσβασης:123 + da: Efter du har kørt det, kan du få adgang til /login med standard brugernavn:zhangsan og adgangskode:123 \ No newline at end of file diff --git a/locales/code_comment.yml b/locales/code_comment.yml index 605811b..b5a8956 100644 --- a/locales/code_comment.yml +++ b/locales/code_comment.yml @@ -437,23 +437,23 @@ create_success_sea_orm: el: 🐚 Επιλέξατε sea-orm, η τεκμηρίωση μπορεί να προβληθεί εδώ:https://www.sea-ql.org/SeaORM/docs/index/ da: 🐚 Du har valgt sea-orm, dokumentationen kan ses her:https://www.sea-ql.org/SeaORM/docs/index/ create_success_sqlx_sqlite: - en: 🎯 Default database created in `/data/demo.db`.\n After running it, you can access /login with the default username:zhangsan and password:123. - zh_CN: 🎯 默认数据库创建在`/data/demo.db`。\n 运行后,您可以使用默认用户名:zhangsan和密码:123访问/login。 - zh_TW: 🎯 預設資料庫創建在`/data/demo.db`。\n 運行後,您可以使用預設用戶名:zhangsan和密碼:123訪問/login。 - fr: 🎯 Base de données par défaut créée dans `/data/demo.db`. \n Après l'avoir exécuté, vous pouvez accéder à /login avec le nom d'utilisateur par défaut:zhangsan et le mot de passe:123. - ja: 🎯 デフォルトのデータベースが`/data/demo.db`に作成されました。\n 実行後、デフォルトのユーザー名:zhangsanとパスワード:123で/loginにアクセスできます。 - es: 🎯 Base de datos predeterminada creada en `/data/demo.db`. \n Después de ejecutarlo, puede acceder a /login con el nombre de usuario predeterminado:zhangsan y la contraseña:123. + en: 🎯 Default database created in `/data/demo.db`.\n After running it, you can access /login with the default username:zhangsan and password:123 + zh_CN: 🎯 默认数据库创建在`/data/demo.db`。\n 运行后,您可以使用默认用户名:zhangsan和密码:123访问/login + zh_TW: 🎯 預設資料庫創建在`/data/demo.db`。\n 運行後,您可以使用預設用戶名:zhangsan和密碼:123訪問/login + fr: 🎯 Base de données par défaut créée dans `/data/demo.db`. \n Après l'avoir exécuté, vous pouvez accéder à /login avec le nom d'utilisateur par défaut:zhangsan et le mot de passe:123 + ja: 🎯 デフォルトのデータベースが`/data/demo.db`に作成されました。\n 実行後、デフォルトのユーザー名:zhangsanとパスワード:123で/loginにアクセスできます + es: 🎯 Base de datos predeterminada creada en `/data/demo.db`. \n Después de ejecutarlo, puede acceder a /login con el nombre de usuario predeterminado:zhangsan y la contraseña:123 de: 🎯 Standarddatenbank erstellt in `/data/demo.db`. \n Nach dem Ausführen können Sie mit dem Standardbenutzernamen:zhangsan und dem Passwort:123 auf /login zugreifen. - ru: 🎯 База данных по умолчанию создана в `/data/demo.db`. \n После запуска вы можете получить доступ к /login с именем пользователя по умолчанию:zhangsan и паролем:123. - it: 🎯 Database predefinita creata in `/data/demo.db`. \n Dopo l'esecuzione, è possibile accedere a /login con l'username predefinito:zhangsan e la password:123. - pt: 🎯 Banco de dados padrão criado em `/data/demo.db`. \n Após executá-lo, você pode acessar /login com o nome de usuário padrão:zhangsan e a senha:123. + ru: 🎯 База данных по умолчанию создана в `/data/demo.db`. \n После запуска вы можете получить доступ к /login с именем пользователя по умолчанию:zhangsan и паролем:123 + it: 🎯 Database predefinita creata in `/data/demo.db`. \n Dopo l'esecuzione, è possibile accedere a /login con l'username predefinito:zhangsan e la password:123 + pt: 🎯 Banco de dados padrão criado em `/data/demo.db`. \n Após executá-lo, você pode acessar /login com o nome de usuário padrão:zhangsan e a senha:123 ko: 🎯 기본 데이터베이스가 `/data/demo.db`에 생성되었습니다. \n 실행 후 기본 사용자 이름:zhangsan과 비밀번호:123으로 /login에 접속할 수 있습니다. - no: 🎯 Standarddatabasen er opprettet i `/data/demo.db`. \n Etter å ha kjørt det, kan du få tilgang til /login med standard brukernavn:zhangsan og passord:123. - is: 🎯 Sjálfgefin gagnagrunn búin til í `/data/demo.db`. \n Eftir að hafa keyrt það, getur þú fengið aðgang að /login með sjálfgefnum notandanafni:zhangsan og lykilorði:123. - uk: 🎯 База даних за замовчуванням створена в `/data/demo.db`. \n Після запуску ви можете отримати доступ до /login за допомогою імені користувача за замовчуванням:zhangsan та пароля:123. - th: 🎯 สร้างฐานข้อมูลเริ่มต้นใน `/data/demo.db`. \n หลังจากเรียกใช้งาน คุณสามารถเข้าถึง /login ด้วยชื่อผู้ใช้เริ่มต้น:zhangsan และรหัสผ่าน:123. - el: 🎯 Δημιουργήθηκε η προεπιλεγμένη βάση δεδομένων στο `/data/demo.db`. \n Μετά την εκτέλεσή του, μπορείτε να αποκτήσετε πρόσβαση στο /login με το όνομα χρήστη:zhangsan και τον κωδικό πρόσβασης:123. - da: 🎯 Standarddatabasen er oprettet i `/data/demo.db`. \n Efter at have kørt det, kan du få adgang til /login med standardbrugernavnet:zhangsan og adgangskoden:123. + no: 🎯 Standarddatabasen er opprettet i `/data/demo.db`. \n Etter å ha kjørt det, kan du få tilgang til /login med standard brukernavn:zhangsan og passord:123 + is: 🎯 Sjálfgefin gagnagrunn búin til í `/data/demo.db`. \n Eftir að hafa keyrt það, getur þú fengið aðgang að /login með sjálfgefnum notandanafni:zhangsan og lykilorði:123 + uk: 🎯 База даних за замовчуванням створена в `/data/demo.db`. \n Після запуску ви можете отримати доступ до /login за допомогою імені користувача за замовчуванням:zhangsan та пароля:123 + th: 🎯 สร้างฐานข้อมูลเริ่มต้นใน `/data/demo.db`. \n หลังจากเรียกใช้งาน คุณสามารถเข้าถึง /login ด้วยชื่อผู้ใช้เริ่มต้น:zhangsan และรหัสผ่าน:123 + el: 🎯 Δημιουργήθηκε η προεπιλεγμένη βάση δεδομένων στο `/data/demo.db`. \n Μετά την εκτέλεσή του, μπορείτε να αποκτήσετε πρόσβαση στο /login με το όνομα χρήστη:zhangsan και τον κωδικό πρόσβασης:123 + da: 🎯 Standarddatabasen er oprettet i `/data/demo.db`. \n Efter at have kørt det, kan du få adgang til /login med standardbrugernavnet:zhangsan og adgangskoden:123 create_success_mysql_or_pgsql: en: 📊 Follow the instructions in the data/init_sql.sql file to complete the initialization of data zh_CN: 📊 按照data/init_sql.sql文件中的说明完成数据初始化 @@ -545,20 +545,38 @@ create_success_diesel__mysql_or_pgsql_fist_use: el: -- Παρακαλώ αλλάξτε πρώτα τη συμβολοσειρά σύνδεσης στη βάση δεδομένων στο .env και config/config.toml \n -- Βεβαιωθείτε ότι η βάση δεδομένων υπάρχει, στη συνέχεια εκτελέστε τη μετεγκατάσταση diesel για να επαναφέρετε τη βάση δεδομένων, και εκτελέστε το παρακάτω SQL στη βάση δεδομένων για να προσθέσετε τα προεπιλεγμένα δεδομένα. \n -- Μετά την εκτέλεση, μπορείτε να χρησιμοποιήσετε το προεπιλεγμένο όνομα χρήστη:zhangsan και τον κωδικό:123 για να έχετε πρόσβαση στο /login. \n -- Για περισσότερες λειτουργίες του diesel-cli, παρακαλώ δείτε το /migration/README.md. da: -- Ændre først forbindelsesstrengen til databasen i .env og config/config.toml \n -- Sørg for, at databasen eksisterer, kør derefter diesel migration run for at gendanne databasen, og kør den følgende SQL i databasen for at tilføje standarddataene. \n -- Efter kørsel, kan du bruge standard brugernavnet:zhangsan og adgangskoden:123 for at få adgang til /login. \n -- For mere funktionalitet fra diesel-cli, se venligst /migration/README.md. create_success_rbatis: - en: 🎯 Reminder:Please modify the database connection string in the /config/config.toml file before running it - zh_CN: 🎯 提醒:在运行之前,请在 /config/config.toml 文件中修改数据库连接字符串 - zh_TW: 🎯 提醒:在運行之前,請在 /config/config.toml 文件中修改數據庫連接字符串 - fr: 🎯 Rappel:Veuillez modifier la chaîne de connexion à la base de données dans le fichier /config/config.toml avant de l'exécuter - ja: 🎯 リマインダー:実行する前に、/config/config.toml ファイル内のデータベース接続文字列を変更してください - es: 🎯 Recordatorio:Por favor modifique la cadena de conexión de la base de datos en el archivo /config/config.toml antes de ejecutarlo - de: 🎯 Erinnerung:Bitte ändern Sie die Datenbankverbindungszeichenfolge in der /config/config.toml-Datei, bevor Sie sie ausführen - ru: 🎯 Напоминание:Перед запуском измените строку подключения к базе данных в файле /config/config.toml - it: 🎯 Promemoria:Modificare la stringa di connessione al database nel file /config/config.toml prima di eseguirlo - pt: 🎯 Lembrete:Por favor, modifique a string de conexão do banco de dados no arquivo /config/config.toml antes de executá-lo - ko: 🎯 알림:실행하기 전에 /config/config.toml 파일에서 데이터베이스 연결 문자열을 수정하세요 - no: 🎯 Påminnelse:Vennligst endre databaseforbindelsesstrengen i /config/config.toml-filen før du kjører den - is: 🎯 Áminning:Vinsamlegast breyttu gagnagrunnstengistrenginu í /config/config.toml skránni áður en þú keyrir það - uk: 🎯 Нагадування:Будь ласка, змініть рядок підключення до бази даних у файлі /config/config.toml перед його запуском - th: 🎯 แจ้งเตือน:โปรดแก้ไขสตริงการเชื่อมต่อฐานข้อมูลในไฟล์ /config/config.toml ก่อนที่จะทำการรัน - el: 🎯 Υπενθύμιση:Παρακαλώ τροποποιήστε τη συμβολοσειρά σύνδεσης βάσης δεδομένων στο αρχείο /config/config.toml πριν το τρέξετε - da: 🎯 Påmindelse:Ændr venligst databaseforbindelsesstrengen i /config/config.toml-filen, før du kører den \ No newline at end of file + en: 🎯 Reminder:Please modify the database connection string in the /config/config.toml file before running it \n you can access /login with the default username:zhangsan and password:123 + zh_CN: 🎯 提醒:在运行之前,请在 /config/config.toml 文件中修改数据库连接字符串 \n 您可以使用默认用户名:zhangsan和密码:123访问/login + zh_TW: 🎯 提醒:在運行之前,請在 /config/config.toml 文件中修改數據庫連接字符串 \n 您可以使用默認用戶名:zhangsan和密碼:123訪問/login + fr: 🎯 Rappel:Veuillez modifier la chaîne de connexion à la base de données dans le fichier /config/config.toml avant de l'exécuter \n vous pouvez accéder à /login avec le nom d'utilisateur par défaut:zhangsan et le mot de passe:123 + ja: 🎯 リマインダー:実行する前に、/config/config.toml ファイル内のデータベース接続文字列を変更してください \n デフォルトのユーザー名:zhangsanとパスワード:123で/loginにアクセスできます + es: 🎯 Recordatorio:Por favor modifique la cadena de conexión de la base de datos en el archivo /config/config.toml antes de ejecutarlo \n puede acceder a /login con el nombre de usuario predeterminado:zhangsan y la contraseña:123 + de: 🎯 Erinnerung:Bitte ändern Sie die Datenbankverbindungszeichenfolge in der /config/config.toml-Datei, bevor Sie sie ausführen \n Sie können sich mit dem Standard-Benutzernamen:zhangsan und Passwort:123 bei /login anmelden + ru: 🎯 Напоминание:Перед запуском измените строку подключения к базе данных в файле /config/config.toml \n вы можете войти в /login с использованием стандартного имени пользователя:zhangsan и пароля:123 + it: 🎯 Promemoria:Modificare la stringa di connessione al database nel file /config/config.toml prima di eseguirlo \n è possibile accedere a /login con il nome utente predefinito:zhangsan e la password:123 + pt: 🎯 Lembrete:Por favor, modifique a string de conexão do banco de dados no arquivo /config/config.toml antes de executá-lo \n você pode acessar /login com o nome de usuário padrão:zhangsan e a senha:123 + ko: 🎯 알림:실행하기 전에 /config/config.toml 파일에서 데이터베이스 연결 문자열을 수정하세요 \n 기본 사용자 이름:zhangsan 및 비밀번호:123으로 /login에 접속할 수 있습니다 + no: 🎯 Påminnelse:Vennligst endre databaseforbindelsesstrengen i /config/config.toml-filen før du kjører den \n du kan få tilgang til /login med standard brukernavn:zhangsan og passord:123 + is: 🎯 Áminning:Vinsamlegast breyttu gagnagrunnstengistrenginu í /config/config.toml skránni áður en þú keyrir það \n þú getur notað /login með sjálfgefna notendanafnið:zhangsan og lykilorðið:123 + uk: 🎯 Нагадування:Будь ласка, змініть рядок підключення до бази даних у файлі /config/config.toml перед його запуском \n Ви можете отримати доступ до /login за допомогою стандартного імені користувача:zhangsan та пароля:123 + th: 🎯 แจ้งเตือน:โปรดแก้ไขสตริงการเชื่อมต่อฐานข้อมูลในไฟล์ /config/config.toml ก่อนที่จะทำการรัน \n คุณสามารถเข้าถึง /login ด้วยชื่อผู้ใช้งานเริ่มต้น:zhangsan และรหัสผ่าน:123 + el: 🎯 Υπενθύμιση:Παρακαλώ τροποποιήστε τη συμβολοσειρά σύνδεσης βάσης δεδομένων στο αρχείο /config/config.toml πριν το τρέξετε \n μπορείτε να προσπελάσετε το /login με το προεπιλεγμένο όνομα χρήστη:zhangsan και τον κωδικό πρόσβασης:123 + da: 🎯 Påmindelse:Ændr venligst databaseforbindelsesstrengen i /config/config.toml-filen, før du kører den \n du kan få adgang til /login med standard brugernavn:zhangsan og adgangskode:123 +create_success_sqlx_diesel: + en: 🎯 Default database created in `/data/test.db`.\n After running it, you can access /login with the default username:zhangsan and password:123 + zh_CN: 🎯 默认数据库创建在`/data/test.db`。\n 运行后,您可以使用默认用户名:zhangsan和密码:123访问/login + zh_TW: 🎯 預設資料庫創建在`/data/test.db`。\n 運行後,您可以使用預設用戶名:zhangsan和密碼:123訪問/login + fr: 🎯 Base de données par défaut créée dans `/data/test.db`. \n Après l'avoir exécuté, vous pouvez accéder à /login avec le nom d'utilisateur par défaut:zhangsan et le mot de passe:123 + ja: 🎯 デフォルトのデータベースが`/data/test.db`に作成されました。\n 実行後、デフォルトのユーザー名:zhangsanとパスワード:123で/loginにアクセスできます + es: 🎯 Base de datos predeterminada creada en `/data/test.db`. \n Después de ejecutarlo, puede acceder a /login con el nombre de usuario predeterminado:zhangsan y la contraseña:123 + de: 🎯 Standarddatenbank erstellt in `/data/test.db`. \n Nach dem Ausführen können Sie mit dem Standardbenutzernamen:zhangsan und dem Passwort:123 auf /login zugreifen. + ru: 🎯 База данных по умолчанию создана в `/data/test.db`. \n После запуска вы можете получить доступ к /login с именем пользователя по умолчанию:zhangsan и паролем:123 + it: 🎯 Database predefinita creata in `/data/test.db`. \n Dopo l'esecuzione, è possibile accedere a /login con l'username predefinito:zhangsan e la password:123 + pt: 🎯 Banco de dados padrão criado em `/data/test.db`. \n Após executá-lo, você pode acessar /login com o nome de usuário padrão:zhangsan e a senha:123 + ko: 🎯 기본 데이터베이스가 `/data/test.db`에 생성되었습니다. \n 실행 후 기본 사용자 이름:zhangsan과 비밀번호:123으로 /login에 접속할 수 있습니다. + no: 🎯 Standarddatabasen er opprettet i `/data/test.db`. \n Etter å ha kjørt det, kan du få tilgang til /login med standard brukernavn:zhangsan og passord:123 + is: 🎯 Sjálfgefin gagnagrunn búin til í `/data/test.db`. \n Eftir að hafa keyrt það, getur þú fengið aðgang að /login með sjálfgefnum notandanafni:zhangsan og lykilorði:123 + uk: 🎯 База даних за замовчуванням створена в `/data/test.db`. \n Після запуску ви можете отримати доступ до /login за допомогою імені користувача за замовчуванням:zhangsan та пароля:123 + th: 🎯 สร้างฐานข้อมูลเริ่มต้นใน `/data/test.db`. \n หลังจากเรียกใช้งาน คุณสามารถเข้าถึง /login ด้วยชื่อผู้ใช้เริ่มต้น:zhangsan และรหัสผ่าน:123 + el: 🎯 Δημιουργήθηκε η προεπιλεγμένη βάση δεδομένων στο `/data/test.db`. \n Μετά την εκτέλεσή του, μπορείτε να αποκτήσετε πρόσβαση στο /login με το όνομα χρήστη:zhangsan και τον κωδικό πρόσβασης:123 + da: 🎯 Standarddatabasen er oprettet i `/data/test.db`. \n Efter at have kørt det, kan du få adgang til /login med standardbrugernavnet:zhangsan og adgangskoden:123 diff --git a/src/i18n.rs b/src/i18n.rs index c4a9158..36a3a5f 100644 --- a/src/i18n.rs +++ b/src/i18n.rs @@ -1,14 +1,25 @@ -use rust_i18n::i18n; - -pub fn set_locale() { - i18n!("locales", fallback = "en"); - match get_language() { +const SUPPORTED_LANGUAGES: [&str; 17] = [ + "en", "zh_CN", "zh_TW", "fr", "ja", "es", "de", "ru", "it", "pt", "ko", "no", "is", "uk", "th", + "el", "da", +]; +pub fn set_locale(language: &Option) { + match language { Some(lang) => { - rust_i18n::set_locale(lang.as_str()); - } - None => { - rust_i18n::set_locale("en"); + let lang = if lang == "zh" { "zh_CN" } else { lang }; + if SUPPORTED_LANGUAGES.contains(&lang) { + rust_i18n::set_locale(lang); + } else { + rust_i18n::set_locale("en"); + } } + None => match get_language() { + Some(lang) => { + rust_i18n::set_locale(lang.as_str()); + } + None => { + rust_i18n::set_locale("en"); + } + }, } } fn get_language() -> Option { diff --git a/src/main.rs b/src/main.rs index 0100c71..756f66b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,9 +4,9 @@ use clap::Parser; mod utils; use i18n::set_locale; mod i18n; -rust_i18n::i18n!("locales"); +rust_i18n::i18n!("locales", fallback = "en"); #[derive(Parser, Debug)] -#[clap(version = "0.0.1", author = "Fankai liu ")] +#[clap(version = "0.1.19", author = "Fankai liu ")] struct Opts { #[clap(subcommand)] subcmd: SubCommand, @@ -19,13 +19,15 @@ enum SubCommand { #[derive(Parser, Debug, Clone)] pub struct Project { pub project_name: String, + #[clap(short, long)] + lang: Option, } fn main() -> Result<()> { - set_locale(); utils::print_logo(); let opts: Opts = Opts::parse(); match opts.subcmd { SubCommand::New(project) => { + set_locale(&project.lang); match utils::create_project(project) { Ok(_) => (), Err(e) => utils::error(e.to_string()), diff --git a/src/template/src/routers/user.hbs b/src/template/src/routers/user.hbs index 4144290..5a54a7c 100644 --- a/src/template/src/routers/user.hbs +++ b/src/template/src/routers/user.hbs @@ -41,10 +41,10 @@ pub async fn post_login(req: JsonBody, res: &mut Response) { match result { Ok(data) => { let jwt_token = data.token.clone(); - let cookie = Cookie::build("jwt_token", jwt_token) + let cookie = Cookie::build(("jwt_token", jwt_token)) .path("/") .http_only(true) - .finish(); + .build(); res.add_cookie(cookie); } Err(e) => ErrRes::with_err(&e.to_string()).into_response(res), @@ -134,10 +134,10 @@ pub async fn post_login(req: JsonBody, res: &mut Response) { match result { Ok(data) => { let jwt_token = data.token.clone(); - let cookie = Cookie::build("jwt_token", jwt_token) + let cookie = Cookie::build(("jwt_token", jwt_token)) .path("/") .http_only(true) - .finish(); + .build(); res.add_cookie(cookie); } Err(e) => ErrRes::with_err(&e.to_string()).into_response(res), diff --git a/src/template/src/services/user.hbs b/src/template/src/services/user.hbs index 4860e36..b1a729f 100644 --- a/src/template/src/services/user.hbs +++ b/src/template/src/services/user.hbs @@ -399,15 +399,19 @@ pub async fn login(req: UserLoginRequest) -> AppResult { pub async fn update_user(req: UserUpdateRequest) -> AppResult { let db = DB.get().ok_or(anyhow::anyhow!("数据库连接失败"))?; - let user = Users::select_by_column(db,"id",&req.id).await?; - if user.len()==0 { + let users = Users::select_by_column(db,"id",&req.id).await?; + if users.len()==0 { return Err(anyhow::anyhow!("用户不存在").into()); } - Users::update_by_column(db,&user[0],"id").await?; - + let user = Users { + id: users[0].clone().id, + username: users[0].clone().username, + password: rand_utils::hash_password(req.password).await?, + }; + Users::update_by_column(db,&user,"id").await?; Ok(UserResponse { - id: user[0].id.clone(), - username: user[0].username.clone(), + id: users[0].id.clone(), + username: users[0].username.clone(), }) } diff --git a/src/utils/create_project.rs b/src/utils/create_project.rs index af1a340..e57155f 100644 --- a/src/utils/create_project.rs +++ b/src/utils/create_project.rs @@ -33,42 +33,58 @@ pub fn create_project(project: Project) -> Result<()> { let config = get_user_selected()?; match config { Some(config) => { - write_project_file(project_path, config.clone(), project.clone())?; + write_project_file(project_path, config, project.clone())?; init_git(project_path)?; - success(t!("create_success", project_name = project_name).replace(r"\n", "\n")); - if config.db_conn_type == DbConnectionType::Sqlx - || config.db_conn_type == DbConnectionType::SeaOrm - || config.db_conn_type == DbConnectionType::Diesel - { - if config.db_conn_type == DbConnectionType::Sqlx { - success( - t!("create_success_sqlx", project_name = project_name).replace(r"\n", "\n"), - ); - } - if config.db_conn_type == DbConnectionType::SeaOrm { - success( - t!("create_success_sea_orm", project_name = project_name) - .replace(r"\n", "\n"), - ); - } - if config.db_type == DbType::Sqlite { + after_print_info(project_name, config); + } + None => anyhow::bail!("cli quit!"), + } + Ok(()) +} + +fn after_print_info(project_name: &String, config: UserSelected) { + success(t!("create_success", project_name = project_name).replace(r"\n", "\n")); + match config.db_conn_type { + DbConnectionType::Sqlx => { + success(t!("create_success_sqlx").replace(r"\n", "\n")); + match config.db_type { + DbType::Sqlite => { success(t!("create_success_sqlx_sqlite").replace(r"\n", "\n")); - } else { + } + _ => { success(t!("create_success_mysql_or_pgsql").replace(r"\n", "\n")); } } - match (config.db_conn_type, config.db_type) { - (DbConnectionType::Rbatis, DbType::Mysql | DbType::Postgres | DbType::Mssql) => { - success(t!("create_success_rbatis")); + } + DbConnectionType::SeaOrm => { + success(t!("create_success_sea_orm").replace(r"\n", "\n")); + match config.db_type { + DbType::Sqlite => { + success(t!("create_success_sqlx_sqlite").replace(r"\n", "\n")); + } + _ => { + success(t!("create_success_mysql_or_pgsql").replace(r"\n", "\n")); } - (_, _) => {} } } - None => anyhow::bail!("cli quit!"), + DbConnectionType::Diesel => match config.db_type { + DbType::Sqlite => { + success(t!("create_success_sqlx_diesel").replace(r"\n", "\n")); + } + _ => { + success(t!("create_success_mysql_or_pgsql").replace(r"\n", "\n")); + } + }, + DbConnectionType::Rbatis => match config.db_type { + DbType::Mysql | DbType::Postgres | DbType::Mssql => { + success(t!("create_success_rbatis").replace(r"\n", "\n")); + } + _ => {} + }, + _ => {} } - Ok(()) } fn write_project_file( @@ -96,7 +112,7 @@ fn write_project_file( "jsonwebtoken": "8.3.0", "once_cell": "1.18.0", "salvo": { - "version": "0.57", + "version": "0.58", "features": ["anyhow", "logging", "cors", "oapi", "jwt-auth", "rustls", "catch-panic","cookie"] }, "serde": "1.0.188",