mirror of
https://github.com/meilisearch/MeiliSearch
synced 2025-07-04 12:27:13 +02:00
Merge #2851
2851: Upgrade clap to 4.0 r=loiclec a=choznerol # Pull Request ## Related issue Fixes #2846 This PR is draft based on #2847 to avoid conflict. I will rebase and mark as 'Ready for review' after #2847 is merged. ## What does this PR do? 1. Upgrade clap to the latest version or 4.0 (4.0.9 as of today) by following the [migrating instruction](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#migrating) from [4.0 changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#migrating) 2. Fix an `ArgGroup` typo that can only be caught after upgrading to 4.0 in 20a715e29ed17c5a76229c98fb31504ada873597 ## Notable changes ### The `--help` message The format, ordering and indentation of `--help` message was changed in 4.0. I recorded the output of `cargo run -- --help` before and after upgrade to 4.0 for reference. <details> <summary>diff</summary> Output of `diff --ignore-all-space --text --unified --new-file help-message-before.txt help-message-after.txt`: ```diff --- help-message-before.txt 2022-10-14 16:45:36.000000000 +0800 +++ help-message-after.txt 2022-10-14 16:36:53.000000000 +0800 `@@` -1,12 +1,8 `@@` -meilisearch-http 0.29.1 +Usage: meilisearch [OPTIONS] -USAGE: - meilisearch [OPTIONS] - -OPTIONS: +Options: --config-file-path <CONFIG_FILE_PATH> - Set the path to a configuration file that should be used to setup the engine. Format - must be TOML + Set the path to a configuration file that should be used to setup the engine. Format must be TOML --db-path <DB_PATH> Designates the location where database files will be created and retrieved `@@` -26,15 +22,14 `@@` [default: dumps/] --env <ENV> - Configures the instance's environment. Value must be either `production` or - `development` + Configures the instance's environment. Value must be either `production` or `development` [env: MEILI_ENV=] [default: development] [possible values: development, production] -h, --help - Print help information + Print help information (use `-h` for a summary) --http-addr <HTTP_ADDR> Sets the HTTP address and port Meilisearch will use `@@` -43,63 +38,53 `@@` [default: 127.0.0.1:7700] --http-payload-size-limit <HTTP_PAYLOAD_SIZE_LIMIT> - Sets the maximum size of accepted payloads. Value must be given in bytes or explicitly - stating a base unit (for instance: 107374182400, '107.7Gb', or '107374 Mb') + Sets the maximum size of accepted payloads. Value must be given in bytes or explicitly stating a base unit (for instance: 107374182400, '107.7Gb', or '107374 Mb') [env: MEILI_HTTP_PAYLOAD_SIZE_LIMIT=] [default: 100000000] --ignore-dump-if-db-exists - Prevents a Meilisearch instance with an existing database from throwing an error when - using `--import-dump`. Instead, the dump will be ignored and Meilisearch will launch - using the existing database. + Prevents a Meilisearch instance with an existing database from throwing an error when using `--import-dump`. Instead, the dump will be ignored and Meilisearch will launch using the existing database. This option will trigger an error if `--import-dump` is not defined. [env: MEILI_IGNORE_DUMP_IF_DB_EXISTS=] --ignore-missing-dump - Prevents Meilisearch from throwing an error when `--import-dump` does not point to a - valid dump file. Instead, Meilisearch will start normally without importing any dump. + Prevents Meilisearch from throwing an error when `--import-dump` does not point to a valid dump file. Instead, Meilisearch will start normally without importing any dump. This option will trigger an error if `--import-dump` is not defined. [env: MEILI_IGNORE_MISSING_DUMP=] --ignore-missing-snapshot - Prevents a Meilisearch instance from throwing an error when `--import-snapshot` does not - point to a valid snapshot file. + Prevents a Meilisearch instance from throwing an error when `--import-snapshot` does not point to a valid snapshot file. This command will throw an error if `--import-snapshot` is not defined. [env: MEILI_IGNORE_MISSING_SNAPSHOT=] --ignore-snapshot-if-db-exists - Prevents a Meilisearch instance with an existing database from throwing an error when - using `--import-snapshot`. Instead, the snapshot will be ignored and Meilisearch will - launch using the existing database. + Prevents a Meilisearch instance with an existing database from throwing an error when using `--import-snapshot`. Instead, the snapshot will be ignored and Meilisearch will launch using the existing database. This command will throw an error if `--import-snapshot` is not defined. [env: MEILI_IGNORE_SNAPSHOT_IF_DB_EXISTS=] --import-dump <IMPORT_DUMP> - Imports the dump file located at the specified path. Path must point to a `.dump` file. - If a database already exists, Meilisearch will throw an error and abort launch + Imports the dump file located at the specified path. Path must point to a `.dump` file. If a database already exists, Meilisearch will throw an error and abort launch [env: MEILI_IMPORT_DUMP=] --import-snapshot <IMPORT_SNAPSHOT> - Launches Meilisearch after importing a previously-generated snapshot at the given - filepath + Launches Meilisearch after importing a previously-generated snapshot at the given filepath [env: MEILI_IMPORT_SNAPSHOT=] --log-level <LOG_LEVEL> Defines how much detail should be present in Meilisearch's logs. - Meilisearch currently supports five log levels, listed in order of increasing verbosity: - ERROR, WARN, INFO, DEBUG, TRACE. + Meilisearch currently supports five log levels, listed in order of increasing verbosity: ERROR, WARN, INFO, DEBUG, TRACE. [env: MEILI_LOG_LEVEL=] [default: INFO] `@@` -110,31 +95,25 `@@` [env: MEILI_MASTER_KEY=] --max-index-size <MAX_INDEX_SIZE> - Sets the maximum size of the index. Value must be given in bytes or explicitly stating a - base unit (for instance: 107374182400, '107.7Gb', or '107374 Mb') + Sets the maximum size of the index. Value must be given in bytes or explicitly stating a base unit (for instance: 107374182400, '107.7Gb', or '107374 Mb') [env: MEILI_MAX_INDEX_SIZE=] [default: 107374182400] --max-indexing-memory <MAX_INDEXING_MEMORY> - Sets the maximum amount of RAM Meilisearch can use when indexing. By default, - Meilisearch uses no more than two thirds of available memory + Sets the maximum amount of RAM Meilisearch can use when indexing. By default, Meilisearch uses no more than two thirds of available memory [env: MEILI_MAX_INDEXING_MEMORY=] [default: "21.33 TiB"] --max-indexing-threads <MAX_INDEXING_THREADS> - Sets the maximum number of threads Meilisearch can use during indexation. By default, - the indexer avoids using more than half of a machine's total processing units. This - ensures Meilisearch is always ready to perform searches, even while you are updating an - index + Sets the maximum number of threads Meilisearch can use during indexation. By default, the indexer avoids using more than half of a machine's total processing units. This ensures Meilisearch is always ready to perform searches, even while you are updating an index [env: MEILI_MAX_INDEXING_THREADS=] [default: 5] --max-task-db-size <MAX_TASK_DB_SIZE> - Sets the maximum size of the task database. Value must be given in bytes or explicitly - stating a base unit (for instance: 107374182400, '107.7Gb', or '107374 Mb') + Sets the maximum size of the task database. Value must be given in bytes or explicitly stating a base unit (for instance: 107374182400, '107.7Gb', or '107374 Mb') [env: MEILI_MAX_TASK_DB_SIZE=] [default: 107374182400] ``` - ~[help-message-before.txt](https://github.com/meilisearch/meilisearch/files/9715683/help-message-before.txt)~ [help-message-before.txt](https://github.com/meilisearch/meilisearch/files/9784156/help-message-before-2.txt) - ~[help-message-after.txt](https://github.com/meilisearch/meilisearch/files/9715682/help-message-after.txt)~ [help-message-after.txt](https://github.com/meilisearch/meilisearch/files/9784091/help-message-after.txt) </details> ## PR checklist Please check if your PR fulfills the following requirements: - [x] Does this PR fix an existing issue, or have you listed the changes applied in the PR description (and why they are needed)? - [x] Have you read the contributing guidelines? - [x] Have you made sure that the title is accurate and descriptive of the changes? Thank you so much for contributing to Meilisearch! Co-authored-by: Lawrence Chou <choznerol@protonmail.com>
This commit is contained in:
commit
5d895dd7da
4 changed files with 58 additions and 21 deletions
|
@ -63,7 +63,7 @@ const DEFAULT_DUMPS_DIR: &str = "dumps/";
|
|||
const DEFAULT_LOG_LEVEL: &str = "INFO";
|
||||
|
||||
#[derive(Debug, Clone, Parser, Serialize, Deserialize)]
|
||||
#[clap(version)]
|
||||
#[clap(version, next_display_order = None)]
|
||||
#[serde(rename_all = "snake_case", deny_unknown_fields)]
|
||||
pub struct Opt {
|
||||
/// Designates the location where database files will be created and retrieved.
|
||||
|
@ -82,7 +82,7 @@ pub struct Opt {
|
|||
pub master_key: Option<String>,
|
||||
|
||||
/// Configures the instance's environment. Value must be either `production` or `development`.
|
||||
#[clap(long, env = MEILI_ENV, default_value_t = default_env(), possible_values = &POSSIBLE_ENV)]
|
||||
#[clap(long, env = MEILI_ENV, default_value_t = default_env(), value_parser = POSSIBLE_ENV)]
|
||||
#[serde(default = "default_env")]
|
||||
pub env: String,
|
||||
|
||||
|
@ -115,24 +115,24 @@ pub struct Opt {
|
|||
|
||||
/// Sets the server's SSL certificates.
|
||||
#[serde(skip_serializing)]
|
||||
#[clap(long, env = MEILI_SSL_CERT_PATH, parse(from_os_str))]
|
||||
#[clap(long, env = MEILI_SSL_CERT_PATH, value_parser)]
|
||||
pub ssl_cert_path: Option<PathBuf>,
|
||||
|
||||
/// Sets the server's SSL key files.
|
||||
#[serde(skip_serializing)]
|
||||
#[clap(long, env = MEILI_SSL_KEY_PATH, parse(from_os_str))]
|
||||
#[clap(long, env = MEILI_SSL_KEY_PATH, value_parser)]
|
||||
pub ssl_key_path: Option<PathBuf>,
|
||||
|
||||
/// Enables client authentication in the specified path.
|
||||
#[serde(skip_serializing)]
|
||||
#[clap(long, env = MEILI_SSL_AUTH_PATH, parse(from_os_str))]
|
||||
#[clap(long, env = MEILI_SSL_AUTH_PATH, value_parser)]
|
||||
pub ssl_auth_path: Option<PathBuf>,
|
||||
|
||||
/// Sets the server's OCSP file. *Optional*
|
||||
///
|
||||
/// Reads DER-encoded OCSP response from OCSPFILE and staple to certificate.
|
||||
#[serde(skip_serializing)]
|
||||
#[clap(long, env = MEILI_SSL_OCSP_PATH, parse(from_os_str))]
|
||||
#[clap(long, env = MEILI_SSL_OCSP_PATH, value_parser)]
|
||||
pub ssl_ocsp_path: Option<PathBuf>,
|
||||
|
||||
/// Makes SSL authentication mandatory.
|
||||
|
@ -161,7 +161,7 @@ pub struct Opt {
|
|||
#[clap(
|
||||
long,
|
||||
env = MEILI_IGNORE_MISSING_SNAPSHOT,
|
||||
requires = "import-snapshot"
|
||||
requires = "import_snapshot"
|
||||
)]
|
||||
#[serde(default)]
|
||||
pub ignore_missing_snapshot: bool,
|
||||
|
@ -174,7 +174,7 @@ pub struct Opt {
|
|||
#[clap(
|
||||
long,
|
||||
env = MEILI_IGNORE_SNAPSHOT_IF_DB_EXISTS,
|
||||
requires = "import-snapshot"
|
||||
requires = "import_snapshot"
|
||||
)]
|
||||
#[serde(default)]
|
||||
pub ignore_snapshot_if_db_exists: bool,
|
||||
|
@ -196,14 +196,14 @@ pub struct Opt {
|
|||
|
||||
/// Imports the dump file located at the specified path. Path must point to a `.dump` file.
|
||||
/// If a database already exists, Meilisearch will throw an error and abort launch.
|
||||
#[clap(long, env = MEILI_IMPORT_DUMP, conflicts_with = "import-snapshot")]
|
||||
#[clap(long, env = MEILI_IMPORT_DUMP, conflicts_with = "import_snapshot")]
|
||||
pub import_dump: Option<PathBuf>,
|
||||
|
||||
/// Prevents Meilisearch from throwing an error when `--import-dump` does not point to
|
||||
/// a valid dump file. Instead, Meilisearch will start normally without importing any dump.
|
||||
///
|
||||
/// This option will trigger an error if `--import-dump` is not defined.
|
||||
#[clap(long, env = MEILI_IGNORE_MISSING_DUMP, requires = "import-dump")]
|
||||
#[clap(long, env = MEILI_IGNORE_MISSING_DUMP, requires = "import_dump")]
|
||||
#[serde(default)]
|
||||
pub ignore_missing_dump: bool,
|
||||
|
||||
|
@ -212,7 +212,7 @@ pub struct Opt {
|
|||
/// launch using the existing database.
|
||||
///
|
||||
/// This option will trigger an error if `--import-dump` is not defined.
|
||||
#[clap(long, env = MEILI_IGNORE_DUMP_IF_DB_EXISTS, requires = "import-dump")]
|
||||
#[clap(long, env = MEILI_IGNORE_DUMP_IF_DB_EXISTS, requires = "import_dump")]
|
||||
#[serde(default)]
|
||||
pub ignore_dump_if_db_exists: bool,
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue