box-cli-maker alternatives and similar packages
Based on the "Standard CLI" category.
Alternatively, view box-cli-maker alternatives based on common mentions on social networks and blogs.
-
urfave/cli
A simple, fast, and fun package for building command line apps in Go -
elvish
Elvish = Expressive Programming Language + Versatile Interactive Shell -
survey
A golang library for building interactive and accessible prompts with full support for windows and posix terminals. -
kingpin
CONTRIBUTIONS ONLY: A Go (golang) command line and flag parser -
The Platinum Searcher
A code search tool similar to ack and the_silver_searcher(ag). It supports multi platforms and multi encodings. -
pflag
Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags. -
readline
Readline is a pure go(golang) implementation for GNU-Readline kind library -
mitchellh/cli
A Go library for implementing command-line interfaces. -
docopt.go
A command-line arguments parser that will make you smile. -
complete
bash completion written in go + bash completion for go command -
flaggy
Idiomatic Go input parsing with subcommands, positional values, and flags at any position. No required project or package layout and no external dependencies. -
wmenu
An easy to use menu structure for cli applications that prompts users to make choices. -
commandeer
Automatically sets up command line flags based on struct fields and tags. -
ukautz/clif
Another CLI framework for Go. It works on my machine. -
flag
Flag is a simple but powerful command line option parsing library for Go support infinite level subcommand -
cmdr
POSIX-compliant command-line UI (CLI) parser and Hierarchical-configuration operations -
wlog
A simple logging interface that supports cross-platform color and concurrency. -
go-getoptions
Fully featured Go (golang) command line option parser with built-in auto-completion support. -
flagvar
A collection of CLI argument types for the Go `flag` package. -
argv
A Go library to split command line string as arguments array using the bash syntax. -
Go-Console
GoConsole: the golang component that eases the creation of beautiful command line interfaces. -
command-chain
A go library for easy configure and run command chains. Such like pipelining in unix shells.
Static code analysis for 29 languages.
Do you think we are missing an alternative of box-cli-maker or a related project?
Popular Comparisons
README
Features
- Make a Terminal Box in 8️⃣ inbuilt different styles
- 16 Inbuilt Colors and True Color Support 🎨
- Custom Title Positions 📏
- Make your Terminal Box style 📦
- Support for ANSI, Tabbed, Multi-line and Line Wrapping boxes 📑
- Align the text according to your needs 📐
- Unicode, Emoji and Windows Console Support 😋
- Written in 🇬 🇴
Installation
go get github.com/Delta456/box-cli-maker/v2
Usage
In main.go
package main
import "github.com/Delta456/box-cli-maker/v2"
func main() {
Box := box.New(box.Config{Px: 2, Py: 5, Type: "Single", Color: "Cyan"})
Box.Print("Box CLI Maker", "Highly Customized Terminal Box Maker")
}
box.New(config Config)
takes Box Config
and returns a Box
from the given Config
.
- Parameters
Px
: Horizontal PaddingPy
: Vertical PaddingContentAlign
: Content Alignment inside Box i.e.Center
,Left
andRight
Type
: Box TypeTitlePos
: Title Position of Box i.e.Inside
,Top
andBottom
Color
: Box ColorTitleColor
: Title ColorContentColor
: Content ColorAllowWrapping
: Flag to allow customContent
wrappingWrappingLimit
: Wrap theContent
up to the Limit
Box
Methods
Box.Print(title, lines string)
prints Box from the specified arguments.
- Parameters
title
: Box Titlelines
: Box Content
Box.Println(title, lines string)
prints Box in a newline from the specified arguments.
- Parameters
title
: Box Titlelines
: Box Content
Box.String(title, lines string) string
returns string
representation of Box.
- Parameters
title
: Box Titlelines
: Box Content
Box Types
Single
Single Double
Double
Double Single
Bold
Round
Hidden
Classic
Title Positions
Inside
Top
Bottom
Custom Box
A Custom Box can be created by using the built-in Box struct provided by the module.
type Box struct {
TopRight string // TopRight Corner Symbols
TopLeft string // TopLeft Corner Symbols
Vertical string // Vertical Bar Symbols
BottomRight string // BottomRight Corner Symbols
BottomLeft string // BottomLeft Corner Symbols
Horizontal string // Horizontal Bar Symbols
Config // Box Config
}
Usage
In main.go
:
package main
import "github.com/Delta456/box-cli-maker/v2"
func main() {
config := box.Config{Px: 2, Py: 3, Type: "", TitlePos: "Inside"}
boxNew := box.Box{TopRight: "*", TopLeft: "*", BottomRight: "*", BottomLeft: "*", Horizontal: "-", Vertical: "|", Config: config}
boxNew.Println("Box CLI Maker", "Make Highly Customized Terminal Boxes")
}
More examples can be found in the examples/
folder.
Color Types
Color support is provided by the gookit/color module from which it uses FgColor
and FgHiColor
. Color
is a key for the following maps:
fgColors map[string]color.Color = {
"Black": color.FgBlack,
"Blue": color.FgBlue,
"Red": color.FgRed,
"Green": color.FgGreen,
"Yellow": color.FgYellow,
"Cyan": color.FgCyan,
"Magenta": color.FgMagenta,
"White": color.FgWhite,
}
fgHiColors map[string]color.Color = {
"HiBlack": color.FgDarkGray,
"HiBlue": color.FgLightBlue,
"HiRed": color.FgLightRed,
"HiGreen": color.FgLightGreen,
"HiYellow": color.FgLightYellow,
"HiCyan": color.FgLightCyan,
"HiMagenta": color.FgLightMagenta,
"HiWhite": color.FgLightWhite,
}
If you want High-Intensity Colors then the Color name must start with Hi
. If the Color option is empty or invalid then no colour is applied.
True Color is also possible though you need to provide it either as
uint
or[3]uint
.[3]uint
's elements all must be in a range of[0, 0xFF]
anduint
in range of[0x000000, 0xFFFFFF]
.
As a convenience, if the terminal doesn't support True Color then it will round off according to the terminal's max supported colours which makes it easier for the users not to worry about other terminals in most cases.
Here's a list of 24-bit supported terminals and 8 bit supported terminals.
This module also enables True Color and 256 Colors support on Windows Console through Virtual Terminal Processing but you need to have at least Windows 10 Version 1511 for 256 colors or Windows 10 Version 1607 for True Color Support.
4-bit Colors are now standardized so they should be supported by all Terminals now.
If ConEmu
or ANSICON
is installed for Windows systems then it will also be detected. It is highly recommended to use the latest versions of both of them to have the best experience.
Content Wrapping
This library allows the usage of custom wrapping of Content
so that the Box formed will be created according to your own needs.
To enable this Config.AllowWrapping
must be set to true
plus you can also provide your own wrapping limit via Config.WrappingLimit
which has a default value of 2*TermWidth/3
where TermWidth
is the current terminal's width.
Note
1. Vertical Alignment
As different terminals have different fonts by default, the right vertical alignment may not be aligned well. You will have to change your font accordingly to make it work.
2. Limitations of Unicode and Emoji
It uses mattn/go-runewidth for Unicode and Emoji support though there are some limitations:
Windows Terminal
,ConEmu
andMintty
are the only known terminal emulators which can render Unicode and Emojis properly on Windows.- Indic Text only works on very few Terminals.
- It is recommended not to use this for Online Playgrounds like
Go Playground
andRepl.it
,CI/CDs
etc. because they use a font that only has ASCII support and other Character Sets are used, which becomes problematic for finding the length as the font changes at runtime. - Some changes may be needed to your font which supports Unicode and Emojis else the right vertical alignment may likely break.
3. Terminal Color Detection
It is possible to round off True Color provided to 8-bit or 4-bit according to your terminal's maximum capacity.
There is no standardized way of detecting the terminal's maximum color capacity so the way of detecting your terminal might not work for you. If you have a fix for your terminal then you can always make a PR.
The following two points are only applicable for Unix systems:
If the module can't detect the True Color of the terminal then your environment variable
COLORTERM
must be changed totruecolor
or24bit
for True Color support.If Targetting 8-bit color-based terminals and the module couldn't detect it, then the environment variable
TERM
must be set to the name of the terminal emulator with256color
as a suffix likexterm-256color
.
There might be no color effect for very old terminals like Windows Console (Legacy Mode)
or TERM
environment variable which gives DUMB
so the module will output some garbage value or a warning if used.
It is not recommended to use this module with color effect in Online Playgrounds
, CI/CD
, Browsers
etc, as few may support color and this is hard to detect in general. If there is a possible way, then open an issue and address the solution!
4. Tabs
This library supports the usage of tabs but their use should be limited.
Projects using Box CLI Maker
- kubernetes/minikube: Run Kubernetes locally.
- +Many More!
Acknowledgements
I thank the following people and their packages whom I have studied and was able to port to Go accordingly.
Also special thanks to @elimsteve who helped me to optimize the code and told me the best possible ways to fix my problems, @JalonSolov for tab lines support and Kunal Raghav for making the library's logo.
Kudos to moul/golang-repo-template for their Go template.
License
Licensed under [MIT](LICENSE)
*Note that all licence references and agreements mentioned in the box-cli-maker README section above
are relevant to that project's source code only.