From daf0132dfa0b775e37a9b3cbdd591263dcbe8394 Mon Sep 17 00:00:00 2001 From: Anton Aparin Date: Sun, 25 Aug 2024 23:12:34 +0200 Subject: [PATCH 1/7] Update README --- README.md | 164 +++++++++++++++++++++++++++--------------------- src/tool/cli.rs | 4 +- 2 files changed, 93 insertions(+), 75 deletions(-) diff --git a/README.md b/README.md index d0e6d12..ba20eb9 100644 --- a/README.md +++ b/README.md @@ -1,119 +1,137 @@ -## cargo-leet - A leetcode local development assistant +# `cargo-leet` - A leetcode local development assistant A program that given the link or slug to a leetcode problem, creates a local file where you can develop and test your solution before post it back to leetcode. -## Help Messages +## Usage -### `cargo leet -h` +The `cargo leet` program helps you streamline your workflow with LeetCode problems by generating local files for solution development and testing before submitting them back to LeetCode. Below is a summary of how to use the various commands and options available in `cargo leet`. +### General Usage + +```sh +cargo leet [OPTIONS] ``` -cargo-leet -Usage: cargo +### Commands -Commands: - leet This is necessary because it's a cargo subcommand so the first argument needs to be the command name - help Print this message or the help of the given subcommand(s) +- **new** + Creates a new pre-configured project based on a template, which can be used with `cargo-leet`. -Options: - -h, --help Print help (see more with '--help') -``` + ```sh + cargo leet new [OPTIONS] [NAME] + ``` -### `cargo leet generate --help` +- **generate, -g, gen** + Generates a module for the specified problem, allowing you to start working on the solution locally. You can provide a LeetCode problem slug or URL, or leave it blank to use the daily challenge. -``` -Usage: cargo leet {generate|-g} [OPTIONS] [PROBLEM] + ```sh + cargo leet generate [OPTIONS] [PROBLEM] + ``` -Arguments: - [PROBLEM] - Question slug or url (If none specified then daily challenge is used) +- **active** + Prints the currently active problem or sets the active problem to the provided problem slug. -Options: - -n, --number_in_name - If set the module name generated includes the number for the problem + ```sh + cargo leet active [OPTIONS] [PROBLEM_SLUG] + ``` - -p, --path - Specify the path to the project root (If not provided uses current working directory) +- **test** + Runs tests on the currently active problem to verify your solution. - -l, --log-level - Set logging level to use + ```sh + cargo leet test [OPTIONS] + ``` - [default: warn] +### Options - Possible values: - - off: Nothing emitted in this mode - - error - - warn - - info - - debug - - trace +- **-p, --path \** + Specify the path to the project root. If not provided, the current working directory is used. +- **-l, --log-level \** + Set the logging level. Default is `warn`. Available levels: + - `off`: No logging + - `error` + - `warn` + - `info` + - `debug` + - `trace` +- **-h, --help** + Displays help information. +- **-V, --version** + Prints the version of `cargo leet`. - -h, --help - Print help (see a summary with '-h') -``` +### Examples -## Using Library Support +- **Create a new project**: -Using the library to "mimic" leetcode environment. Add library as a dependency as below. Then add use statements as -necessary. The use statements are automatically added if tool is used to generate the file for the problem. + ```sh + cargo leet new my-leetcode-project + ``` -```toml -cargo-leet = "0.2.0" -``` +- **Change into the directory** -## Tool Installation + ```sh + cd my-leetcode-project + ``` -NB: If cargo-leet is already installed, and you install it again, it will just replace it even if it was previously -installed from a different source. For example if you install it from a clone then run the command to install from git -it will replace the existing version that is installed (they will not both be installed). +- **Generate a module for a specific problem**: -### From GitHub + ```sh + cargo leet generate two-sum + ``` -```sh -cargo install --git https://github.com/rust-practice/cargo-leet.git --branch main --features=tool -``` +- **Set the active problem (done automatically by `cargo leet gen`)**: -### From Clone + ```sh + cargo leet active two-sum + ``` -After cloning the repo run +- **Run tests on the active problem**: -```sh -cargo install --path . --features=tool -``` + ```sh + cargo leet test + ``` -or using alias from `.cargo/config.toml` +## Installation -```sh -cargo i -``` +Note: If `cargo-leet` is already installed and you install it again, the existing installation will be replaced, even if it was originally installed from a different source. For instance, if you first install it from a local clone and then reinstall it from a Git repository, the new installation will overwrite the previous one (you won't have both versions installed). -## Running Directly from source without install (When developing the tool) +### Build from Source -These commands allow you to run the tool directly from the source code without installation. -By default, they will run the tool on the current working directory. -This means that it will run in the current project folder for cargo-leet. -This may be fine for testing but if you want to be able to actually run the code, it might be more appropriate to pass -the path parameter and specify the path to the repository you want to run against. -Eg. `cargo g --path $TEST_REPO` -For more options see [generate help](#cargo-leet-generate---help) +You can build `cargo-leet` from source using two different channels: -```sh -cargo run --features=tool -- leet gen -``` +- **Stable (main)** + + ```sh + cargo install --git https://github.com/rust-practice/cargo-leet.git --branch main -F tool + ``` -or using alias from `.cargo/config.toml` + This installs the stable version of `cargo-leet` from the `main` branch. + +- **Development (develop)** + ```sh + cargo install --git https://github.com/rust-practice/cargo-leet.git --branch develop -F tool + ``` + This installs the latest development version from the `develop` branch, which may include new features or changes that are still being tested. + +### Install from crates.io + +You can also install `cargo-leet` directly from crates.io. However, please note that the crates.io release may not always reflect the latest updates. ```sh -cargo g +cargo install cargo-leet -F tool ``` -## Tool Uninstallation +## Using as a Library + +You can use `cargo-leet` as a library to mimic the LeetCode environment in your own projects. To do so, add it as a dependency in your `Cargo.toml` file using ```sh -cargo uninstall cargo-leet +cargo add cargo-leet ``` +For more information, see [the documentation](https://docs.rs/cargo-leet/). + ## License All code in this repository is dual-licensed under either: diff --git a/src/tool/cli.rs b/src/tool/cli.rs index 004107c..458426b 100644 --- a/src/tool/cli.rs +++ b/src/tool/cli.rs @@ -14,8 +14,8 @@ use log::{debug, info, LevelFilter}; #[command(name = "cargo")] #[command(bin_name = "cargo")] pub enum TopLevel { - /// This is necessary because it's a cargo subcommand so the first argument - /// needs to be the command name + // This is necessary because it's a cargo subcommand so the first argument needs to be the command name + /// A program that given the link or slug to a leetcode problem, creates a local file where you can develop and test your solution before post it back to leetcode. Leet(Cli), } From 4ae4e7b4abb6642836e9a2bee23ef207c92db2ed Mon Sep 17 00:00:00 2001 From: Anton Aparin Date: Sun, 25 Aug 2024 23:16:43 +0200 Subject: [PATCH 2/7] Add dev run section back --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index ba20eb9..7f1948b 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,30 @@ You can also install `cargo-leet` directly from crates.io. However, please note cargo install cargo-leet -F tool ``` +### Running Directly from Source without Installation (For Development) + +When developing the tool, you can run it directly from the source code without needing to install it. By default, these commands will execute the tool within the current working directory, meaning it will interact with the current project folder for `cargo-leet`. + +#### Running in the Current Directory + +Running the tool this way is useful for testing but may not be ideal if you need to target a specific project or repository. In such cases, you can specify the path to the desired repository using the `--path` option. + +For example, to run the tool against a specific test repository: + +```sh +cargo run -F tool -- leet gen --path $TEST_REPO +``` + +#### Using an Alias + +If you have an alias configured in `.cargo/config.toml`, you can simplify the command: + +```sh +cargo g +``` + +For additional options and usage details, refer to the [generate help](#cargo-leet-generate---help). + ## Using as a Library You can use `cargo-leet` as a library to mimic the LeetCode environment in your own projects. To do so, add it as a dependency in your `Cargo.toml` file using From e02dfdec212f1eea1ec81d225d65be4702776b78 Mon Sep 17 00:00:00 2001 From: Anton Aparin Date: Sun, 25 Aug 2024 23:33:06 +0200 Subject: [PATCH 3/7] Fix broken link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7f1948b..89c5b31 100644 --- a/README.md +++ b/README.md @@ -144,7 +144,7 @@ If you have an alias configured in `.cargo/config.toml`, you can simplify the co cargo g ``` -For additional options and usage details, refer to the [generate help](#cargo-leet-generate---help). +For additional options and usage details, refer to the generate help in [commands](#commands). ## Using as a Library From 2f22fb804e6a5f017bab58437b8e659d94d56580 Mon Sep 17 00:00:00 2001 From: Anton Aparin Date: Sun, 25 Aug 2024 23:35:15 +0200 Subject: [PATCH 4/7] Remove trailing whitespaces --- README.html | 156 ++++++++++++++++++++++++++++++++++++++ README.md | 14 ++-- README.pdf | Bin 0 -> 55102 bytes README.typ | 212 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 375 insertions(+), 7 deletions(-) create mode 100644 README.html create mode 100644 README.pdf create mode 100644 README.typ diff --git a/README.html b/README.html new file mode 100644 index 0000000..b3ed004 --- /dev/null +++ b/README.html @@ -0,0 +1,156 @@ +

cargo-leet +- A leetcode local development assistant

+

A program that given the link or slug to a leetcode problem, creates +a local file where you can develop and test your solution before post it +back to leetcode.

+

Usage

+

The cargo leet program helps you streamline your +workflow with LeetCode problems by generating local files for solution +development and testing before submitting them back to LeetCode. Below +is a summary of how to use the various commands and options available in +cargo leet.

+

General Usage

+
cargo leet [OPTIONS] <COMMAND>
+

Commands

+
    +
  • new
    +Creates a new pre-configured project based on a template, which can be +used with cargo-leet.

    +
    cargo leet new [OPTIONS] [NAME]
  • +
  • generate, -g, gen
    +Generates a module for the specified problem, allowing you to start +working on the solution locally. You can provide a LeetCode problem slug +or URL, or leave it blank to use the daily challenge.

    +
    cargo leet generate [OPTIONS] [PROBLEM]
  • +
  • active
    +Prints the currently active problem or sets the active problem to the +provided problem slug.

    +
    cargo leet active [OPTIONS] [PROBLEM_SLUG]
  • +
  • test
    +Runs tests on the currently active problem to verify your solution.

    +
    cargo leet test [OPTIONS]
  • +
+

Options

+
    +
  • -p, –path <FOLDER>
    +Specify the path to the project root. If not provided, the current +working directory is used.
  • +
  • -l, –log-level <LOG_LEVEL>
    +Set the logging level. Default is warn. Available levels: +
      +
    • off: No logging
    • +
    • error
    • +
    • warn
    • +
    • info
    • +
    • debug
    • +
    • trace
    • +
  • +
  • -h, –help
    +Displays help information.
  • +
  • -V, –version
    +Prints the version of cargo leet.
  • +
+

Examples

+
    +
  • Create a new project:

    +
    cargo leet new my-leetcode-project
  • +
  • Change into the directory

    +
    cd my-leetcode-project
  • +
  • Generate a module for a specific problem:

    +
    cargo leet generate two-sum
  • +
  • Set the active problem (done automatically by +cargo leet gen):

    +
    cargo leet active two-sum
  • +
  • Run tests on the active problem:

    +
    cargo leet test
  • +
+

Installation

+

Note: If cargo-leet is already installed and you install +it again, the existing installation will be replaced, even if it was +originally installed from a different source. For instance, if you first +install it from a local clone and then reinstall it from a Git +repository, the new installation will overwrite the previous one (you +won’t have both versions installed).

+

Build from Source

+

You can build cargo-leet from source using two different +channels:

+
    +
  • Stable (main)

    +
    cargo install --git https://github.com/rust-practice/cargo-leet.git --branch main -F tool
    +

    This installs the stable version of cargo-leet from the +main branch.

  • +
  • Development (develop)

    +
    cargo install --git https://github.com/rust-practice/cargo-leet.git --branch develop -F tool
    +

    This installs the latest development version from the +develop branch, which may include new features or changes +that are still being tested.

  • +
+

Install from crates.io

+

You can also install cargo-leet directly from crates.io. +However, please note that the crates.io release may not always reflect +the latest updates.

+
cargo install cargo-leet -F tool
+

Running +Directly from Source without Installation (For Development)

+

When developing the tool, you can run it directly from the source +code without needing to install it. By default, these commands will +execute the tool within the current working directory, meaning it will +interact with the current project folder for +cargo-leet.

+

Running in the Current +Directory

+

Running the tool this way is useful for testing but may not be ideal +if you need to target a specific project or repository. In such cases, +you can specify the path to the desired repository using the +--path option.

+

For example, to run the tool against a specific test repository:

+
cargo run -F tool -- leet gen --path $TEST_REPO
+

Using an Alias

+

If you have an alias configured in .cargo/config.toml, +you can simplify the command:

+
cargo g
+

For additional options and usage details, refer to the generate help.

+

Using as a Library

+

You can use cargo-leet as a library to mimic the +LeetCode environment in your own projects. To do so, add it as a +dependency in your Cargo.toml file using

+
cargo add cargo-leet
+

For more information, see the +documentation.

+

License

+

All code in this repository is dual-licensed under either:

+
    +
  • Apache License, Version 2.0 (LICENSE-APACHE or +http://apache.org/licenses/LICENSE-2.0)
  • +
  • MIT license (LICENSE-MIT or +http://opensource.org/licenses/MIT)
  • +
+

at your option. This means you can select the license you prefer! +This dual-licensing approach is the de-facto standard in the Rust +ecosystem and there are very good reasons to include both as noted in +this issue +on Bevy’s repo.

+

Contribution

+

Unless you explicitly state otherwise, any contribution intentionally +submitted for inclusion in the work by you, as defined in the Apache-2.0 +license, shall be dual licensed as above, without any additional terms +or conditions.

diff --git a/README.md b/README.md index 89c5b31..c566f2a 100644 --- a/README.md +++ b/README.md @@ -15,28 +15,28 @@ cargo leet [OPTIONS] ### Commands -- **new** +- **new** Creates a new pre-configured project based on a template, which can be used with `cargo-leet`. ```sh cargo leet new [OPTIONS] [NAME] ``` -- **generate, -g, gen** +- **generate, -g, gen** Generates a module for the specified problem, allowing you to start working on the solution locally. You can provide a LeetCode problem slug or URL, or leave it blank to use the daily challenge. ```sh cargo leet generate [OPTIONS] [PROBLEM] ``` -- **active** +- **active** Prints the currently active problem or sets the active problem to the provided problem slug. ```sh cargo leet active [OPTIONS] [PROBLEM_SLUG] ``` -- **test** +- **test** Runs tests on the currently active problem to verify your solution. ```sh @@ -45,7 +45,7 @@ cargo leet [OPTIONS] ### Options -- **-p, --path \** +- **-p, --path \** Specify the path to the project root. If not provided, the current working directory is used. - **-l, --log-level \** Set the logging level. Default is `warn`. Available levels: @@ -55,9 +55,9 @@ cargo leet [OPTIONS] - `info` - `debug` - `trace` -- **-h, --help** +- **-h, --help** Displays help information. -- **-V, --version** +- **-V, --version** Prints the version of `cargo leet`. ### Examples diff --git a/README.pdf b/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3d01067c8ddd6616a4506219140dc68fad626df3 GIT binary patch literal 55102 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 literal 0 HcmV?d00001 diff --git a/README.typ b/README.typ new file mode 100644 index 0000000..f3dcdbf --- /dev/null +++ b/README.typ @@ -0,0 +1,212 @@ += `cargo-leet` - A leetcode local development assistant + +A program that given the link or slug to a leetcode problem, creates a +local file where you can develop and test your solution before post it +back to leetcode. + +== Usage + +The `cargo leet` program helps you streamline your workflow with +LeetCode problems by generating local files for solution development and +testing before submitting them back to LeetCode. Below is a summary of +how to use the various commands and options available in `cargo leet`. + +=== General Usage + +```sh +cargo leet [OPTIONS] +``` + +=== Commands + +- #strong[new] \ + Creates a new pre-configured project based on a template, which can be + used with `cargo-leet`. + + ```sh + cargo leet new [OPTIONS] [NAME] + ``` + +- #strong[generate, -g, gen] \ + Generates a module for the specified problem, allowing you to start + working on the solution locally. You can provide a LeetCode problem + slug or URL, or leave it blank to use the daily challenge. + + ```sh + cargo leet generate [OPTIONS] [PROBLEM] + ``` + +- #strong[active] \ + Prints the currently active problem or sets the active problem to the + provided problem slug. + + ```sh + cargo leet active [OPTIONS] [PROBLEM_SLUG] + ``` + +- #strong[test] \ + Runs tests on the currently active problem to verify your solution. + + ```sh + cargo leet test [OPTIONS] + ``` + +=== Options + +- #strong[-p, –path \] \ + Specify the path to the project root. If not provided, the current + working directory is used. +- #strong[-l, –log-level \] \ + Set the logging level. Default is `warn`. Available levels: + - `off`: No logging + - `error` + - `warn` + - `info` + - `debug` + - `trace` +- #strong[-h, –help] \ + Displays help information. +- #strong[-V, –version] \ + Prints the version of `cargo leet`. + +=== Examples + +- #strong[Create a new project]: + + ```sh + cargo leet new my-leetcode-project + ``` + +- #strong[Change into the directory] + + ```sh + cd my-leetcode-project + ``` + +- #strong[Generate a module for a specific problem]: + + ```sh + cargo leet generate two-sum + ``` + +- #strong[Set the active problem \(done automatically by + `cargo leet gen`)]: + + ```sh + cargo leet active two-sum + ``` + +- #strong[Run tests on the active problem]: + + ```sh + cargo leet test + ``` + +== Installation + +Note: If `cargo-leet` is already installed and you install it again, the +existing installation will be replaced, even if it was originally +installed from a different source. For instance, if you first install it +from a local clone and then reinstall it from a Git repository, the new +installation will overwrite the previous one \(you won’t have both +versions installed). + +=== Build from Source + +You can build `cargo-leet` from source using two different channels: + +- #strong[Stable \(main)] + + ```sh + cargo install --git https://github.com/rust-practice/cargo-leet.git --branch main -F tool + ``` + + This installs the stable version of `cargo-leet` from the `main` + branch. + +- #strong[Development \(develop)] + + ```sh + cargo install --git https://github.com/rust-practice/cargo-leet.git --branch develop -F tool + ``` + + This installs the latest development version from the `develop` + branch, which may include new features or changes that are still being + tested. + +=== Install from crates.io + +You can also install `cargo-leet` directly from crates.io. However, +please note that the crates.io release may not always reflect the latest +updates. + +```sh +cargo install cargo-leet -F tool +``` + +=== Running Directly from Source without Installation \(For Development) + +When developing the tool, you can run it directly from the source code +without needing to install it. By default, these commands will execute +the tool within the current working directory, meaning it will interact +with the current project folder for `cargo-leet`. + +==== Running in the Current Directory + +Running the tool this way is useful for testing but may not be ideal if +you need to target a specific project or repository. In such cases, you +can specify the path to the desired repository using the `--path` +option. + +For example, to run the tool against a specific test repository: + +```sh +cargo run -F tool -- leet gen --path $TEST_REPO +``` + +==== Using an Alias + +If you have an alias configured in `.cargo/config.toml`, you can +simplify the command: + +```sh +cargo g +``` + +For additional options and usage details, refer to the generate help in +#link()[commands]. + +== Using as a Library + +You can use `cargo-leet` as a library to mimic the LeetCode environment +in your own projects. To do so, add it as a dependency in your +`Cargo.toml` file using + +```sh +cargo add cargo-leet +``` + +For more information, see +#link("https://docs.rs/cargo-leet/")[the documentation]. + +== License + +All code in this repository is dual-licensed under either: + +- Apache License, Version 2.0 \(#link("LICENSE-APACHE") or + http:\/\/apache.org/licenses/LICENSE-2.0) +- MIT license \(#link("LICENSE-MIT") or + http:\/\/opensource.org/licenses/MIT) + +at your option. This means you can select the license you prefer! This +dual-licensing approach is the de-facto standard in the Rust ecosystem +and there are very good reasons to include both as noted in this +#link("https://github.com/bevyengine/bevy/issues/2373")[issue] on +#link("https://bevyengine.org")[Bevy]’s repo. + +=== Contribution + +Unless you explicitly state otherwise, any contribution intentionally +submitted for inclusion in the work by you, as defined in the Apache-2.0 +license, shall be dual licensed as above, without any additional terms +or conditions. From 2832116a62a97fc6c8f6ce16770a5269184b6873 Mon Sep 17 00:00:00 2001 From: Anton Aparin Date: Sun, 25 Aug 2024 23:36:04 +0200 Subject: [PATCH 5/7] Remove last standing trailing whitespace --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c566f2a..7734e33 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ cargo leet [OPTIONS] - **-p, --path \** Specify the path to the project root. If not provided, the current working directory is used. -- **-l, --log-level \** +- **-l, --log-level \** Set the logging level. Default is `warn`. Available levels: - `off`: No logging - `error` From 8caca9395c856fc2bcd085b98672d45aef72a529 Mon Sep 17 00:00:00 2001 From: Anton Aparin Date: Mon, 26 Aug 2024 00:26:50 +0200 Subject: [PATCH 6/7] Remove other README versions --- README.html | 156 -------------------------------------- README.pdf | Bin 55102 -> 0 bytes README.typ | 212 ---------------------------------------------------- 3 files changed, 368 deletions(-) delete mode 100644 README.html delete mode 100644 README.pdf delete mode 100644 README.typ diff --git a/README.html b/README.html deleted file mode 100644 index b3ed004..0000000 --- a/README.html +++ /dev/null @@ -1,156 +0,0 @@ -

cargo-leet -- A leetcode local development assistant

-

A program that given the link or slug to a leetcode problem, creates -a local file where you can develop and test your solution before post it -back to leetcode.

-

Usage

-

The cargo leet program helps you streamline your -workflow with LeetCode problems by generating local files for solution -development and testing before submitting them back to LeetCode. Below -is a summary of how to use the various commands and options available in -cargo leet.

-

General Usage

-
cargo leet [OPTIONS] <COMMAND>
-

Commands

-
    -
  • new
    -Creates a new pre-configured project based on a template, which can be -used with cargo-leet.

    -
    cargo leet new [OPTIONS] [NAME]
  • -
  • generate, -g, gen
    -Generates a module for the specified problem, allowing you to start -working on the solution locally. You can provide a LeetCode problem slug -or URL, or leave it blank to use the daily challenge.

    -
    cargo leet generate [OPTIONS] [PROBLEM]
  • -
  • active
    -Prints the currently active problem or sets the active problem to the -provided problem slug.

    -
    cargo leet active [OPTIONS] [PROBLEM_SLUG]
  • -
  • test
    -Runs tests on the currently active problem to verify your solution.

    -
    cargo leet test [OPTIONS]
  • -
-

Options

-
    -
  • -p, –path <FOLDER>
    -Specify the path to the project root. If not provided, the current -working directory is used.
  • -
  • -l, –log-level <LOG_LEVEL>
    -Set the logging level. Default is warn. Available levels: -
      -
    • off: No logging
    • -
    • error
    • -
    • warn
    • -
    • info
    • -
    • debug
    • -
    • trace
    • -
  • -
  • -h, –help
    -Displays help information.
  • -
  • -V, –version
    -Prints the version of cargo leet.
  • -
-

Examples

-
    -
  • Create a new project:

    -
    cargo leet new my-leetcode-project
  • -
  • Change into the directory

    -
    cd my-leetcode-project
  • -
  • Generate a module for a specific problem:

    -
    cargo leet generate two-sum
  • -
  • Set the active problem (done automatically by -cargo leet gen):

    -
    cargo leet active two-sum
  • -
  • Run tests on the active problem:

    -
    cargo leet test
  • -
-

Installation

-

Note: If cargo-leet is already installed and you install -it again, the existing installation will be replaced, even if it was -originally installed from a different source. For instance, if you first -install it from a local clone and then reinstall it from a Git -repository, the new installation will overwrite the previous one (you -won’t have both versions installed).

-

Build from Source

-

You can build cargo-leet from source using two different -channels:

-
    -
  • Stable (main)

    -
    cargo install --git https://github.com/rust-practice/cargo-leet.git --branch main -F tool
    -

    This installs the stable version of cargo-leet from the -main branch.

  • -
  • Development (develop)

    -
    cargo install --git https://github.com/rust-practice/cargo-leet.git --branch develop -F tool
    -

    This installs the latest development version from the -develop branch, which may include new features or changes -that are still being tested.

  • -
-

Install from crates.io

-

You can also install cargo-leet directly from crates.io. -However, please note that the crates.io release may not always reflect -the latest updates.

-
cargo install cargo-leet -F tool
-

Running -Directly from Source without Installation (For Development)

-

When developing the tool, you can run it directly from the source -code without needing to install it. By default, these commands will -execute the tool within the current working directory, meaning it will -interact with the current project folder for -cargo-leet.

-

Running in the Current -Directory

-

Running the tool this way is useful for testing but may not be ideal -if you need to target a specific project or repository. In such cases, -you can specify the path to the desired repository using the ---path option.

-

For example, to run the tool against a specific test repository:

-
cargo run -F tool -- leet gen --path $TEST_REPO
-

Using an Alias

-

If you have an alias configured in .cargo/config.toml, -you can simplify the command:

-
cargo g
-

For additional options and usage details, refer to the generate help.

-

Using as a Library

-

You can use cargo-leet as a library to mimic the -LeetCode environment in your own projects. To do so, add it as a -dependency in your Cargo.toml file using

-
cargo add cargo-leet
-

For more information, see the -documentation.

-

License

-

All code in this repository is dual-licensed under either:

-
    -
  • Apache License, Version 2.0 (LICENSE-APACHE or -http://apache.org/licenses/LICENSE-2.0)
  • -
  • MIT license (LICENSE-MIT or -http://opensource.org/licenses/MIT)
  • -
-

at your option. This means you can select the license you prefer! -This dual-licensing approach is the de-facto standard in the Rust -ecosystem and there are very good reasons to include both as noted in -this issue -on Bevy’s repo.

-

Contribution

-

Unless you explicitly state otherwise, any contribution intentionally -submitted for inclusion in the work by you, as defined in the Apache-2.0 -license, shall be dual licensed as above, without any additional terms -or conditions.

diff --git a/README.pdf b/README.pdf deleted file mode 100644 index 3d01067c8ddd6616a4506219140dc68fad626df3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55102 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 diff --git a/README.typ b/README.typ deleted file mode 100644 index f3dcdbf..0000000 --- a/README.typ +++ /dev/null @@ -1,212 +0,0 @@ -= `cargo-leet` - A leetcode local development assistant - -A program that given the link or slug to a leetcode problem, creates a -local file where you can develop and test your solution before post it -back to leetcode. - -== Usage - -The `cargo leet` program helps you streamline your workflow with -LeetCode problems by generating local files for solution development and -testing before submitting them back to LeetCode. Below is a summary of -how to use the various commands and options available in `cargo leet`. - -=== General Usage - -```sh -cargo leet [OPTIONS] -``` - -=== Commands - -- #strong[new] \ - Creates a new pre-configured project based on a template, which can be - used with `cargo-leet`. - - ```sh - cargo leet new [OPTIONS] [NAME] - ``` - -- #strong[generate, -g, gen] \ - Generates a module for the specified problem, allowing you to start - working on the solution locally. You can provide a LeetCode problem - slug or URL, or leave it blank to use the daily challenge. - - ```sh - cargo leet generate [OPTIONS] [PROBLEM] - ``` - -- #strong[active] \ - Prints the currently active problem or sets the active problem to the - provided problem slug. - - ```sh - cargo leet active [OPTIONS] [PROBLEM_SLUG] - ``` - -- #strong[test] \ - Runs tests on the currently active problem to verify your solution. - - ```sh - cargo leet test [OPTIONS] - ``` - -=== Options - -- #strong[-p, –path \] \ - Specify the path to the project root. If not provided, the current - working directory is used. -- #strong[-l, –log-level \] \ - Set the logging level. Default is `warn`. Available levels: - - `off`: No logging - - `error` - - `warn` - - `info` - - `debug` - - `trace` -- #strong[-h, –help] \ - Displays help information. -- #strong[-V, –version] \ - Prints the version of `cargo leet`. - -=== Examples - -- #strong[Create a new project]: - - ```sh - cargo leet new my-leetcode-project - ``` - -- #strong[Change into the directory] - - ```sh - cd my-leetcode-project - ``` - -- #strong[Generate a module for a specific problem]: - - ```sh - cargo leet generate two-sum - ``` - -- #strong[Set the active problem \(done automatically by - `cargo leet gen`)]: - - ```sh - cargo leet active two-sum - ``` - -- #strong[Run tests on the active problem]: - - ```sh - cargo leet test - ``` - -== Installation - -Note: If `cargo-leet` is already installed and you install it again, the -existing installation will be replaced, even if it was originally -installed from a different source. For instance, if you first install it -from a local clone and then reinstall it from a Git repository, the new -installation will overwrite the previous one \(you won’t have both -versions installed). - -=== Build from Source - -You can build `cargo-leet` from source using two different channels: - -- #strong[Stable \(main)] - - ```sh - cargo install --git https://github.com/rust-practice/cargo-leet.git --branch main -F tool - ``` - - This installs the stable version of `cargo-leet` from the `main` - branch. - -- #strong[Development \(develop)] - - ```sh - cargo install --git https://github.com/rust-practice/cargo-leet.git --branch develop -F tool - ``` - - This installs the latest development version from the `develop` - branch, which may include new features or changes that are still being - tested. - -=== Install from crates.io - -You can also install `cargo-leet` directly from crates.io. However, -please note that the crates.io release may not always reflect the latest -updates. - -```sh -cargo install cargo-leet -F tool -``` - -=== Running Directly from Source without Installation \(For Development) - -When developing the tool, you can run it directly from the source code -without needing to install it. By default, these commands will execute -the tool within the current working directory, meaning it will interact -with the current project folder for `cargo-leet`. - -==== Running in the Current Directory - -Running the tool this way is useful for testing but may not be ideal if -you need to target a specific project or repository. In such cases, you -can specify the path to the desired repository using the `--path` -option. - -For example, to run the tool against a specific test repository: - -```sh -cargo run -F tool -- leet gen --path $TEST_REPO -``` - -==== Using an Alias - -If you have an alias configured in `.cargo/config.toml`, you can -simplify the command: - -```sh -cargo g -``` - -For additional options and usage details, refer to the generate help in -#link()[commands]. - -== Using as a Library - -You can use `cargo-leet` as a library to mimic the LeetCode environment -in your own projects. To do so, add it as a dependency in your -`Cargo.toml` file using - -```sh -cargo add cargo-leet -``` - -For more information, see -#link("https://docs.rs/cargo-leet/")[the documentation]. - -== License - -All code in this repository is dual-licensed under either: - -- Apache License, Version 2.0 \(#link("LICENSE-APACHE") or - http:\/\/apache.org/licenses/LICENSE-2.0) -- MIT license \(#link("LICENSE-MIT") or - http:\/\/opensource.org/licenses/MIT) - -at your option. This means you can select the license you prefer! This -dual-licensing approach is the de-facto standard in the Rust ecosystem -and there are very good reasons to include both as noted in this -#link("https://github.com/bevyengine/bevy/issues/2373")[issue] on -#link("https://bevyengine.org")[Bevy]’s repo. - -=== Contribution - -Unless you explicitly state otherwise, any contribution intentionally -submitted for inclusion in the work by you, as defined in the Apache-2.0 -license, shall be dual licensed as above, without any additional terms -or conditions. From 0fb91bd1903cea937d8cec813259fae719d1eee4 Mon Sep 17 00:00:00 2001 From: Anton Aparin Date: Mon, 26 Aug 2024 22:17:23 +0200 Subject: [PATCH 7/7] Move program description --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7734e33..fedc231 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,10 @@ # `cargo-leet` - A leetcode local development assistant -A program that given the link or slug to a leetcode problem, -creates a local file where you can develop and test your solution before post it back to leetcode. +The `cargo leet` program helps you streamline your workflow with LeetCode problem local file where you can develop and test your solution before post it back to leetcode. ## Usage -The `cargo leet` program helps you streamline your workflow with LeetCode problems by generating local files for solution development and testing before submitting them back to LeetCode. Below is a summary of how to use the various commands and options available in `cargo leet`. +Below is a summary of how to use the various commands and options available in `cargo leet`. ### General Usage