Compare commits
121 Commits
0391ec2b69
...
v0.2.4
Author | SHA1 | Date | |
---|---|---|---|
b78631d6ac | |||
00a249978e | |||
a86a4197f7 | |||
0397b64e28 | |||
77901c6ac9 | |||
a1eadd67e1 | |||
d5271807f7 | |||
947e05e573 | |||
a720dedcf5 | |||
446c957a97 | |||
fa7041187f | |||
f5ff75bfbe | |||
a34118b5e8 | |||
6e4fa67778 | |||
0a8d1105e5 | |||
e370e4d282 | |||
aeab954230 | |||
253b4d5c38 | |||
532506ca0a | |||
cd5b8645ff | |||
acb6673978 | |||
960682a45b | |||
819bcc68c6 | |||
79903524aa | |||
6771a8a6b7 | |||
9f7a322e51 | |||
d728b2f4d7 | |||
961b039779 | |||
b97f261cfd | |||
2085408670 | |||
56490da09b | |||
a2103271b3 | |||
8003a98d83 | |||
de481ddb28 | |||
cb409fe153 | |||
382612bdb0 | |||
bda5a4e1c3 | |||
767b48bbe4 | |||
5b34eaf6ed | |||
170438211b | |||
79fc45b5dd | |||
c7ca0932eb | |||
1f215596b3 | |||
ea96ddfe56 | |||
5c226e9dd8 | |||
7576ade7cb | |||
4420465f41 | |||
8dc0d1fc25 | |||
8067c265e5 | |||
da1e47cbe3 | |||
06181043db | |||
07899fcb44 | |||
bbe415b803 | |||
99fa1900d4 | |||
8d5a524d7d | |||
84302de6ba | |||
c6561a12cc | |||
466c16bc28 | |||
b60e464942 | |||
6db3576f63 | |||
01b5ea1bfd | |||
5a4a94591a | |||
286508a432 | |||
5fc473040e | |||
9687c67cf6 | |||
7f86f27930 | |||
de13281e81 | |||
ad16745b72 | |||
331e5a6825 | |||
c68d6400b7 | |||
69d4d9f5f8 | |||
f7ea903d86 | |||
1827d57f9f | |||
b5b6278d51 | |||
f61b5c0020 | |||
cbc4a72efb | |||
a1db5d795b | |||
de59bdb931 | |||
c32e19ae10 | |||
c16b9e8b47 | |||
a4c40c10cc | |||
078e5a6f3d | |||
f61efa29bd | |||
7eea96cd28 | |||
431cdc876c | |||
63c4bd036e | |||
0168288fbb | |||
40321a000d | |||
796534862e | |||
e722772dfa | |||
d4027ad5fe | |||
fbb999262a | |||
067d5e68ed | |||
9bd948cc9d | |||
01ce6b6953 | |||
068a331816 | |||
226fcb5ffd | |||
06849b9edb | |||
c8933f27c8 | |||
524397acae | |||
3a6c0aca05 | |||
4aeca04c65
|
|||
d1d1353c74
|
|||
01ad3dbb82 | |||
bfb8142522 | |||
8209a15d42
|
|||
ce7f2f5206
|
|||
0ed449c27d
|
|||
7e51d6cca2
|
|||
5d5155d452
|
|||
13f8335cd2
|
|||
0aadeec095
|
|||
c07d023b5f
|
|||
e52e32a2c0
|
|||
6a999ef25d
|
|||
7918006315
|
|||
61f4423d47
|
|||
df2cae393c
|
|||
0a0d05c048
|
|||
807611ffce
|
|||
def18273f4
|
2
.drone.yml
Executable file
2
.drone.yml
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
kind: template
|
||||||
|
load: cuddle-rust-cli-plan.yaml
|
176
.github/workflows/release.yml
vendored
176
.github/workflows/release.yml
vendored
@@ -1,176 +0,0 @@
|
|||||||
# The way this works is the following:
|
|
||||||
#
|
|
||||||
# The create-release job runs purely to initialize the GitHub release itself
|
|
||||||
# and to output upload_url for the following job.
|
|
||||||
#
|
|
||||||
# The build-release job runs only once create-release is finished. It gets the
|
|
||||||
# release upload URL from create-release job outputs, then builds the release
|
|
||||||
# executables for each supported platform and attaches them as release assets
|
|
||||||
# to the previously created release.
|
|
||||||
#
|
|
||||||
# The key here is that we create the release only once.
|
|
||||||
#
|
|
||||||
# Reference:
|
|
||||||
# https://eugene-babichenko.github.io/blog/2020/05/09/github-actions-cross-platform-auto-releases/
|
|
||||||
|
|
||||||
name: release
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
# Enable when testing release infrastructure on a branch.
|
|
||||||
branches:
|
|
||||||
- kjuulh/tests
|
|
||||||
tags:
|
|
||||||
- "[0-9]+.[0-9]+.[0-9]+"
|
|
||||||
jobs:
|
|
||||||
create-release:
|
|
||||||
name: create-release
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
# env:
|
|
||||||
# Set to force version number, e.g., when no tag exists.
|
|
||||||
# KIGNORE_VERSION: TEST-0.0.0
|
|
||||||
outputs:
|
|
||||||
upload_url: ${{ steps.release.outputs.upload_url }}
|
|
||||||
kignore_version: ${{ env.KIGNORE_VERSION }}
|
|
||||||
steps:
|
|
||||||
- name: Get the release version from the tag
|
|
||||||
shell: bash
|
|
||||||
if: env.KIGNORE_VERSION == ''
|
|
||||||
run: |
|
|
||||||
# Apparently, this is the right way to get a tag name. Really?
|
|
||||||
#
|
|
||||||
# See: https://github.community/t5/GitHub-Actions/How-to-get-just-the-tag-name/m-p/32167/highlight/true#M1027
|
|
||||||
echo "KIGNORE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
|
|
||||||
echo "version is: ${{ env.KIGNORE_VERSION }}"
|
|
||||||
- name: Create GitHub release
|
|
||||||
id: release
|
|
||||||
uses: actions/create-release@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
tag_name: ${{ env.KIGNORE_VERSION }}
|
|
||||||
release_name: ${{ env.KIGNORE_VERSION }}
|
|
||||||
|
|
||||||
build-release:
|
|
||||||
name: build-release
|
|
||||||
needs: ["create-release"]
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
env:
|
|
||||||
# For some builds, we use cross to test on 32-bit and big-endian
|
|
||||||
# systems.
|
|
||||||
CARGO: cargo
|
|
||||||
# When CARGO is set to CROSS, this is set to `--target matrix.target`.
|
|
||||||
TARGET_FLAGS: ""
|
|
||||||
# When CARGO is set to CROSS, TARGET_DIR includes matrix.target.
|
|
||||||
TARGET_DIR: ./target
|
|
||||||
# Emit backtraces on panics.
|
|
||||||
RUST_BACKTRACE: 1
|
|
||||||
# Build static releases with PCRE2.
|
|
||||||
PCRE2_SYS_STATIC: 1
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
build: [linux, linux-arm, macos, win-msvc, win-gnu, win32-msvc]
|
|
||||||
include:
|
|
||||||
- build: linux
|
|
||||||
os: ubuntu-22.04
|
|
||||||
rust: nightly
|
|
||||||
target: x86_64-unknown-linux-musl
|
|
||||||
- build: linux-arm
|
|
||||||
os: ubuntu-22.04
|
|
||||||
rust: nightly
|
|
||||||
target: arm-unknown-linux-gnueabihf
|
|
||||||
- build: macos
|
|
||||||
os: macos-12
|
|
||||||
rust: nightly
|
|
||||||
target: x86_64-apple-darwin
|
|
||||||
- build: win-msvc
|
|
||||||
os: windows-2022
|
|
||||||
rust: nightly
|
|
||||||
target: x86_64-pc-windows-msvc
|
|
||||||
- build: win-gnu
|
|
||||||
os: windows-2022
|
|
||||||
rust: nightly-x86_64-gnu
|
|
||||||
target: x86_64-pc-windows-gnu
|
|
||||||
- build: win32-msvc
|
|
||||||
os: windows-2022
|
|
||||||
rust: nightly
|
|
||||||
target: i686-pc-windows-msvc
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses:
|
|
||||||
actions/checkout@v3
|
|
||||||
|
|
||||||
#- name: Install packages (Ubuntu)
|
|
||||||
# if: matrix.os == 'ubuntu-22.04'
|
|
||||||
# run: |
|
|
||||||
# ci/ubuntu-install-packages
|
|
||||||
|
|
||||||
- name: Install Rust
|
|
||||||
uses: dtolnay/rust-toolchain@master
|
|
||||||
with:
|
|
||||||
toolchain: ${{ matrix.rust }}
|
|
||||||
target: ${{ matrix.target }}
|
|
||||||
|
|
||||||
- name: Use Cross
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cargo install cross
|
|
||||||
echo "CARGO=cross" >> $GITHUB_ENV
|
|
||||||
echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV
|
|
||||||
echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Show command used for Cargo
|
|
||||||
run: |
|
|
||||||
echo "cargo command is: ${{ env.CARGO }}"
|
|
||||||
echo "target flag is: ${{ env.TARGET_FLAGS }}"
|
|
||||||
echo "target dir is: ${{ env.TARGET_DIR }}"
|
|
||||||
|
|
||||||
- name: Build release binary
|
|
||||||
run: ${{ env.CARGO }} build --verbose --release ${{ env.TARGET_FLAGS }}
|
|
||||||
|
|
||||||
- name: Strip release binary (linux and macos)
|
|
||||||
if: matrix.build == 'linux' || matrix.build == 'macos'
|
|
||||||
run: strip "target/${{ matrix.target }}/release/kignore"
|
|
||||||
|
|
||||||
- name: Strip release binary (arm)
|
|
||||||
if: matrix.build == 'linux-arm'
|
|
||||||
run: |
|
|
||||||
docker run --rm -v \
|
|
||||||
"$PWD/target:/target:Z" \
|
|
||||||
rustembedded/cross:arm-unknown-linux-gnueabihf \
|
|
||||||
arm-linux-gnueabihf-strip \
|
|
||||||
/target/arm-unknown-linux-gnueabihf/release/kignore
|
|
||||||
|
|
||||||
- name: Build archive
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
outdir="$(ci/cargo-out-dir "${{ env.TARGET_DIR }}")"
|
|
||||||
staging="kignore-${{ needs.create-release.outputs.kignore_version }}-${{ matrix.target }}"
|
|
||||||
mkdir -p "$staging"/{complete,doc}
|
|
||||||
|
|
||||||
cp {README.md,COPYING,UNLICENSE,LICENSE-MIT} "$staging/"
|
|
||||||
cp {CHANGELOG.md,FAQ.md,GUIDE.md} "$staging/doc/"
|
|
||||||
#cp "$outdir"/{rg.bash,rg.fish,_rg.ps1} "$staging/complete/"
|
|
||||||
#cp complete/_rg "$staging/complete/"
|
|
||||||
|
|
||||||
if [ "${{ matrix.os }}" = "windows-2022" ]; then
|
|
||||||
cp "target/${{ matrix.target }}/release/kignore.exe" "$staging/"
|
|
||||||
7z a "$staging.zip" "$staging"
|
|
||||||
echo "ASSET=$staging.zip" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
# The man page is only generated on Unix systems.
|
|
||||||
cp "$outdir"/kignore.1 "$staging/doc/"
|
|
||||||
cp "target/${{ matrix.target }}/release/kignore" "$staging/"
|
|
||||||
tar czf "$staging.tar.gz" "$staging"
|
|
||||||
echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Upload release archive
|
|
||||||
uses: actions/upload-release-asset@v1.0.2
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
upload_url: ${{ needs.create-release.outputs.upload_url }}
|
|
||||||
asset_path: ${{ env.ASSET }}
|
|
||||||
asset_name: ${{ env.ASSET }}
|
|
||||||
asset_content_type: application/octet-stream
|
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
|||||||
target/
|
target/
|
||||||
|
.cuddle/
|
||||||
|
46
CHANGELOG.md
Normal file
46
CHANGELOG.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Changelog
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.2.4] - 2024-12-22
|
||||||
|
|
||||||
|
### Other
|
||||||
|
- trigger commit
|
||||||
|
|
||||||
|
## [0.2.3] - 2024-12-22
|
||||||
|
|
||||||
|
### Other
|
||||||
|
- trigger commit
|
||||||
|
|
||||||
|
## [0.2.2] - 2024-12-22
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- trigger commit
|
||||||
|
|
||||||
|
## [0.2.1] - 2024-12-22
|
||||||
|
|
||||||
|
### Other
|
||||||
|
- fix cargo toml
|
||||||
|
|
||||||
|
## [0.2.0] - 2024-12-22
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- transform to binary
|
||||||
|
- redo project structure
|
||||||
|
|
||||||
|
### Other
|
||||||
|
- update lock
|
||||||
|
|
||||||
|
## [0.1.3] - 2024-12-22
|
||||||
|
|
||||||
|
### Other
|
||||||
|
- update cargo
|
||||||
|
|
||||||
|
## [0.1.2] - 2024-12-22
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- trigger commit
|
482
Cargo.lock
generated
482
Cargo.lock
generated
@@ -1,23 +1,64 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
# This file is automatically @generated by Cargo.
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 3
|
version = 4
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "atty"
|
name = "aho-corasick"
|
||||||
version = "0.2.14"
|
version = "1.1.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"hermit-abi",
|
"memchr",
|
||||||
"libc",
|
|
||||||
"winapi",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitflags"
|
name = "anstream"
|
||||||
version = "1.3.2"
|
version = "0.6.18"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
|
||||||
|
dependencies = [
|
||||||
|
"anstyle",
|
||||||
|
"anstyle-parse",
|
||||||
|
"anstyle-query",
|
||||||
|
"anstyle-wincon",
|
||||||
|
"colorchoice",
|
||||||
|
"is_terminal_polyfill",
|
||||||
|
"utf8parse",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anstyle"
|
||||||
|
version = "1.0.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anstyle-parse"
|
||||||
|
version = "0.2.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
|
||||||
|
dependencies = [
|
||||||
|
"utf8parse",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anstyle-query"
|
||||||
|
version = "1.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
|
||||||
|
dependencies = [
|
||||||
|
"windows-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anstyle-wincon"
|
||||||
|
version = "3.0.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125"
|
||||||
|
dependencies = [
|
||||||
|
"anstyle",
|
||||||
|
"windows-sys",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
@@ -27,86 +68,77 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap"
|
name = "clap"
|
||||||
version = "4.0.17"
|
version = "4.5.23"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "06badb543e734a2d6568e19a40af66ed5364360b9226184926f89d229b4b4267"
|
checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"atty",
|
"clap_builder",
|
||||||
"bitflags",
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_builder"
|
||||||
|
version = "4.5.23"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838"
|
||||||
|
dependencies = [
|
||||||
|
"anstream",
|
||||||
|
"anstyle",
|
||||||
"clap_lex",
|
"clap_lex",
|
||||||
"strsim",
|
"strsim",
|
||||||
"termcolor",
|
|
||||||
"unicase",
|
"unicase",
|
||||||
"unicode-width",
|
"unicode-width",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_lex"
|
name = "clap_lex"
|
||||||
version = "0.3.0"
|
version = "0.7.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"
|
checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
|
||||||
dependencies = [
|
|
||||||
"os_str_bytes",
|
[[package]]
|
||||||
]
|
name = "colorchoice"
|
||||||
|
version = "1.0.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "console"
|
name = "console"
|
||||||
version = "0.15.2"
|
version = "0.15.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718c"
|
checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"encode_unicode",
|
"encode_unicode",
|
||||||
"lazy_static",
|
|
||||||
"libc",
|
"libc",
|
||||||
"terminal_size",
|
"once_cell",
|
||||||
"unicode-width",
|
"unicode-width",
|
||||||
"winapi",
|
"windows-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "deranged"
|
||||||
|
version = "0.3.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
|
||||||
|
dependencies = [
|
||||||
|
"powerfmt",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "encode_unicode"
|
name = "encode_unicode"
|
||||||
version = "0.3.6"
|
version = "1.0.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
|
checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "eyre"
|
name = "eyre"
|
||||||
version = "0.6.8"
|
version = "0.6.12"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb"
|
checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indenter",
|
"indenter",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gitignore"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"eyre",
|
|
||||||
"gitignore_inner",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "gitignore_inner"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"clap",
|
|
||||||
"console",
|
|
||||||
"eyre",
|
|
||||||
"tracing",
|
|
||||||
"tracing-subscriber",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hermit-abi"
|
|
||||||
version = "0.1.19"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "indenter"
|
name = "indenter"
|
||||||
version = "0.3.3"
|
version = "0.3.3"
|
||||||
@@ -114,31 +146,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
|
checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "is_terminal_polyfill"
|
||||||
version = "1.0.4"
|
version = "1.70.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
|
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itoa"
|
||||||
|
version = "1.0.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "kignore"
|
||||||
|
version = "0.2.0"
|
||||||
|
dependencies = [
|
||||||
|
"clap",
|
||||||
|
"console",
|
||||||
|
"eyre",
|
||||||
|
"tracing",
|
||||||
|
"tracing-subscriber",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lazy_static"
|
name = "lazy_static"
|
||||||
version = "1.4.0"
|
version = "1.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.135"
|
version = "0.2.169"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c"
|
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "log"
|
name = "log"
|
||||||
version = "0.4.17"
|
version = "0.4.22"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "matchers"
|
name = "matchers"
|
||||||
@@ -146,9 +192,15 @@ version = "0.1.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
|
checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"regex-automata",
|
"regex-automata 0.1.10",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.7.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nu-ansi-term"
|
name = "nu-ansi-term"
|
||||||
version = "0.46.0"
|
version = "0.46.0"
|
||||||
@@ -160,25 +212,25 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num_threads"
|
name = "num-conv"
|
||||||
version = "0.1.6"
|
version = "0.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
|
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num_threads"
|
||||||
|
version = "0.1.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "once_cell"
|
name = "once_cell"
|
||||||
version = "1.15.0"
|
version = "1.20.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
|
checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "os_str_bytes"
|
|
||||||
version = "6.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "overload"
|
name = "overload"
|
||||||
@@ -188,35 +240,44 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pin-project-lite"
|
name = "pin-project-lite"
|
||||||
version = "0.2.9"
|
version = "0.2.15"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
|
checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "powerfmt"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.47"
|
version = "1.0.92"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
|
checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.21"
|
version = "1.0.37"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
|
checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex"
|
name = "regex"
|
||||||
version = "1.6.0"
|
version = "1.11.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
|
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"regex-syntax",
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-automata 0.4.9",
|
||||||
|
"regex-syntax 0.8.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -225,93 +286,133 @@ version = "0.1.10"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
|
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"regex-syntax",
|
"regex-syntax 0.6.29",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-automata"
|
||||||
|
version = "0.4.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax 0.8.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex-syntax"
|
name = "regex-syntax"
|
||||||
version = "0.6.27"
|
version = "0.6.29"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
|
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.8.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde"
|
||||||
|
version = "1.0.216"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e"
|
||||||
|
dependencies = [
|
||||||
|
"serde_derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_derive"
|
||||||
|
version = "1.0.216"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sharded-slab"
|
name = "sharded-slab"
|
||||||
version = "0.1.4"
|
version = "0.1.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
|
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smallvec"
|
name = "smallvec"
|
||||||
version = "1.10.0"
|
version = "1.13.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
|
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strsim"
|
name = "strsim"
|
||||||
version = "0.10.0"
|
version = "0.11.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "1.0.102"
|
version = "2.0.91"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
|
checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "termcolor"
|
|
||||||
version = "1.1.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
|
|
||||||
dependencies = [
|
|
||||||
"winapi-util",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "terminal_size"
|
|
||||||
version = "0.1.17"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thread_local"
|
name = "thread_local"
|
||||||
version = "1.1.4"
|
version = "1.1.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180"
|
checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.3.15"
|
version = "0.3.37"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c"
|
checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"deranged",
|
||||||
"itoa",
|
"itoa",
|
||||||
"libc",
|
"libc",
|
||||||
|
"num-conv",
|
||||||
"num_threads",
|
"num_threads",
|
||||||
|
"powerfmt",
|
||||||
|
"serde",
|
||||||
|
"time-core",
|
||||||
|
"time-macros",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "time-core"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "time-macros"
|
||||||
|
version = "0.2.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de"
|
||||||
|
dependencies = [
|
||||||
|
"num-conv",
|
||||||
|
"time-core",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tracing"
|
name = "tracing"
|
||||||
version = "0.1.37"
|
version = "0.1.41"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
|
checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
|
||||||
"log",
|
"log",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"tracing-attributes",
|
"tracing-attributes",
|
||||||
@@ -320,9 +421,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tracing-attributes"
|
name = "tracing-attributes"
|
||||||
version = "0.1.23"
|
version = "0.1.28"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
|
checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -331,9 +432,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tracing-core"
|
name = "tracing-core"
|
||||||
version = "0.1.30"
|
version = "0.1.33"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
|
checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"valuable",
|
"valuable",
|
||||||
@@ -341,20 +442,20 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tracing-log"
|
name = "tracing-log"
|
||||||
version = "0.1.3"
|
version = "0.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
|
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"lazy_static",
|
|
||||||
"log",
|
"log",
|
||||||
|
"once_cell",
|
||||||
"tracing-core",
|
"tracing-core",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tracing-subscriber"
|
name = "tracing-subscriber"
|
||||||
version = "0.3.16"
|
version = "0.3.19"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70"
|
checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"matchers",
|
"matchers",
|
||||||
"nu-ansi-term",
|
"nu-ansi-term",
|
||||||
@@ -371,24 +472,27 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicase"
|
name = "unicase"
|
||||||
version = "2.6.0"
|
version = "2.8.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
|
checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df"
|
||||||
dependencies = [
|
|
||||||
"version_check",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.5"
|
version = "1.0.14"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
|
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-width"
|
name = "unicode-width"
|
||||||
version = "0.1.10"
|
version = "0.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
|
checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "utf8parse"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "valuable"
|
name = "valuable"
|
||||||
@@ -396,12 +500,6 @@ version = "0.1.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
|
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "version_check"
|
|
||||||
version = "0.9.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi"
|
name = "winapi"
|
||||||
version = "0.3.9"
|
version = "0.3.9"
|
||||||
@@ -418,17 +516,81 @@ version = "0.4.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winapi-util"
|
|
||||||
version = "0.1.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
|
|
||||||
dependencies = [
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi-x86_64-pc-windows-gnu"
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-sys"
|
||||||
|
version = "0.59.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
|
||||||
|
dependencies = [
|
||||||
|
"windows-targets",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-targets"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
||||||
|
dependencies = [
|
||||||
|
"windows_aarch64_gnullvm",
|
||||||
|
"windows_aarch64_msvc",
|
||||||
|
"windows_i686_gnu",
|
||||||
|
"windows_i686_gnullvm",
|
||||||
|
"windows_i686_msvc",
|
||||||
|
"windows_x86_64_gnu",
|
||||||
|
"windows_x86_64_gnullvm",
|
||||||
|
"windows_x86_64_msvc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_gnullvm"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_aarch64_msvc"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_gnu"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_gnullvm"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_i686_msvc"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnu"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_gnullvm"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows_x86_64_msvc"
|
||||||
|
version = "0.52.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
||||||
|
25
Cargo.toml
25
Cargo.toml
@@ -1,23 +1,6 @@
|
|||||||
[package]
|
|
||||||
name = "kignore"
|
|
||||||
version = "0.1.1"
|
|
||||||
authors = ["Kasper J. Hermansen <contact@kjuulh.io>"]
|
|
||||||
license = "MIT"
|
|
||||||
readme = "README.md"
|
|
||||||
keywords = ["git", "ignore", "clap", "interactive"]
|
|
||||||
repository = "https://github.com/kjuulh/gitignore"
|
|
||||||
documentation = "https://docs.rs/gitignore"
|
|
||||||
description = """
|
|
||||||
kignore is a tool for easily adding patterns to .gitignore and cleaning up afterwards
|
|
||||||
"""
|
|
||||||
categories = ["command-line-interface"]
|
|
||||||
edition = "2021"
|
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
members = [
|
members = ["crates/*"]
|
||||||
"crates/gitignore_inner"
|
resolver = "2"
|
||||||
]
|
|
||||||
|
|
||||||
[dependencies]
|
[workspace.package]
|
||||||
eyre = "0.6.8"
|
version = "0.2.4"
|
||||||
gitignore_inner = {path = "crates/gitignore_inner", version = "0.1.0"}
|
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
pkg/brew/
|
|
7
LICENSE-MIT
Normal file
7
LICENSE-MIT
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Copyright 2022 Kasper Juul Hermansen
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -42,4 +42,9 @@ git clone https://github.com/kjuulh/gitignore
|
|||||||
|
|
||||||
### Homebrew
|
### Homebrew
|
||||||
|
|
||||||
TBA
|
Added in HomebrewFormula
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ brew tap kjuulh/gitignore https://github.com/kjuulh/gitignore
|
||||||
|
$ brew install kjuulh/gitignore/kignore-bin
|
||||||
|
```
|
||||||
|
33
ci/build-dep
33
ci/build-dep
@@ -1,33 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
D="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
|
||||||
|
|
||||||
# This script builds a binary dpkg for Debian based distros. It does not
|
|
||||||
# currently run in CI, and is instead run manually and the resulting dpkg is
|
|
||||||
# uploaded to GitHub via the web UI.
|
|
||||||
#
|
|
||||||
# Note that this requires 'cargo deb', which can be installed with
|
|
||||||
# 'cargo install cargo-deb'.
|
|
||||||
#
|
|
||||||
# This should be run from the root of the ripgrep repo.
|
|
||||||
|
|
||||||
if ! command -V cargo-deb > /dev/null 2>&1; then
|
|
||||||
echo "cargo-deb command missing" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 'cargo deb' does not seem to provide a way to specify an asset that is
|
|
||||||
# created at build time, such as ripgrep's man page. To work around this,
|
|
||||||
# we force a debug build, copy out the man page (and shell completions)
|
|
||||||
# produced from that build, put it into a predictable location and then build
|
|
||||||
# the deb, which knows where to look.
|
|
||||||
cargo build
|
|
||||||
|
|
||||||
DEPLOY_DIR=deployment/deb
|
|
||||||
OUT_DIR="$("$D"/cargo-out-dir target/debug/)"
|
|
||||||
mkdir -p "$DEPLOY_DIR"
|
|
||||||
|
|
||||||
# Since we're distributing the dpkg, we don't know whether the user will have
|
|
||||||
# PCRE2 installed, so just do a static build.
|
|
||||||
PCRE2_SYS_STATIC=1 cargo deb --target x86_64-unknown-linux-musl
|
|
@@ -1,14 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if [ $# != 1 ]; then
|
|
||||||
echo "Usage: $(basename "$0") <target-dir>" >&2
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
# This works by finding the most recent stamp file, which is produced by
|
|
||||||
# every ripgrep build.
|
|
||||||
target_dir="$1"
|
|
||||||
find "$target_dir" -name kignore-stamp -print0 \
|
|
||||||
| xargs -0 ls -t \
|
|
||||||
| head -n1 \
|
|
||||||
| xargs dirname
|
|
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if ! command -V sudo; then
|
|
||||||
apt-get update
|
|
||||||
apt-get install -y --no-install-recommends sudo
|
|
||||||
fi
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y --no-install-recommends \
|
|
||||||
zsh xz-utils liblz4-tool musl-tools \
|
|
||||||
brotli zstd
|
|
@@ -1,23 +0,0 @@
|
|||||||
[package]
|
|
||||||
name = "gitignore_inner"
|
|
||||||
version = "0.1.0"
|
|
||||||
edition = "2021"
|
|
||||||
authors = ["Kasper J. Hermansen <contact@kjuulh.io>"]
|
|
||||||
license = "MIT"
|
|
||||||
readme = "../../README.md"
|
|
||||||
keywords = ["git", "ignore", "clap", "interactive"]
|
|
||||||
repository = "https://github.com/kjuulh/gitignore"
|
|
||||||
documentation = "https://docs.rs/gitignore"
|
|
||||||
description = """
|
|
||||||
gitignore_inner is the internal module for cargo
|
|
||||||
"""
|
|
||||||
categories = ["command-line-interface"]
|
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
clap = { version = "4.0.17", features = ["env", "unicode", "string"] }
|
|
||||||
console = "0.15.2"
|
|
||||||
eyre = "0.6.8"
|
|
||||||
tracing = { version = "0.1.37", features = ["log"] }
|
|
||||||
tracing-subscriber = { version = "0.3.16", features = ["local-time", "env-filter"] }
|
|
@@ -1,191 +0,0 @@
|
|||||||
use clap::{Arg, Command};
|
|
||||||
use eyre::{Context, ContextCompat};
|
|
||||||
use std::io::prelude::*;
|
|
||||||
use std::{env::current_dir, io::Read, path::PathBuf};
|
|
||||||
|
|
||||||
fn main() -> eyre::Result<()> {
|
|
||||||
let matches = Command::new("gitignore")
|
|
||||||
.version("0.1")
|
|
||||||
.author("Kasper J. Hermansen <contact@kjuulh.io>")
|
|
||||||
.about("Easily ignore items and remove from git state")
|
|
||||||
.long_about("git ignore is a utility tool for easily adding patterns to your .gitignore file.
|
|
||||||
Easily add patterns using `git ignore <pattern>` this will by default also help you remove committed code violating these patterns
|
|
||||||
")
|
|
||||||
.propagate_version(true)
|
|
||||||
.arg(
|
|
||||||
Arg::new("pattern")
|
|
||||||
.help("the pattern you want to ignore")
|
|
||||||
.long_help("the pattern you want to ignore in the nearest .gitignore file")
|
|
||||||
.required(true),
|
|
||||||
).arg(
|
|
||||||
Arg::new("log-level").long("log-level").help("choose a log level and get more messages").long_help("Choose a log level and get more message, defaults to [INFO]"))
|
|
||||||
.get_matches();
|
|
||||||
|
|
||||||
let pattern = matches
|
|
||||||
.get_one::<String>("pattern")
|
|
||||||
.context("missing [pattern]")?;
|
|
||||||
|
|
||||||
add_gitignore_pattern(pattern)
|
|
||||||
}
|
|
||||||
|
|
||||||
enum GitActions {
|
|
||||||
AddPattern {
|
|
||||||
git_path: PathBuf,
|
|
||||||
gitignore_path: PathBuf,
|
|
||||||
},
|
|
||||||
CreateIgnoreAndAddPattern {
|
|
||||||
git_path: PathBuf,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
fn add_gitignore_pattern(pattern: &String) -> eyre::Result<()> {
|
|
||||||
let curdir = current_dir().context(
|
|
||||||
"could not find current_dir, you may not have permission to access that directory",
|
|
||||||
)?;
|
|
||||||
let actions = match search_for_dotgitignore(&curdir)? {
|
|
||||||
// If we have an ignore path, make sure it is in a git repo as well
|
|
||||||
GitSearchResult::GitIgnore(ignorepath) => match search_for_git_root(&curdir)? {
|
|
||||||
GitSearchResult::Git(gitpath) => GitActions::AddPattern {
|
|
||||||
git_path: gitpath,
|
|
||||||
gitignore_path: ignorepath,
|
|
||||||
},
|
|
||||||
_ => return Err(eyre::anyhow!("could not find parent git directory")),
|
|
||||||
},
|
|
||||||
// Find the nearest git repo
|
|
||||||
GitSearchResult::Git(gitpath) => {
|
|
||||||
GitActions::CreateIgnoreAndAddPattern { git_path: gitpath }
|
|
||||||
} // We will always have either above, or an error so we have no default arm
|
|
||||||
};
|
|
||||||
|
|
||||||
match actions {
|
|
||||||
GitActions::AddPattern {
|
|
||||||
git_path,
|
|
||||||
gitignore_path,
|
|
||||||
} => {
|
|
||||||
let mut gitignore_file = open_gitignore_file(&gitignore_path)?;
|
|
||||||
// TODO: search for pattern in file
|
|
||||||
let mut gitignore_content = String::new();
|
|
||||||
gitignore_file
|
|
||||||
.read_to_string(&mut gitignore_content)
|
|
||||||
.context(format!(
|
|
||||||
"could not read file: {}",
|
|
||||||
gitignore_path.to_string_lossy()
|
|
||||||
))?;
|
|
||||||
if gitignore_content.contains(pattern) {
|
|
||||||
return Ok(());
|
|
||||||
}
|
|
||||||
|
|
||||||
writeln!(gitignore_file, "{}", pattern).context("could not write contents to file")?;
|
|
||||||
gitignore_file
|
|
||||||
.sync_all()
|
|
||||||
.context("failed to write data to disk")?;
|
|
||||||
}
|
|
||||||
GitActions::CreateIgnoreAndAddPattern { git_path } => {
|
|
||||||
// TODO: Create gitignore file in root
|
|
||||||
let mut gitignore_file = create_gitignore_file(&git_path)?;
|
|
||||||
// TODO: do same as above
|
|
||||||
writeln!(gitignore_file, "{}", pattern).context("could not write contents to file")?;
|
|
||||||
gitignore_file
|
|
||||||
.sync_all()
|
|
||||||
.context("failed to write data to disk")?;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Run git rm -r --cached on the .git root
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn create_gitignore_file(gitroot: &PathBuf) -> eyre::Result<std::fs::File> {
|
|
||||||
let mut ignore_path = gitroot.clone();
|
|
||||||
if !ignore_path.pop() {
|
|
||||||
return Err(eyre::anyhow!("could not open parent dir"));
|
|
||||||
}
|
|
||||||
ignore_path.push(".gitignore");
|
|
||||||
let file = std::fs::File::create(ignore_path.clone()).context(format!(
|
|
||||||
"could not create file at path: {}",
|
|
||||||
ignore_path.to_string_lossy()
|
|
||||||
))?;
|
|
||||||
|
|
||||||
Ok(file)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn open_gitignore_file(gitignore: &PathBuf) -> eyre::Result<std::fs::File> {
|
|
||||||
let file = std::fs::OpenOptions::new()
|
|
||||||
.read(true)
|
|
||||||
.write(true)
|
|
||||||
.open(gitignore)
|
|
||||||
.context(format!(
|
|
||||||
"could not create file at path: {}",
|
|
||||||
gitignore.to_string_lossy()
|
|
||||||
))?;
|
|
||||||
|
|
||||||
return Ok(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
enum GitSearchResult {
|
|
||||||
GitIgnore(PathBuf),
|
|
||||||
Git(PathBuf),
|
|
||||||
}
|
|
||||||
|
|
||||||
fn search_for_git_root(path: &PathBuf) -> eyre::Result<GitSearchResult> {
|
|
||||||
if !path.is_dir() {
|
|
||||||
return Err(eyre::anyhow!(
|
|
||||||
"path is not a dir: {}",
|
|
||||||
path.to_string_lossy()
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
let direntries = std::fs::read_dir(path)
|
|
||||||
.context(format!("could not open dir: {}", path.to_string_lossy()))?;
|
|
||||||
for direntry in direntries {
|
|
||||||
let entry = direntry.context("could not access file")?;
|
|
||||||
|
|
||||||
let file_name = entry.file_name().to_os_string();
|
|
||||||
match file_name.to_str().context("could not convert to str")? {
|
|
||||||
".git" => return Ok(GitSearchResult::Git(entry.path())),
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut upwards_par = path.clone();
|
|
||||||
if !upwards_par.pop() {
|
|
||||||
return Err(eyre::anyhow!(
|
|
||||||
"no parent exists, cannot check further, you may not be in a git repository"
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
search_for_git_root(&upwards_par)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn search_for_dotgitignore(path: &PathBuf) -> eyre::Result<GitSearchResult> {
|
|
||||||
if !path.is_dir() {
|
|
||||||
return Err(eyre::anyhow!(
|
|
||||||
"path is not a dir: {}",
|
|
||||||
path.to_string_lossy()
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
let direntries = std::fs::read_dir(path)
|
|
||||||
.context(format!("could not open dir: {}", path.to_string_lossy()))?;
|
|
||||||
for direntry in direntries {
|
|
||||||
let entry = direntry.context("could not access file")?;
|
|
||||||
|
|
||||||
let file_name = entry.file_name().to_os_string();
|
|
||||||
|
|
||||||
match file_name.to_str().context("could not convert to str")? {
|
|
||||||
".gitignore" => return Ok(GitSearchResult::GitIgnore(entry.path())),
|
|
||||||
".git" => return Ok(GitSearchResult::Git(entry.path())),
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut upwards_par = path.clone();
|
|
||||||
if !upwards_par.pop() {
|
|
||||||
return Err(eyre::anyhow!(
|
|
||||||
"no parent exists, cannot check further, you may not be in a git repository"
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
search_for_dotgitignore(&upwards_par)
|
|
||||||
}
|
|
26
crates/kignore/Cargo.toml
Normal file
26
crates/kignore/Cargo.toml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
[package]
|
||||||
|
name = "kignore"
|
||||||
|
version.workspace = true
|
||||||
|
authors = ["Kasper J. Hermansen <contact@kjuulh.io>"]
|
||||||
|
license = "MIT"
|
||||||
|
readme = "../../README.md"
|
||||||
|
keywords = ["git", "ignore", "clap", "interactive"]
|
||||||
|
repository = "https://git.front.kjuulh.io/kjuulh/gitignore"
|
||||||
|
documentation = "https://docs.rs/kignore"
|
||||||
|
description = """
|
||||||
|
kignore is a tool for easily adding patterns to .gitignore and cleaning up afterwards
|
||||||
|
"""
|
||||||
|
categories = ["command-line-interface"]
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
clap = { version = "4.5.4", features = ["env", "unicode", "string"] }
|
||||||
|
console = "0.15.8"
|
||||||
|
eyre = "0.6.12"
|
||||||
|
tracing = { version = "0.1.40", features = ["log"] }
|
||||||
|
tracing-subscriber = { version = "0.3.18", features = [
|
||||||
|
"local-time",
|
||||||
|
"env-filter",
|
||||||
|
] }
|
@@ -99,7 +99,7 @@ fn add_gitignore_pattern(term: console::Term, pattern: &String) -> eyre::Result<
|
|||||||
term.write_line(
|
term.write_line(
|
||||||
"could not find .gitignore file, creating one in the root of the git repository",
|
"could not find .gitignore file, creating one in the root of the git repository",
|
||||||
)?;
|
)?;
|
||||||
let mut gitignore_file = create_gitignore_file(&git_path)?;
|
let mut gitignore_file = create_gitignore_file(git_path)?;
|
||||||
term.write_line("adding pattern to file")?;
|
term.write_line("adding pattern to file")?;
|
||||||
writeln!(gitignore_file, "{}", pattern).context("could not write contents to file")?;
|
writeln!(gitignore_file, "{}", pattern).context("could not write contents to file")?;
|
||||||
gitignore_file
|
gitignore_file
|
||||||
@@ -113,6 +113,7 @@ fn add_gitignore_pattern(term: console::Term, pattern: &String) -> eyre::Result<
|
|||||||
.arg("rm")
|
.arg("rm")
|
||||||
.arg("-r")
|
.arg("-r")
|
||||||
.arg("--cached")
|
.arg("--cached")
|
||||||
|
.arg("-f")
|
||||||
.arg("--ignore-unmatch")
|
.arg("--ignore-unmatch")
|
||||||
.arg(pattern)
|
.arg(pattern)
|
||||||
.output()
|
.output()
|
||||||
@@ -132,7 +133,7 @@ fn add_gitignore_pattern(term: console::Term, pattern: &String) -> eyre::Result<
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_gitignore_file(gitroot: &PathBuf) -> eyre::Result<std::fs::File> {
|
fn create_gitignore_file(gitroot: PathBuf) -> eyre::Result<std::fs::File> {
|
||||||
let mut ignore_path = gitroot.clone();
|
let mut ignore_path = gitroot.clone();
|
||||||
if !ignore_path.pop() {
|
if !ignore_path.pop() {
|
||||||
return Err(eyre::anyhow!("could not open parent dir"));
|
return Err(eyre::anyhow!("could not open parent dir"));
|
||||||
@@ -156,7 +157,7 @@ fn open_gitignore_file(gitignore: &PathBuf) -> eyre::Result<std::fs::File> {
|
|||||||
gitignore.to_string_lossy()
|
gitignore.to_string_lossy()
|
||||||
))?;
|
))?;
|
||||||
|
|
||||||
return Ok(file);
|
Ok(file)
|
||||||
}
|
}
|
||||||
|
|
||||||
enum GitSearchResult {
|
enum GitSearchResult {
|
||||||
@@ -178,9 +179,8 @@ fn search_for_git_root(path: &PathBuf) -> eyre::Result<GitSearchResult> {
|
|||||||
let entry = direntry.context("could not access file")?;
|
let entry = direntry.context("could not access file")?;
|
||||||
|
|
||||||
let file_name = entry.file_name().to_os_string();
|
let file_name = entry.file_name().to_os_string();
|
||||||
match file_name.to_str().context("could not convert to str")? {
|
if file_name.to_str().context("could not convert to str")? == ".git" {
|
||||||
".git" => return Ok(GitSearchResult::Git(entry.path())),
|
return Ok(GitSearchResult::Git(entry.path()));
|
||||||
_ => {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,10 +209,20 @@ fn search_for_dotgitignore(path: &PathBuf) -> eyre::Result<GitSearchResult> {
|
|||||||
|
|
||||||
let file_name = entry.file_name().to_os_string();
|
let file_name = entry.file_name().to_os_string();
|
||||||
|
|
||||||
match file_name.to_str().context("could not convert to str")? {
|
if file_name.to_str().context("could not convert to str")? == ".gitignore" {
|
||||||
".gitignore" => return Ok(GitSearchResult::GitIgnore(entry.path())),
|
return Ok(GitSearchResult::GitIgnore(entry.path()));
|
||||||
".git" => return Ok(GitSearchResult::Git(entry.path())),
|
}
|
||||||
_ => {}
|
}
|
||||||
|
|
||||||
|
let direntries = std::fs::read_dir(path)
|
||||||
|
.context(format!("could not open dir: {}", path.to_string_lossy()))?;
|
||||||
|
for direntry in direntries {
|
||||||
|
let entry = direntry.context("could not access file")?;
|
||||||
|
|
||||||
|
let file_name = entry.file_name().to_os_string();
|
||||||
|
|
||||||
|
if file_name.to_str().context("could not convert to str")? == ".git" {
|
||||||
|
return Ok(GitSearchResult::Git(entry.path()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
25
cuddle.yaml
Normal file
25
cuddle.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# yaml-language-server: $schema=https://git.front.kjuulh.io/kjuulh/cuddle/raw/branch/main/schemas/base.json
|
||||||
|
|
||||||
|
base: "git@git.front.kjuulh.io:kjuulh/cuddle-rust-cli-plan.git"
|
||||||
|
|
||||||
|
vars:
|
||||||
|
service: "kignore"
|
||||||
|
registry: kasperhermansen
|
||||||
|
|
||||||
|
please:
|
||||||
|
project:
|
||||||
|
owner: kjuulh
|
||||||
|
repository: gitignore
|
||||||
|
branch: main
|
||||||
|
settings:
|
||||||
|
api_url: https://git.front.kjuulh.io
|
||||||
|
actions:
|
||||||
|
rust:
|
||||||
|
|
||||||
|
components:
|
||||||
|
packages:
|
||||||
|
debian:
|
||||||
|
dev:
|
||||||
|
- git
|
||||||
|
release:
|
||||||
|
- git
|
@@ -1,5 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
gitignore $@
|
|
@@ -1,16 +0,0 @@
|
|||||||
class Kignore < Formula
|
|
||||||
desc "Easily add items to .gitignore and cleanup afterwards"
|
|
||||||
homepage "https://github.com/kjuulh/gitignore"
|
|
||||||
version '0.1.1'
|
|
||||||
license "MIT"
|
|
||||||
|
|
||||||
if OS.mac?
|
|
||||||
url "https://github.com/kjuulh/kignore/releases/download/#{version}/kignore-#{version}-x86_64-apple-darwin.tar.gz"
|
|
||||||
sha256 ""
|
|
||||||
end
|
|
||||||
|
|
||||||
def install
|
|
||||||
bin.install "kignore"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
3
renovate.json
Normal file
3
renovate.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
|
||||||
|
}
|
@@ -1,8 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
mkdir ~/.git-bins
|
|
||||||
cp git-alias/git-ignore ~/.git-bins/git-ignore
|
|
||||||
|
|
||||||
echo "Make sure to add ~/.git-bins to your PATH"
|
|
@@ -1,3 +0,0 @@
|
|||||||
fn main() -> eyre::Result<()> {
|
|
||||||
gitignore_inner::main()
|
|
||||||
}
|
|
Reference in New Issue
Block a user