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.