1 个不稳定版本
0.2.71 | 2023年7月4日 |
---|---|
0.2.7 |
|
0.2.6 |
|
#1272 在 命令行工具 中
200KB
1.5K SLoC
leetcode-runner-cli
通过 CLI 界面执行 LeetCode 测试用例并提交您的解决方案
免责声明:这不是官方 LeetCode 工具。我以任何方式都与 LeetCode 无关。此工具未获得 LeetCode 的认可。
安装
使用 Cargo
-
如果您已将 Cargo 安装到您的系统,则可以使用以下命令安装该工具。
cargo install leetcode-runner-cli
使用预构建的二进制文件
-
转到 发行版部分 并下载适用于您的系统的相应二进制文件。
-
将二进制文件放置在适当的位置,并将位置添加到您的 PATH 环境变量中。
从源代码构建
-
从 此处安装 rust 以编译源代码。
-
克隆存储库并移动到存储库目录。
git clone https://github.com/dvishal485/leetcode-runner-cli.git cd leetcode-runner-cli
-
编译和安装二进制文件。
cargo install --path .
平台特定说明
根据您的平台,您可能需要安装某些工具才能成功编译。
- 在 Ubuntu 系统上,您可能需要执行
apt-get install pkg-config openssl-dev -y
以成功编译程序。 - Windows 用户可以直接使用。
用法
-
设置环境变量
LC_COOKIE
为您的 LeetCode 会话 Cookie。您可以在互联网上搜索如何在您的系统上设置环境变量。您可以通过登录 LeetCode 并检查浏览器开发者工具中的请求头中的 Cookie 来获取会话 Cookie。
请确保将您的 Cookie 放在双引号中。
export LC_COOKIE="csrftoken=abcdefgh;LEETCODE_SESSION=ijklmnopqrstuvwxyz;"
-
执行工具并验证您的身份验证。
leetcode-runner-cli -a
命令
leetcode-runner-cli [COMMAND] [OPTIONS <option>]
命令 | 描述 | 参数 |
---|---|---|
-h, --help |
打印帮助信息 | - |
-V, --version |
打印版本信息 | - |
-a,auth |
使用 LeetCode 进行身份验证 | - |
-d,daily |
获取每日挑战问题 | - |
-q,question |
问题标题 / 获取的 URL | [QUESTION_NAME] (必需) |
-r,run |
使用默认/指定的测试用例执行文件 | -f [FILE] -t [TESTCASE_FILE] |
-s,submit |
测试用例通过后提交解决方案 | -f [FILE] |
-fs,fast-submit |
提交解决方案时无需检查测试用例 | -f [FILE] |
-段落,打包 |
将你的解决方案和问题打包到一个目录中 | -f [FILE] |
你可以通过传递 --help
来查看命令的使用方法。
文件更改
如果你通过CLI(使用 -d
或 -q
)获取问题,那么工具将自动在模板代码中添加所需更改。
但如果你使用自己的代码,则需要做出以下更改
你提交给LeetCode的文件不应该包含驱动代码,如主函数或结构定义。但不需要手动删除。工具将自动删除驱动代码并将解决方案提交到LeetCode。你所需要做的就是将分隔符 #LCSTART
和 #LCEND
放在解决方案文件中的注释中,并在文件中任意位置放置LeetCode问题链接。
例如
struct Solution;
// #LCSTART
impl Solution {
pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
// real magic here
}
} // #LCEND https://leetcode.com/problems/two-sum/
fn main() {
// can have anything which may assist you
}
- 如果未找到链接,工具将退出并显示错误信息。
- 如果未找到起始分隔符,工具将运行到结束分隔符。
- 如果未找到结束分隔符,工具将运行到文件末尾。
- 如果两个分隔符都没有找到,工具将默认整个文件。
示例用法
文件名不需要通过 --file
或 -f
明确指定,因为它是一个可选字段。有关更多信息,请参阅下面的说明
-
获取问题 koko-eating-bananas
leetcode-runner-cli -q koko-eating-bananas
或
leetcode-runner-cli -q https://leetcode.com/problems/koko-eating-bananas/
-
运行 src/main.rs 并使用默认测试用例运行问题 koko-eating-bananas
leetcode-runner-cli -r --file /src/main.rs
-
使用自定义测试用例文件运行 src/main.rs
leetcode-runner-cli -r -t testcase.txt --file /src/main.rs
-
将 src/main.rs 提交到 LeetCode
leetcode-runner-cli -s --file /src/main.rs
说明:这将首先执行默认测试用例(或如果提供,指定的测试用例),然后只有当测试用例通过时才将解决方案提交到LeetCode,作为防止提交错误解决方案的预防措施。
-
不运行测试用例将 src/main.rs 提交到 LeetCode
leetcode-runner-cli -fs -f /src/main.rs
-
将你的代码和问题打包到目录中以保持进度或上传到Git
leetcode-runner-cli -p --file /src/main.rs
说明
- 代码文件应包含问题的链接,如下面的示例。
- 如果你不指定文件位置,则工具将在当前目录中搜索代码并将其默认使用。
- 如果有多个文件,则工具将使用名为
main
的文件或如果没有main
文件,则使用它找到的第一个文件。
因此,在上面的示例中,你可以简单地执行 cd ./src
然后运行以下命令
- 使用自定义测试用例执行:
leetcode-runner-cli -r -t testcase.txt
- 使用默认测试用例执行:
leetcode-runner-cli -r
- 提交:
leetcode-runner-cli -s
- 不运行测试用例提交:
leetcode-runner-cli -fs
- 打包代码:
leetcode-runner-cli -p
支持的语言
这是一个通用的模块,可以用来运行任何语言。它只需要将 leetcode 上的 language
和文件的 extension
进行映射。
目前,默认添加了以下语言:Rust、Python3、C++、Java、C、JavaScript、Go、Kotlin、Swift、TypeScript、C#、Ruby、Scala、PHP、Racket、Erlang、Elixir、Dart。
根据需求,可以手动添加更多语言,方法是在 src/file_parser/language.rs
文件中更改枚举值,具体请参考此处。
许可 & 版权
- 本项目遵循Apache-2.0 许可协议
- 版权所有 2023 Vishal Das
依赖项
~5–17MB
~256K SLoC