3 个版本 (1 个稳定版本)
1.2.0 | 2021 年 9 月 14 日 |
---|---|
0.2.1 | 2020 年 11 月 27 日 |
0.0.1 | 2020 年 4 月 29 日 |
#2813 in 命令行工具
每月 55 次下载
52KB
1.5K SLoC
GCD - 一个不同的 cd
主要用于快速在 git 项目之间导航。
支持
- git 项目,gcd 数据库通过 gcd-init/gcd-update 命令填充。
- 非项目文件夹,可以使用 gcd-add 命令将这些文件夹添加到 gcd 数据库。
- 可以使用 gcd-alias 命令设置 git 项目和非 git 项目文件夹的别名。
注意:git 项目文件夹是指包含 '.git' 子文件夹的文件夹,不会进行其他检查。
安装
目前您需要自行构建二进制文件。
先决条件
一个有效的 Rust 构建系统 https://rust-lang.net.cn/tools/install。
代码
从以下位置获取代码。
git clone https://gitlab.com/pnmtjonahen/pepercoin.git
构建并安装它。
cargo install --path .
一旦控制台依赖项更新,这将在常规 cargo install
安装
二进制文件
按照上述说明安装二进制文件。
脚本 (Unix)
要么将 gcd 脚本从 scripts 文件夹复制到您的 ${HOME}/bin 文件夹。 (或等效的,如 ${HOME}/.cargo/bin)
要么创建一个 gcd.sh 脚本,如下所示
#!/bin/bash
SCRIPT_FILE="${HOME}/.gcd/gcd-cd.sh"
gcd-select $@
if [[ -f "${SCRIPT_FILE}" ]]; then
source ${SCRIPT_FILE}
rm ${SCRIPT_FILE}
fi
bash 别名
最后,在您的 .bash_aliases 文件中添加条目
alias gcd='source /home/user/.cargo/bin/gcd.sh'
注意:需要源 shell 脚本,否则内部 'cd' 命令将无法按预期工作。
脚本 (Windows)
要么将 gcd.bat 脚本从 scripts 文件夹复制到您的路径文件夹。例如 ${APPDATA}/.cargo/bin
要么创建一个 gcd 脚本,如下所示
@echo off
call gcd-select
if exist %APPDATA%\.gcd\gcd-cd.bat (
%APPDATA%\.gcd\gcd-cd.bat
del /s %APPDATA%\.gcd\gcd-cd.bat
)
首次使用
安装后,调用 gcd init 以初始化数据库并执行对 projects_dir 的初始搜索
gcd-init
基本使用
gcd 由多个不同的应用程序组成。gcd-select 是主要的,但它不是直接调用,而是通过 shell 脚本调用。
- gcd-select,从 gcd 脚本调用,用于选择项目。
- gcd-init,初始化数据库。它将覆盖整个数据库。将丢失所有使用数据和别名。
- gcd-alias,为当前文件夹设置别名,如果当前文件夹不是已知项目,则不会发生任何事情。
- gcd-add,将当前文件夹添加到数据库。
- gcd-purge,清除(移除)数据库中所有不再可用的项目。
- gcd-delete,从数据库中移除当前文件夹。
- gcd-update,更新数据库,与gcd-init相反,此操作仅添加尚未在数据库中的项目
- gcd-mv,将项目移动到新文件夹。当在磁盘上移动git项目时,请使用此操作来更新gcd数据库中的新位置。
代码覆盖率
先决条件
sudo snap install jq
rustup component add llvm-tools-preview
cargo install cargo-binutils
cargo install rustfilt
和
rustup default nightly
生成覆盖率数据
cargo clean
LLVM_PROFILE_FILE="./target/coverage/gcd-%p-%m.profraw" RUSTFLAGS="-Z instrument-coverage" cargo test
cargo profdata -- merge -sparse ./target/coverage/gcd-*.profraw -o ./target/coverage/gcd.profdata
生成覆盖率报告
cargo cov -- report \
$( \
for file in \
$( \
RUSTFLAGS="-Z instrument-coverage" \
cargo test --tests --no-run --message-format=json \
| jq -r "select(.profile.test == true) | .filenames[]" \
| grep -v dSYM - \
); \
do \
printf "%s %s " -object $file; \
done \
) \
-object ./target/debug/gcd-add \
-object ./target/debug/gcd-alias \
-object ./target/debug/gcd-delete \
-object ./target/debug/gcd-init \
-object ./target/debug/gcd-mv \
-object ./target/debug/gcd-purge \
-object ./target/debug/gcd-select \
-object ./target/debug/gcd-update \
--instr-profile=./target/coverage/gcd.profdata --summary-only --ignore-filename-regex='/.cargo/registry|/rustc'
cargo cov -- show \
$( \
for file in \
$( \
RUSTFLAGS="-Z instrument-coverage" \
cargo test --tests --no-run --message-format=json \
| jq -r "select(.profile.test == true) | .filenames[]" \
| grep -v dSYM - \
); \
do \
printf "%s %s " -object $file; \
done \
) \
-object ./target/debug/gcd-add \
-object ./target/debug/gcd-alias \
-object ./target/debug/gcd-delete \
-object ./target/debug/gcd-init \
-object ./target/debug/gcd-mv \
-object ./target/debug/gcd-purge \
-object ./target/debug/gcd-select \
-object ./target/debug/gcd-update \
--instr-profile=./target/coverage/gcd.profdata --format=html --output-dir=./target/coverage/report --ignore-filename-regex='/.cargo/registry|/rustc'
依赖关系
~26-35MB
~554K SLoC