zigcli
zigcli copied to clipboard
A toolkit for building command lines programs in Zig.
#+TITLE: Zigcli #+DATE: 2023-10-21T12:09:48+0800 #+LASTMOD: 2024-05-02T18:01:55+0800 #+TYPE: docs
[[https://github.com/jiacai2050/zigcli/stargazers][https://img.shields.io/github/stars/jiacai2050/zigcli.svg]] [[https://github.com/jiacai2050/zigcli/blob/main/LICENSE][https://img.shields.io/github/license/jiacai2050/zigcli.svg]] [[https://github.com/jiacai2050/loc/actions/workflows/CI.yml][https://github.com/jiacai2050/loc/actions/workflows/CI.yml/badge.svg]] [[https://github.com/jiacai2050/loc/actions/workflows/binary.yml][https://github.com/jiacai2050/loc/actions/workflows/binary.yml/badge.svg]] [[https://img.shields.io/badge/zig%20version-0.12.0-blue.svg]]
#+begin_quote [[/][Zigcli]] is a toolkit for building command lines programs in Zig. #+end_quote
This package provides:
-
Modules :: Zig [[https://ziglang.org/download/0.11.0/release-notes.html#Package-Management][modules]] to help developers build their awesome cli programs. Currently there are:
- =simargs=, which is used to parse arguments
- =pretty-table=, which is used to print aligned and formatted tables
-
Programs :: Practical command line programs which can be used directly. Currently there are:
- =loc=, lines of code.
- =tree=, list contents of directories in a tree-like format.
- =yes=, output a string repeatedly until killed.
- =repeat=, repeat a command until it succeeds.
- =pidof=, like [[https://man7.org/linux/man-pages/man1/pidof.1.html][pidof]], but for macOS.
- =night-shift=, control [[https://support.apple.com/guide/mac-help/use-night-shift-mchl97bc676d/mac][Night Shift]] in macOS.
- =dark-mode=, control dark mode in macOS.
- Install ** Programs Prebuilt binaries can be found in [[https://github.com/jiacai2050/loc/actions/workflows/binary.yml][CI's artifacts]], or you can build from source: #+begin_src bash git clone https://github.com/jiacai2050/zigcli.git #+end_src Then build with #+begin_src bash make build #+end_src
#+begin_quote To build zigcli locally, Zig master is required, which can be downloaded [[https://ziglang.org/download/][here]]. #+end_quote
** Modules =zigcli= support [[https://ziglang.org/download/0.11.0/release-notes.html#Package-Management][package manager]] introduced in Zig 0.11.
#+begin_src bash zig fetch --save=zigcli https://github.com/jiacai2050/zigcli/archive/${COMMIT}.tar.gz #+end_src
#+RESULTS:
Replace ~${COMMIT}~ with a real one, then in your =build.zig=, import the module like this:
#+begin_src zig const zigcli = b.dependency("zigcli", .{});
// Currently zigcli provide two modules. exe.root_module.addImport("simargs", zigcli.module("simargs")); exe.root_module.addImport("pretty-table", zigcli.module("pretty-table")); #+end_src
-
Who's Using If you're using =zigcli=, and would like to be added here, welcome to [[https://github.com/jiacai2050/zigcli/pulls][open a PR]].
-
Roadmap ** Loc
- Performance, at least comparable with [[https://github.com/cgag/loc][cgag/loc]] [[https://github.com/jiacai2050/loc/issues/1][#1]]
- More options, such as =--exclude
= - Support multiline comment
- License MIT, see [[https://github.com/jiacai2050/zigcli/blob/main/LICENSE][LICENSE]] for details.