mirror of
https://github.com/lotabout/skim.git
synced 2026-09-10 07:16:23 -04:00
* ci: add .deb and .rpm packages to releases via dist Configure cargo-deb and cargo-generate-rpm to build Linux packages containing the sk executable, the man pages (sk.1, sk-tmux.1) and the bash/zsh/fish shell completions. A new reusable workflow (package.yml) builds both packages and uploads them under an artifacts-* name. It is wired into the release pipeline as a dist global-artifacts-job in dist-workspace.toml, and release.yml is regenerated with `dist generate` (not hand-edited) so dist's host job attaches the packages to the GitHub Release. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WmNevtS7EV3vXyYRTVu7Aw * ci: drop sk-tmux man page from .deb and .rpm packages Package only the sk.1 man page; the sk-tmux.1 page is no longer shipped. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WmNevtS7EV3vXyYRTVu7Aw * ci: temporarily build release artifacts on PRs Set dist pr-run-mode = "upload" so the .deb and .rpm (and the other release artifacts) are built and uploaded on pull requests, allowing the packages to be downloaded and verified before merging. This is temporary and should be reverted before merge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WmNevtS7EV3vXyYRTVu7Aw * ci: install packaging tools via taiki-e/install-action Address review feedback on package.yml: - Install cargo-deb and cargo-generate-rpm with taiki-e/install-action (prebuilt binaries) plus a Swatinem/rust-cache step, matching the patterns used in test.yml, instead of compiling them with cargo install. - Drop the `--output target/debian` flag from `cargo deb`; the default target/debian/ directory is what the collect step expects. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WmNevtS7EV3vXyYRTVu7Aw * ci: build arm64 .deb and .rpm packages too Turn the package job into a matrix that builds natively for both amd64 (ubuntu-22.04) and arm64 (ubuntu-22.04-arm), producing a .deb and .rpm per architecture. Artifacts are uploaded under per-arch names so dist's host job attaches all of them to the release. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WmNevtS7EV3vXyYRTVu7Aw * ci: submit releases to winget via winget-releaser Add a dist publish job that, after the GitHub Release is created, submits the new version to the Windows Package Manager Community Repository using vedantmgoyal9/winget-releaser and the Windows .zip artifact dist already attaches to the release. Uses the package identifier and installer regex from skim-rs/skim#769: identifier: skim-rs.skim installers-regex: '-pc-windows-msvc\.zip$' Wired in through publish-jobs in dist-workspace.toml; release.yml is regenerated with `dist generate` (not hand-edited). Prereleases are never submitted. Requires a WINGET_TOKEN secret (a public_repo-scoped PAT that owns a microsoft/winget-pkgs fork under skim-rs). Refs: skim-rs/skim#769 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WmNevtS7EV3vXyYRTVu7Aw * ci: validate package version against the release plan Consume the `plan` input dist passes to the package job: assert the crate version equals the version dist planned for this release, so the source-built .deb/.rpm can't silently drift from the release. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WmNevtS7EV3vXyYRTVu7Aw * Update .github/workflows/winget.yml Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update .github/workflows/package.yml Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * docs: document .deb, .rpm, winget and scoop installation Add the new install methods to the README: winget and Scoop rows plus a Debian/RPM section with install commands, covering amd64 and arm64. Also clarify in winget.yml that WINGET_TOKEN must be a classic PAT (fine-grained tokens can't open the winget-pkgs PR). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WmNevtS7EV3vXyYRTVu7Aw * fix: install cargo-deb manually to avoid libc version mismatch * ci: use blacksmith runners for long job * fix: version spec for cargo install * chore: revert pr action upload --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
175 lines
5.8 KiB
TOML
175 lines
5.8 KiB
TOML
[package]
|
|
name = "skim"
|
|
version = "5.3.1"
|
|
authors = ["Loric ANDRE", "Zhang Jinzhou <lotabout@gmail.com>"]
|
|
description = "Fuzzy Finder in rust!"
|
|
documentation = "https://docs.rs/skim"
|
|
homepage = "https://github.com/skim-rs/skim"
|
|
repository = "https://github.com/skim-rs/skim"
|
|
readme = "README.md"
|
|
keywords = ["fuzzy", "menu", "util"]
|
|
license = "MIT"
|
|
edition = "2024"
|
|
rust-version = "1.91"
|
|
default-run = "sk"
|
|
|
|
[lib]
|
|
name = "skim"
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "sk"
|
|
path = "src/bin/main.rs"
|
|
required-features = ["cli"]
|
|
|
|
[features]
|
|
# Default is destined to the CLI, not to library usage.
|
|
default = ["cli", "frizbee", "image", "listen"]
|
|
# Everything needed to use skim as a cli (argument parsing, shell integrations...). This should not be needed for most libraries.
|
|
cli = ["dep:clap", "dep:clap_complete", "dep:clap_complete_nushell", "dep:shlex", "dep:env_logger", "dep:clap_mangen"]
|
|
# Include frizbee as a matching algorithm
|
|
frizbee = ["dep:frizbee"]
|
|
# Enable image previews (renders the preview argument as an image)
|
|
image = ["dep:image", "dep:ratatui-image"]
|
|
# Enable the IPC socket (--listen / --remote), driving skim from other processes
|
|
listen = ["dep:interprocess", "dep:ron", "dep:serde"]
|
|
# Enable gungraun (Valgrind-based) benchmarks
|
|
gungraun = ["dep:gungraun"]
|
|
|
|
[profile.release]
|
|
lto = true
|
|
codegen-units = 1
|
|
opt-level = 2
|
|
strip = true
|
|
|
|
# Kept for compatibility
|
|
[profile.dist]
|
|
inherits = "release"
|
|
|
|
[profile.release-debug]
|
|
inherits = "release"
|
|
debug = true
|
|
strip = false
|
|
|
|
[lints.rust]
|
|
missing_docs = "warn"
|
|
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(coverage, coverage_nightly)'] }
|
|
[lints.clippy]
|
|
pedantic = { level = "warn", priority = -1 }
|
|
incompatible_msrv = "warn"
|
|
collapsible_match = "allow"
|
|
default_trait_access = "allow"
|
|
|
|
[dependencies]
|
|
ansi-to-tui = "8.0.1"
|
|
assert_enum_variants = "0.1.2"
|
|
clap = { version = "4.6.1" , optional = true, features = ["cargo", "derive", "unstable-markdown"] }
|
|
clap_complete = { version = "4.6.5", optional = true }
|
|
clap_complete_nushell = { version = "4.6.0", optional = true }
|
|
clap_mangen = { version = "0.3.0", optional = true }
|
|
eyre = "0.6.12"
|
|
# Crossterm's version is selected by ratatui
|
|
crossterm = { version = ">=0.0.0", features = ["event-stream", "use-dev-tty", "libc"] }
|
|
derive_builder = "0.20.2"
|
|
derive_more = { version = "2.1.1", features = ["debug", "eq"] }
|
|
env_logger = { version = "0.11.10", optional = true, features = ["humantime"] }
|
|
frizbee = { version = "=0.11.0", optional = true }
|
|
futures = "0.3.32"
|
|
gungraun = { version = "0.19.1", optional = true }
|
|
image = { version = "0.25.10", optional = true, default-features = false, features = ["png", "jpeg", "gif", "webp"] }
|
|
indexmap = "2.13.1"
|
|
interprocess = { version = "2.4.2", features = ["tokio"], optional = true }
|
|
kanal = "0.1.1"
|
|
log = "0.4.31"
|
|
memchr = "2.8.1"
|
|
mimalloc = { version = "0.1.48", features = ["v3"] }
|
|
nix = { version = "0.31.3", features = ["fs", "poll"] }
|
|
portable-pty = "0.9.0"
|
|
ratatui = "0.30.0"
|
|
ratatui-image = { version = "11.0.4", features = ["crossterm"], default-features = false, optional = true }
|
|
regex = "1.12.3"
|
|
roff = "1.1.1"
|
|
ron = { version = "0.12.1", optional = true }
|
|
serde = { version = "1.0.228", features = ["derive"], optional = true }
|
|
shell-quote = "0.7.2"
|
|
shlex = { version = "2.0.1", optional = true }
|
|
tempfile = "3.27.0"
|
|
thiserror = "2.0.18"
|
|
thread_local = "1.1.9"
|
|
tokio = { version = "1.52.3", features = ["macros", "net", "rt-multi-thread", "sync", "time", "tokio-macros"] }
|
|
tokio-util = "0.7.18"
|
|
tui-term = "0.3.4"
|
|
unicode-display-width = "0.3.0"
|
|
unicode-normalization = "0.1.25"
|
|
which = "8.0.2"
|
|
|
|
[dev-dependencies]
|
|
criterion = { version = "0.8.2", features = ["async_tokio"] }
|
|
gnuplot = "0.0.46"
|
|
insta = "1.47"
|
|
rand = "0.10.0"
|
|
serde_json = { version = "=1.0.150" }
|
|
serial_test = "=3.5.0"
|
|
|
|
[[bench]]
|
|
name = "read_and_match"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "filter"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "partial"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "matcher_micro"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "gungraun"
|
|
harness = false
|
|
required-features = ["gungraun"]
|
|
|
|
[[bench]]
|
|
name = "cli"
|
|
harness = false
|
|
bench = false
|
|
|
|
[package.metadata.wix]
|
|
upgrade-guid = "6DDAED06-EBE2-41C4-94F5-CB03F2A4B92E"
|
|
path-guid = "05D1A327-19E0-4C82-B5EC-6B28E40C691B"
|
|
license = false
|
|
eula = false
|
|
|
|
# Debian package (.deb) built via `cargo deb`.
|
|
# Ships the `sk` executable, the man pages and the shell completions.
|
|
[package.metadata.deb]
|
|
maintainer = "Loric ANDRE, Zhang Jinzhou <lotabout@gmail.com>"
|
|
copyright = "The skim developers"
|
|
section = "utils"
|
|
priority = "optional"
|
|
extended-description = "skim is a general purpose fuzzy finder written in Rust, usable as a command line tool and as a library."
|
|
assets = [
|
|
["target/release/sk", "usr/bin/", "755"],
|
|
["man/man1/sk.1", "usr/share/man/man1/", "644"],
|
|
["shell/completion.bash", "usr/share/bash-completion/completions/sk", "644"],
|
|
["shell/completion.zsh", "usr/share/zsh/vendor-completions/_sk", "644"],
|
|
["shell/completion.fish", "usr/share/fish/vendor_completions.d/sk.fish", "644"],
|
|
["README.md", "usr/share/doc/skim/README.md", "644"],
|
|
]
|
|
|
|
# RPM package (.rpm) built via `cargo generate-rpm`.
|
|
# Ships the `sk` executable, the man pages and the shell completions.
|
|
[package.metadata.generate-rpm]
|
|
assets = [
|
|
{ source = "target/release/sk", dest = "/usr/bin/sk", mode = "755" },
|
|
{ source = "man/man1/sk.1", dest = "/usr/share/man/man1/sk.1", mode = "644", doc = true },
|
|
{ source = "shell/completion.bash", dest = "/usr/share/bash-completion/completions/sk", mode = "644" },
|
|
{ source = "shell/completion.zsh", dest = "/usr/share/zsh/site-functions/_sk", mode = "644" },
|
|
{ source = "shell/completion.fish", dest = "/usr/share/fish/vendor_completions.d/sk.fish", mode = "644" },
|
|
{ source = "README.md", dest = "/usr/share/doc/skim/README.md", mode = "644", doc = true },
|
|
{ source = "LICENSE", dest = "/usr/share/doc/skim/LICENSE", mode = "644", doc = true },
|
|
]
|