Merge branch 'master' into feature/binary_as_text

This commit is contained in:
einfachIrgendwer0815 2024-10-30 12:46:11 +01:00 committed by GitHub
commit 8d82402d74
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 97 additions and 84 deletions

View File

@ -45,6 +45,7 @@
- Use bat's ANSI iterator during tab expansion, see #2998 (@eth-p) - Use bat's ANSI iterator during tab expansion, see #2998 (@eth-p)
- Support 'statically linked binary' for aarch64 in 'Release' page, see #2992 (@tzq0301) - Support 'statically linked binary' for aarch64 in 'Release' page, see #2992 (@tzq0301)
- Update options in shell completions and the man page of `bat`, see #2995 (@akinomyoga) - Update options in shell completions and the man page of `bat`, see #2995 (@akinomyoga)
- Update nix dev-dependency to v0.29.0, see #3112 (@decathorpe)
## Syntaxes ## Syntaxes
@ -56,9 +57,12 @@
- Associate JSON with Comments `.jsonc` with `json` syntax, see #2795 (@mxaddict) - Associate JSON with Comments `.jsonc` with `json` syntax, see #2795 (@mxaddict)
- Associate JSON-LD `.jsonld` files with `json` syntax, see #3037 (@vorburger) - Associate JSON-LD `.jsonld` files with `json` syntax, see #3037 (@vorburger)
- Associate `.textproto` files with `ProtoBuf` syntax, see #3038 (@vorburger) - Associate `.textproto` files with `ProtoBuf` syntax, see #3038 (@vorburger)
- Associate GeoJSON `.geojson` files with `json` syntax, see #3084 (@mvaaltola)
- Associate `.aws/{config,credentials}`, see #2795 (@mxaddict) - Associate `.aws/{config,credentials}`, see #2795 (@mxaddict)
- Associate Wireguard config `/etc/wireguard/*.conf`, see #2874 (@cyqsimon) - Associate Wireguard config `/etc/wireguard/*.conf`, see #2874 (@cyqsimon)
- Add support for [CFML](https://www.adobe.com/products/coldfusion-family.html), see #3031 (@brenton-at-pieces) - Add support for [CFML](https://www.adobe.com/products/coldfusion-family.html), see #3031 (@brenton-at-pieces)
- Map `*.mkd` files to `Markdown` syntax, see issue #3060 and PR #3061 (@einfachIrgendwer0815)
- Add syntax mapping for kubernetes config files #3049 (@cyqsimon)
## Themes ## Themes

94
Cargo.lock generated
View File

@ -3,10 +3,10 @@
version = 3 version = 3
[[package]] [[package]]
name = "adler" name = "adler2"
version = "1.0.2" version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
[[package]] [[package]]
name = "aho-corasick" name = "aho-corasick"
@ -103,9 +103,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]] [[package]]
name = "base64" name = "base64"
version = "0.21.0" version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]] [[package]]
name = "bat" name = "bat"
@ -243,6 +243,12 @@ 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 = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "cfg_aliases"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]] [[package]]
name = "clap" name = "clap"
version = "4.4.12" version = "4.4.12"
@ -489,9 +495,9 @@ checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"
[[package]] [[package]]
name = "flate2" name = "flate2"
version = "1.0.30" version = "1.0.34"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
dependencies = [ dependencies = [
"crc32fast", "crc32fast",
"miniz_oxide", "miniz_oxide",
@ -564,9 +570,9 @@ dependencies = [
[[package]] [[package]]
name = "git2" name = "git2"
version = "0.18.3" version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724"
dependencies = [ dependencies = [
"bitflags 2.4.0", "bitflags 2.4.0",
"libc", "libc",
@ -583,9 +589,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
[[package]] [[package]]
name = "globset" name = "globset"
version = "0.4.14" version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"bstr", "bstr",
@ -688,15 +694,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.149" version = "0.2.161"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1"
[[package]] [[package]]
name = "libgit2-sys" name = "libgit2-sys"
version = "0.16.2+1.7.2" version = "0.17.0+1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8" checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224"
dependencies = [ dependencies = [
"cc", "cc",
"libc", "libc",
@ -716,15 +722,6 @@ dependencies = [
"vcpkg", "vcpkg",
] ]
[[package]]
name = "line-wrap"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
dependencies = [
"safemem",
]
[[package]] [[package]]
name = "linked-hash-map" name = "linked-hash-map"
version = "0.5.6" version = "0.5.6"
@ -761,21 +758,22 @@ checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
[[package]] [[package]]
name = "miniz_oxide" name = "miniz_oxide"
version = "0.7.1" version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
dependencies = [ dependencies = [
"adler", "adler2",
] ]
[[package]] [[package]]
name = "nix" name = "nix"
version = "0.26.4" version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 2.4.0",
"cfg-if", "cfg-if",
"cfg_aliases",
"libc", "libc",
] ]
@ -811,9 +809,12 @@ dependencies = [
[[package]] [[package]]
name = "once_cell" name = "once_cell"
version = "1.19.0" version = "1.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1"
dependencies = [
"portable-atomic",
]
[[package]] [[package]]
name = "onig" name = "onig"
@ -892,18 +893,23 @@ checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
[[package]] [[package]]
name = "plist" name = "plist"
version = "1.6.0" version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef" checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016"
dependencies = [ dependencies = [
"base64", "base64",
"indexmap", "indexmap",
"line-wrap",
"quick-xml", "quick-xml",
"serde", "serde",
"time", "time",
] ]
[[package]]
name = "portable-atomic"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2"
[[package]] [[package]]
name = "powerfmt" name = "powerfmt"
version = "0.2.0" version = "0.2.0"
@ -957,9 +963,9 @@ dependencies = [
[[package]] [[package]]
name = "quick-xml" name = "quick-xml"
version = "0.31.0" version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2"
dependencies = [ dependencies = [
"memchr", "memchr",
] ]
@ -1087,12 +1093,6 @@ version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
[[package]]
name = "safemem"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
[[package]] [[package]]
name = "same-file" name = "same-file"
version = "1.0.6" version = "1.0.6"
@ -1116,18 +1116,18 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.199" version = "1.0.209"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.199" version = "1.0.209"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",

View File

@ -46,7 +46,7 @@ ansi_colours = "^1.2"
bincode = "1.0" bincode = "1.0"
console = "0.15.8" console = "0.15.8"
flate2 = "1.0" flate2 = "1.0"
once_cell = "1.19" once_cell = "1.20"
thiserror = "1.0" thiserror = "1.0"
wild = { version = "2.2", optional = true } wild = { version = "2.2", optional = true }
content_inspector = "0.2.4" content_inspector = "0.2.4"
@ -70,7 +70,7 @@ os_str_bytes = { version = "~7.0", optional = true }
run_script = { version = "^0.10.1", optional = true} run_script = { version = "^0.10.1", optional = true}
[dependencies.git2] [dependencies.git2]
version = "0.18" version = "0.19"
optional = true optional = true
default-features = false default-features = false
@ -86,7 +86,7 @@ features = ["wrap_help", "cargo"]
[target.'cfg(target_os = "macos")'.dependencies] [target.'cfg(target_os = "macos")'.dependencies]
home = "0.5.9" home = "0.5.9"
plist = "1.6.0" plist = "1.7.0"
[dev-dependencies] [dev-dependencies]
assert_cmd = "2.0.12" assert_cmd = "2.0.12"
@ -98,13 +98,13 @@ tempfile = "3.8.1"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
[target.'cfg(unix)'.dev-dependencies] [target.'cfg(unix)'.dev-dependencies]
nix = { version = "0.26.4", default-features = false, features = ["term"] } nix = { version = "0.29", default-features = false, features = ["term"] }
[build-dependencies] [build-dependencies]
anyhow = "1.0.86" anyhow = "1.0.86"
indexmap = { version = "2.3.0", features = ["serde"] } indexmap = { version = "2.3.0", features = ["serde"] }
itertools = "0.13.0" itertools = "0.13.0"
once_cell = "1.18" once_cell = "1.20"
regex = "1.10.2" regex = "1.10.2"
serde = "1.0" serde = "1.0"
serde_derive = "1.0" serde_derive = "1.0"

View File

@ -616,63 +616,59 @@ iconv -f ISO-8859-1 -t UTF-8 my-file.php | bat
注意: 当`bat`无法识别语言时你可能会需要`-l`/`--language`参数。 注意: 当`bat`无法识别语言时你可能会需要`-l`/`--language`参数。
## Development ## 开发
```bash ```bash
# Recursive clone to retrieve all submodules # 递归 clone 以获取所有子模块
git clone --recursive https://github.com/sharkdp/bat git clone --recursive https://github.com/sharkdp/bat
# Build (debug version) # 构建(调试版本)
cd bat cd bat
cargo build --bins cargo build --bins
# Run unit tests and integration tests # 运行单元测试和集成测试
cargo test cargo test
# Install (release version) # 安装(发布版本)
cargo install --path . --locked cargo install --path . --locked
# Build a bat binary with modified syntaxes and themes # 使用修改后的语法和主题构建一个 bat 二进制文件
bash assets/create.sh bash assets/create.sh
cargo install --path . --locked --force cargo install --path . --locked --force
``` ```
If you want to build an application that uses `bat`s pretty-printing 如果你想构建一个使用 `bat` 美化打印功能的应用程序,请查看 [API 文档](https://docs.rs/bat/)。请注意,当你依赖 `bat` 作为库时,必须使用 `regex-onig``regex-fancy` 作为特性。
features as a library, check out the [the API documentation](https://docs.rs/bat/).
Note that you have to use either `regex-onig` or `regex-fancy` as a feature
when you depend on `bat` as a library.
## Contributing ## 贡献指南
Take a look at the [`CONTRIBUTING.md`](CONTRIBUTING.md) guide. 请查看 [`CONTRIBUTING.md`](CONTRIBUTING.md) 指南。
## Maintainers ## 维护者
- [sharkdp](https://github.com/sharkdp) - [sharkdp](https://github.com/sharkdp)
- [eth-p](https://github.com/eth-p) - [eth-p](https://github.com/eth-p)
- [keith-hall](https://github.com/keith-hall) - [keith-hall](https://github.com/keith-hall)
- [Enselic](https://github.com/Enselic) - [Enselic](https://github.com/Enselic)
## Security vulnerabilities ## 安全漏洞
Please contact [David Peter](https://david-peter.de/) via email if you want to report a vulnerability in `bat`. 如果你想报告 `bat` 中的漏洞,请通过邮件联系 [David Peter](https://david-peter.de/)。
## Project goals and alternatives ## 项目目标和替代方案
`bat` tries to achieve the following goals: `bat` 试图实现以下目标:
- Provide beautiful, advanced syntax highlighting - 提供美观的高级语法高亮
- Integrate with Git to show file modifications - 与 Git 集成以显示文件修改
- Be a drop-in replacement for (POSIX) `cat` - 成为 (POSIX) `cat` 的替代品
- Offer a user-friendly command-line interface - 提供用户友好的命令行界面
There are a lot of alternatives, if you are looking for similar programs. See 如果你在寻找类似的程序,有很多替代方案。请参阅[本文档](doc/alternatives.md)进行比较。
[this document](doc/alternatives.md) for a comparison.
## License ## 许可证
Copyright (c) 2018-2021 [bat-developers](https://github.com/sharkdp/bat). 版权所有 (c) 2018-2021 [bat-developers](https://github.com/sharkdp/bat)。
`bat` is made available under the terms of either the MIT License or the Apache License 2.0, at your option. `bat` 可根据 MIT 许可证或 Apache 许可证 2.0 的条款使用,任选其一。
See the [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT) files for license details. 有关许可证的详细信息,请参阅 [LICENSE-APACHE](LICENSE-APACHE) 和 [LICENSE-MIT](LICENSE-MIT) 文件。

View File

@ -202,7 +202,7 @@ pub fn list_themes(cfg: &Config, config_dir: &Path, cache_dir: &Path) -> Result<
let default_theme = HighlightingAssets::default_theme(); let default_theme = HighlightingAssets::default_theme();
for theme in assets.themes() { for theme in assets.themes() {
let default_theme_info = if default_theme == theme { let default_theme_info = if !config.loop_through && default_theme == theme {
" (default)" " (default)"
} else { } else {
"" ""

View File

@ -1,3 +1,3 @@
# JSON Lines is a simple variation of JSON #2535 # JSON Lines is a simple variation of JSON #2535
[mappings] [mappings]
"JSON" = ["*.jsonl", "*.jsonc", "*.jsonld"] "JSON" = ["*.jsonl", "*.jsonc", "*.jsonld", "*.geojson"]

View File

@ -0,0 +1,2 @@
[mappings]
"Markdown" = ["*.mkd"]

View File

@ -0,0 +1,2 @@
[mappings]
"YAML" = ["/etc/kubernetes/*.conf"]

View File

@ -9,7 +9,6 @@ use tempfile::tempdir;
mod unix { mod unix {
pub use std::fs::File; pub use std::fs::File;
pub use std::io::{self, Write}; pub use std::io::{self, Write};
pub use std::os::unix::io::FromRawFd;
pub use std::path::PathBuf; pub use std::path::PathBuf;
pub use std::process::Stdio; pub use std::process::Stdio;
pub use std::thread; pub use std::thread;
@ -300,6 +299,7 @@ fn list_themes_without_colors() {
bat() bat()
.arg("--color=never") .arg("--color=never")
.arg("--decorations=always") // trick bat into setting `Config::loop_through` to false
.arg("--list-themes") .arg("--list-themes")
.assert() .assert()
.success() .success()
@ -307,6 +307,15 @@ fn list_themes_without_colors() {
.stdout(predicate::str::contains(default_theme_chunk).normalize()); .stdout(predicate::str::contains(default_theme_chunk).normalize());
} }
#[test]
fn list_themes_to_piped_output() {
bat()
.arg("--list-themes")
.assert()
.success()
.stdout(predicate::str::contains("(default)").not());
}
#[test] #[test]
#[cfg_attr(any(not(feature = "git"), target_os = "windows"), ignore)] #[cfg_attr(any(not(feature = "git"), target_os = "windows"), ignore)]
fn short_help() { fn short_help() {
@ -406,8 +415,8 @@ fn no_args_doesnt_break() {
// not exit, because in this case it is safe to read and write to the same fd, which is why // not exit, because in this case it is safe to read and write to the same fd, which is why
// this test exists. // this test exists.
let OpenptyResult { master, slave } = openpty(None, None).expect("Couldn't open pty."); let OpenptyResult { master, slave } = openpty(None, None).expect("Couldn't open pty.");
let mut master = unsafe { File::from_raw_fd(master) }; let mut master = File::from(master);
let stdin_file = unsafe { File::from_raw_fd(slave) }; let stdin_file = File::from(slave);
let stdout_file = stdin_file.try_clone().unwrap(); let stdout_file = stdin_file.try_clone().unwrap();
let stdin = Stdio::from(stdin_file); let stdin = Stdio::from(stdin_file);
let stdout = Stdio::from(stdout_file); let stdout = Stdio::from(stdout_file);