mirror of
https://github.com/sharkdp/hexyl.git
synced 2026-10-30 09:05:54 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
abc20a380c | ||
|
|
dd89c22327 | ||
|
|
45a557e0df | ||
|
|
73cfd05a10 | ||
|
|
37e9ef6a64 | ||
|
|
568f38ae77 | ||
|
|
6e0bff2cc5 | ||
|
|
1783fe6a9b | ||
|
|
733b9e12e4 | ||
|
|
19198c2aac | ||
|
|
c65b298e60 | ||
|
|
f986c196d2 |
No files matched your search
@@ -76,7 +76,8 @@ jobs:
|
|||||||
- { target: i686-pc-windows-msvc , os: windows-2019 }
|
- { target: i686-pc-windows-msvc , os: windows-2019 }
|
||||||
- { target: i686-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
- { target: i686-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
||||||
- { target: i686-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
- { target: i686-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
||||||
- { target: x86_64-apple-darwin , os: macos-12 }
|
- { target: x86_64-apple-darwin , os: macos-13 }
|
||||||
|
- { target: aarch64-apple-darwin , os: macos-15 }
|
||||||
- { target: x86_64-pc-windows-gnu , os: windows-2019 }
|
- { target: x86_64-pc-windows-gnu , os: windows-2019 }
|
||||||
- { target: x86_64-pc-windows-msvc , os: windows-2019 }
|
- { target: x86_64-pc-windows-msvc , os: windows-2019 }
|
||||||
- { target: x86_64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
- { target: x86_64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
||||||
|
|||||||
@@ -1,3 +1,21 @@
|
|||||||
|
# unreleased
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
## Bugfixes
|
||||||
|
|
||||||
|
|
||||||
|
# v0.16.0
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
* New `--print-color-table` option, see #229 (@sahinfalcon)
|
||||||
|
|
||||||
|
## Bugfixes
|
||||||
|
|
||||||
|
- Throw an error when try to view a directory, see #234 (@Integral-Tech)
|
||||||
|
|
||||||
|
|
||||||
# v0.15.0
|
# v0.15.0
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|||||||
Generated
+1
-1
@@ -217,7 +217,7 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hexyl"
|
name = "hexyl"
|
||||||
version = "0.15.0"
|
version = "0.16.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"assert_cmd",
|
"assert_cmd",
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@ license = "MIT/Apache-2.0"
|
|||||||
name = "hexyl"
|
name = "hexyl"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
repository = "https://github.com/sharkdp/hexyl"
|
repository = "https://github.com/sharkdp/hexyl"
|
||||||
version = "0.15.0"
|
version = "0.16.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.74"
|
rust-version = "1.74"
|
||||||
|
|
||||||
|
|||||||
@@ -17,19 +17,6 @@ of bytes (NULL bytes, printable ASCII characters, ASCII whitespace characters, o
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Color Reference
|
|
||||||
|
|
||||||
|Type of Byte|Color|ANSI Code |
|
|
||||||
|---|---|---|
|
|
||||||
|NULL| Bright Black|90|
|
|
||||||
|OFFSET| Bright Black|90|
|
|
||||||
|ASCII Printable| Cyan|36|
|
|
||||||
|ASCII Whitespace| Green|32|
|
|
||||||
|ASCII Other| Green|32|
|
|
||||||
|Non-ASCII| Yellow|33|
|
|
||||||
|
|
||||||
*Colors taken from the Ubuntu terminal color scheme, they could look different in your terminal*
|
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -189,6 +176,10 @@ sudo snap install hexyl
|
|||||||
scoop install hexyl
|
scoop install hexyl
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Via [X-CMD](https://x-cmd.com)
|
||||||
|
```
|
||||||
|
x env use hexyl
|
||||||
|
```
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
+60
-5
@@ -6,7 +6,7 @@ use std::path::PathBuf;
|
|||||||
use clap::builder::ArgPredicate;
|
use clap::builder::ArgPredicate;
|
||||||
use clap::{ArgAction, Parser, ValueEnum};
|
use clap::{ArgAction, Parser, ValueEnum};
|
||||||
|
|
||||||
use anyhow::{anyhow, Context, Result};
|
use anyhow::{anyhow, bail, Context, Result};
|
||||||
|
|
||||||
use const_format::formatcp;
|
use const_format::formatcp;
|
||||||
|
|
||||||
@@ -16,6 +16,11 @@ use terminal_size::terminal_size;
|
|||||||
|
|
||||||
use hexyl::{Base, BorderStyle, CharacterTable, Endianness, Input, PrinterBuilder};
|
use hexyl::{Base, BorderStyle, CharacterTable, Endianness, Input, PrinterBuilder};
|
||||||
|
|
||||||
|
use hexyl::{
|
||||||
|
COLOR_ASCII_OTHER, COLOR_ASCII_PRINTABLE, COLOR_ASCII_WHITESPACE, COLOR_NONASCII, COLOR_NULL,
|
||||||
|
COLOR_RESET,
|
||||||
|
};
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests;
|
mod tests;
|
||||||
|
|
||||||
@@ -179,6 +184,10 @@ struct Opt {
|
|||||||
conflicts_with("panels")
|
conflicts_with("panels")
|
||||||
)]
|
)]
|
||||||
terminal_width: Option<NonZeroU64>,
|
terminal_width: Option<NonZeroU64>,
|
||||||
|
|
||||||
|
/// Print a table showing how different types of bytes are colored.
|
||||||
|
#[arg(long)]
|
||||||
|
print_color_table: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, ValueEnum)]
|
#[derive(Clone, Debug, Default, ValueEnum)]
|
||||||
@@ -231,10 +240,21 @@ impl From<GroupSize> for u8 {
|
|||||||
fn run() -> Result<()> {
|
fn run() -> Result<()> {
|
||||||
let opt = Opt::parse();
|
let opt = Opt::parse();
|
||||||
|
|
||||||
|
if opt.print_color_table {
|
||||||
|
return print_color_table().map_err(|e| anyhow!(e));
|
||||||
|
}
|
||||||
|
|
||||||
let stdin = io::stdin();
|
let stdin = io::stdin();
|
||||||
|
|
||||||
let mut reader = match opt.file {
|
let mut reader = match opt.file {
|
||||||
Some(filename) => Input::File(File::open(filename)?),
|
Some(filename) => {
|
||||||
|
if filename.is_dir() {
|
||||||
|
bail!("'{}' is a directory.", filename.to_string_lossy());
|
||||||
|
}
|
||||||
|
let file = File::open(&filename)?;
|
||||||
|
|
||||||
|
Input::File(file)
|
||||||
|
}
|
||||||
None => Input::Stdin(stdin.lock()),
|
None => Input::Stdin(stdin.lock()),
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -409,10 +429,9 @@ fn run() -> Result<()> {
|
|||||||
|
|
||||||
let character_table = opt.character_table;
|
let character_table = opt.character_table;
|
||||||
|
|
||||||
let stdout = io::stdout();
|
let mut stdout = BufWriter::new(io::stdout().lock());
|
||||||
let mut stdout_lock = BufWriter::new(stdout.lock());
|
|
||||||
|
|
||||||
let mut printer = PrinterBuilder::new(&mut stdout_lock)
|
let mut printer = PrinterBuilder::new(&mut stdout)
|
||||||
.show_color(show_color)
|
.show_color(show_color)
|
||||||
.show_char_panel(show_char_panel)
|
.show_char_panel(show_char_panel)
|
||||||
.show_position_panel(show_position_panel)
|
.show_position_panel(show_position_panel)
|
||||||
@@ -468,6 +487,42 @@ impl From<NonNegativeI64> for u64 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn print_color_table() -> io::Result<()> {
|
||||||
|
let mut stdout = BufWriter::new(io::stdout().lock());
|
||||||
|
|
||||||
|
writeln!(stdout, "hexyl color reference:\n")?;
|
||||||
|
|
||||||
|
// NULL bytes
|
||||||
|
stdout.write_all(COLOR_NULL)?;
|
||||||
|
writeln!(stdout, "⋄ NULL bytes (0x00)")?;
|
||||||
|
stdout.write_all(COLOR_RESET)?;
|
||||||
|
|
||||||
|
// ASCII printable
|
||||||
|
stdout.write_all(COLOR_ASCII_PRINTABLE)?;
|
||||||
|
writeln!(stdout, "a ASCII printable characters (0x20 - 0x7E)")?;
|
||||||
|
stdout.write_all(COLOR_RESET)?;
|
||||||
|
|
||||||
|
// ASCII whitespace
|
||||||
|
stdout.write_all(COLOR_ASCII_WHITESPACE)?;
|
||||||
|
writeln!(stdout, "_ ASCII whitespace (0x09 - 0x0D, 0x20)")?;
|
||||||
|
stdout.write_all(COLOR_RESET)?;
|
||||||
|
|
||||||
|
// ASCII other
|
||||||
|
stdout.write_all(COLOR_ASCII_OTHER)?;
|
||||||
|
writeln!(
|
||||||
|
stdout,
|
||||||
|
"• ASCII control characters (except NULL and whitespace)"
|
||||||
|
)?;
|
||||||
|
stdout.write_all(COLOR_RESET)?;
|
||||||
|
|
||||||
|
// Non-ASCII
|
||||||
|
stdout.write_all(COLOR_NONASCII)?;
|
||||||
|
writeln!(stdout, "× Non-ASCII bytes (0x80 - 0xFF)")?;
|
||||||
|
stdout.write_all(COLOR_RESET)?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Default, Hash, Eq, Ord, PartialEq, PartialOrd)]
|
#[derive(Clone, Copy, Debug, Default, Hash, Eq, Ord, PartialEq, PartialOrd)]
|
||||||
pub struct PositiveI64(i64);
|
pub struct PositiveI64(i64);
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user