mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-11-23 05:14:27 +01: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
53
Cargo.lock
generated
53
Cargo.lock
generated
@ -711,8 +711,8 @@ checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"atty",
|
"atty",
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"clap_derive",
|
"clap_derive 3.2.18",
|
||||||
"clap_lex",
|
"clap_lex 0.2.4",
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"strsim",
|
"strsim",
|
||||||
@ -720,6 +720,21 @@ dependencies = [
|
|||||||
"textwrap",
|
"textwrap",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap"
|
||||||
|
version = "4.0.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "30607dd93c420c6f1f80b544be522a0238a7db35e6a12968d28910983fee0df0"
|
||||||
|
dependencies = [
|
||||||
|
"atty",
|
||||||
|
"bitflags",
|
||||||
|
"clap_derive 4.0.9",
|
||||||
|
"clap_lex 0.3.0",
|
||||||
|
"once_cell",
|
||||||
|
"strsim",
|
||||||
|
"termcolor",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_derive"
|
name = "clap_derive"
|
||||||
version = "3.2.18"
|
version = "3.2.18"
|
||||||
@ -733,6 +748,19 @@ dependencies = [
|
|||||||
"syn 1.0.101",
|
"syn 1.0.101",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_derive"
|
||||||
|
version = "4.0.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a4a307492e1a34939f79d3b6b9650bd2b971513cd775436bf2b78defeb5af00b"
|
||||||
|
dependencies = [
|
||||||
|
"heck",
|
||||||
|
"proc-macro-error",
|
||||||
|
"proc-macro2 1.0.46",
|
||||||
|
"quote 1.0.21",
|
||||||
|
"syn 1.0.101",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_lex"
|
name = "clap_lex"
|
||||||
version = "0.2.4"
|
version = "0.2.4"
|
||||||
@ -742,6 +770,15 @@ dependencies = [
|
|||||||
"os_str_bytes",
|
"os_str_bytes",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_lex"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"
|
||||||
|
dependencies = [
|
||||||
|
"os_str_bytes",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "concat-arrays"
|
name = "concat-arrays"
|
||||||
version = "0.1.2"
|
version = "0.1.2"
|
||||||
@ -1793,7 +1830,7 @@ dependencies = [
|
|||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"clap",
|
"clap 3.2.22",
|
||||||
"csv",
|
"csv",
|
||||||
"encoding",
|
"encoding",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
@ -1868,7 +1905,7 @@ dependencies = [
|
|||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"clap",
|
"clap 3.2.22",
|
||||||
"encoding",
|
"encoding",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"glob",
|
"glob",
|
||||||
@ -1888,7 +1925,7 @@ dependencies = [
|
|||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"clap",
|
"clap 3.2.22",
|
||||||
"csv",
|
"csv",
|
||||||
"encoding",
|
"encoding",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
@ -1908,7 +1945,7 @@ dependencies = [
|
|||||||
"anyhow",
|
"anyhow",
|
||||||
"bincode",
|
"bincode",
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"clap",
|
"clap 3.2.22",
|
||||||
"csv",
|
"csv",
|
||||||
"encoding",
|
"encoding",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
@ -2051,7 +2088,7 @@ dependencies = [
|
|||||||
"byte-unit",
|
"byte-unit",
|
||||||
"bytes",
|
"bytes",
|
||||||
"cargo_toml",
|
"cargo_toml",
|
||||||
"clap",
|
"clap 4.0.9",
|
||||||
"crossbeam-channel",
|
"crossbeam-channel",
|
||||||
"either",
|
"either",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
@ -2123,7 +2160,7 @@ dependencies = [
|
|||||||
"atomic_refcell",
|
"atomic_refcell",
|
||||||
"byte-unit",
|
"byte-unit",
|
||||||
"bytes",
|
"bytes",
|
||||||
"clap",
|
"clap 4.0.9",
|
||||||
"crossbeam-channel",
|
"crossbeam-channel",
|
||||||
"csv",
|
"csv",
|
||||||
"derivative",
|
"derivative",
|
||||||
|
@ -32,7 +32,7 @@ async-trait = "0.1.57"
|
|||||||
bstr = "1.0.1"
|
bstr = "1.0.1"
|
||||||
byte-unit = { version = "4.0.14", default-features = false, features = ["std", "serde"] }
|
byte-unit = { version = "4.0.14", default-features = false, features = ["std", "serde"] }
|
||||||
bytes = "1.2.1"
|
bytes = "1.2.1"
|
||||||
clap = { version = "3.1.6", features = ["derive", "env"] }
|
clap = { version = "4.0.9", features = ["derive", "env"] }
|
||||||
crossbeam-channel = "0.5.6"
|
crossbeam-channel = "0.5.6"
|
||||||
either = "1.8.0"
|
either = "1.8.0"
|
||||||
env_logger = "0.9.1"
|
env_logger = "0.9.1"
|
||||||
|
@ -63,7 +63,7 @@ const DEFAULT_DUMPS_DIR: &str = "dumps/";
|
|||||||
const DEFAULT_LOG_LEVEL: &str = "INFO";
|
const DEFAULT_LOG_LEVEL: &str = "INFO";
|
||||||
|
|
||||||
#[derive(Debug, Clone, Parser, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Parser, Serialize, Deserialize)]
|
||||||
#[clap(version)]
|
#[clap(version, next_display_order = None)]
|
||||||
#[serde(rename_all = "snake_case", deny_unknown_fields)]
|
#[serde(rename_all = "snake_case", deny_unknown_fields)]
|
||||||
pub struct Opt {
|
pub struct Opt {
|
||||||
/// Designates the location where database files will be created and retrieved.
|
/// Designates the location where database files will be created and retrieved.
|
||||||
@ -82,7 +82,7 @@ pub struct Opt {
|
|||||||
pub master_key: Option<String>,
|
pub master_key: Option<String>,
|
||||||
|
|
||||||
/// Configures the instance's environment. Value must be either `production` or `development`.
|
/// 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")]
|
#[serde(default = "default_env")]
|
||||||
pub env: String,
|
pub env: String,
|
||||||
|
|
||||||
@ -115,24 +115,24 @@ pub struct Opt {
|
|||||||
|
|
||||||
/// Sets the server's SSL certificates.
|
/// Sets the server's SSL certificates.
|
||||||
#[serde(skip_serializing)]
|
#[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>,
|
pub ssl_cert_path: Option<PathBuf>,
|
||||||
|
|
||||||
/// Sets the server's SSL key files.
|
/// Sets the server's SSL key files.
|
||||||
#[serde(skip_serializing)]
|
#[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>,
|
pub ssl_key_path: Option<PathBuf>,
|
||||||
|
|
||||||
/// Enables client authentication in the specified path.
|
/// Enables client authentication in the specified path.
|
||||||
#[serde(skip_serializing)]
|
#[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>,
|
pub ssl_auth_path: Option<PathBuf>,
|
||||||
|
|
||||||
/// Sets the server's OCSP file. *Optional*
|
/// Sets the server's OCSP file. *Optional*
|
||||||
///
|
///
|
||||||
/// Reads DER-encoded OCSP response from OCSPFILE and staple to certificate.
|
/// Reads DER-encoded OCSP response from OCSPFILE and staple to certificate.
|
||||||
#[serde(skip_serializing)]
|
#[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>,
|
pub ssl_ocsp_path: Option<PathBuf>,
|
||||||
|
|
||||||
/// Makes SSL authentication mandatory.
|
/// Makes SSL authentication mandatory.
|
||||||
@ -161,7 +161,7 @@ pub struct Opt {
|
|||||||
#[clap(
|
#[clap(
|
||||||
long,
|
long,
|
||||||
env = MEILI_IGNORE_MISSING_SNAPSHOT,
|
env = MEILI_IGNORE_MISSING_SNAPSHOT,
|
||||||
requires = "import-snapshot"
|
requires = "import_snapshot"
|
||||||
)]
|
)]
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub ignore_missing_snapshot: bool,
|
pub ignore_missing_snapshot: bool,
|
||||||
@ -174,7 +174,7 @@ pub struct Opt {
|
|||||||
#[clap(
|
#[clap(
|
||||||
long,
|
long,
|
||||||
env = MEILI_IGNORE_SNAPSHOT_IF_DB_EXISTS,
|
env = MEILI_IGNORE_SNAPSHOT_IF_DB_EXISTS,
|
||||||
requires = "import-snapshot"
|
requires = "import_snapshot"
|
||||||
)]
|
)]
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub ignore_snapshot_if_db_exists: bool,
|
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.
|
/// 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.
|
/// 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>,
|
pub import_dump: Option<PathBuf>,
|
||||||
|
|
||||||
/// Prevents Meilisearch from throwing an error when `--import-dump` does not point to
|
/// 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.
|
/// 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.
|
/// 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)]
|
#[serde(default)]
|
||||||
pub ignore_missing_dump: bool,
|
pub ignore_missing_dump: bool,
|
||||||
|
|
||||||
@ -212,7 +212,7 @@ pub struct Opt {
|
|||||||
/// launch using the existing database.
|
/// launch using the existing database.
|
||||||
///
|
///
|
||||||
/// This option will trigger an error if `--import-dump` is not defined.
|
/// 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)]
|
#[serde(default)]
|
||||||
pub ignore_dump_if_db_exists: bool,
|
pub ignore_dump_if_db_exists: bool,
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ async-trait = "0.1.57"
|
|||||||
atomic_refcell = "0.1.8"
|
atomic_refcell = "0.1.8"
|
||||||
byte-unit = { version = "4.0.14", default-features = false, features = ["std", "serde"] }
|
byte-unit = { version = "4.0.14", default-features = false, features = ["std", "serde"] }
|
||||||
bytes = "1.2.1"
|
bytes = "1.2.1"
|
||||||
clap = { version = "3.1.6", features = ["derive", "env"] }
|
clap = { version = "4.0.9", features = ["derive", "env"] }
|
||||||
crossbeam-channel = "0.5.6"
|
crossbeam-channel = "0.5.6"
|
||||||
csv = "1.1.6"
|
csv = "1.1.6"
|
||||||
derivative = "2.2.0"
|
derivative = "2.2.0"
|
||||||
|
Loading…
Reference in New Issue
Block a user