10个版本 (5个破坏性更新)

0.7.0 2024年3月4日
0.6.1 2023年6月23日
0.5.0 2022年4月18日
0.4.2 2021年8月19日
0.3.0 2018年12月24日

#299解析实现

Download history 1/week @ 2024-06-02

206 每月下载量

GPL-3.0-only

3.5MB
3K SLoC

EMerge LOg Parser

Emlop解析emerge日志(由portageGentoo包管理器生成),以提供有用的信息,如合并历史和合并时间预测。

它从genlopqlop中汲取灵感,但旨在更快、更精确、更易用,请参阅比较

用法

Emlop分为命令。命令名称和参数可以缩写(因此 emlop log --from '1 day' --duration humanemlop l --f1d --dur h 相同),并且提供shell自动完成功能。请参阅 emlop --helpemlop <command> --help 获取完整和最新的用法信息。

常用选项

所有命令共享这些参数,影响解析和输出

Options:
  -F, --logfile <file>  Location of emerge log file
  -v...                 Increase verbosity (can be given multiple times)
  -h, --help            Print help (see more with '--help')
  -V, --version         Print version
Filter:
  -f, --from <date>  Only parse log entries after <date>
  -t, --to <date>    Only parse log entries before <date>
Format:
  -H, --header [<bool>]    Show table header
      --duration <format>  Output durations in different formats
      --date <format>      Output dates in different formats
      --utc [<bool>]       Parse/display dates in UTC instead of local time
      --color [<bool>]     Enable color (yes/no/auto)
  -o, --output <format>    Ouput format (columns/tab/auto)

使用 log 列出合并、取消合并和同步

Log demo

日志特定选项

Format:
      --starttime [<bool>]  Display start time instead of end time
Filter:
  [search]...           Show only packages/repos matching <search>
  -e, --exact           Match <search> using plain string
  -s, --show <m,u,s,a>  Show (m)erges, (u)nmerges, (s)yncs, and/or (a)ll
  -N, --first [<num>]   Show only the first <num> entries
  -n, --last [<num>]    Show only the last <num> entries

请注意,emaint sync 当前 不会写入emerge.log,因此如果您使用 emaint,则 emlop l --show s 将显示为空。请改用 emerge --synceix-sync

使用 predict 估计合并所需的时间

Predict demo

预测特定参数

Options:
      --tmpdir <dir>    Location of portage tmpdir
Filter:
  -s, --show <e,m,t,a>     Show (e)emerge processes, (m)erges, (t)otal, and/or (a)ll
  -N, --first [<num>]      Show only the first <num> entries
  -n, --last [<num>]       Show only the last <num> entries
      --resume [<source>]  Use main, backup, either, or no portage resume list
Stats:
      --limit <num>     Use the last <num> merge times to predict durations
      --avg <fn>        Select function used to predict durations
      --unknown <secs>  Assume unkown packages take <secs> seconds to merge

使用 stats 显示汇总统计信息

Stats demo

与统计相关的参数

Filter:
  [search]...           Show only packages/repos matching <search>
  -e, --exact           Match <search> using plain string
  -s, --show <p,t,s,a>  Show (p)ackages, (t)otals, (s)yncs, and/or (a)ll
Stats:
  -g, --groupby <y,m,w,d,n>  Group by (y)ear, (m)onth, (w)eek, (d)ay, (n)one
      --limit <num>          Use the last <num> merge times to predict durations
      --avg <fn>             Select function used to predict durations

其他命令

  • complete 生成shell补全
  • accuracy 有助于分析预测的准确性

配置文件

Config demo

Emlop 从 $HOME/.config/emlop.toml 读取默认设置。将环境变量 $EMLOP_CONFIG 设置为更改文件位置,或将其设置为 """ 以禁用。

示例文件 记录了格式,并列出了支持选项。命令行参数优先于配置文件。

安装

使用 portage

emerge emlop

ebuild 也维护在 moltonel 模拟层中,您可以使用 eselect-repository 启用。

使用 cargo

安装 Rust 并使用 portagerustup。确保 ~/.cargo/bin/ 在您的 $PATH 中。

当前支持的最小 Rust 版本是 1.71。当使用旧的 rustc 版本构建 emlop 时,您可能需要将 --locked 传递给 cargo install,以使用显式测试的依赖项版本。

从 crates.io

cargo install -f emlop

从 git

git clone https://github.com/vincentdephily/emlop
cd emlop
cargo test
cargo install -f --path .

Shell 完全匹配

emlop complete bash > /usr/share/bash-completion/completions/emlop
emlop complete zsh > /usr/share/zsh/site-functions/_emlop
emlop complete fish > /usr/share/fish/vendor_completions.d/emlop.fish

贡献

提前感谢。请参阅 贡献 获取指导。Emlop 以 GPLv3 许可。

依赖项

~7–16MB
~195K SLoC