• Stars
    star
    209
  • Rank 188,325 (Top 4 %)
  • Language
    Go
  • License
    MIT License
  • Created over 3 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Highly customizable and idiomatic Go CLI app framework 👌

Nice 👌

Nice is a highly customizable and lightweight framework for crafting CLI apps.

Nice respects idiomatic Go code and focuses to be clear, efficient and easy to write and maintain.

You can use it as a full-featured non-opinionated framework or use any nice packages as stand-alone libraries.

I hope you'll enjoy your nice CLI app!

Banner


Table of Contents


Hello, Nice!

Let's start with your first Nice CLI app.

First, install the framework:

$ go get github.com/SuperPaintman/nice/cli

Then put this code into a file (hello.go for example):

package main

import "github.com/SuperPaintman/nice/cli"

func main() {
	app := cli.App{
		Name:  "hello",
		Usage: cli.Usage("Print a friendly greeting"),
		Action: cli.ActionFunc(func(cmd *cli.Command) cli.ActionRunner {
			name := cli.StringArg(cmd, "name",
				cli.Usage("Who we say hello to"),
				cli.Optional,
			)
			*name = "Nice" // Default value.

			return func(cmd *cli.Command) error {
				cmd.Printf("Hello, %s!\n", *name)

				return nil
			}
		}),
		CommandFlags: []cli.CommandFlag{
			cli.HelpCommandFlag(),
			cli.VersionCommandFlag("0.0.0"),
		},
	}

	app.HandleError(app.Run())
}

Now you can run it!

$ go run . world

Or print the help for your app:

$ go run . -h

Help example


Examples

You can find more examples in the ./examples directory.


Packages

🖥️ github.com/SuperPaintman/nice/cli

DocumentationSource

import "github.com/SuperPaintman/nice/cli"

🖌️ github.com/SuperPaintman/nice/colors

DocumentationSource

import "github.com/SuperPaintman/nice/colors"

Tests

$ go test -race ./...
$ go test ./... -bench=. -benchmem -run='^Benckmark'

Similar projects


License

MIT


With 🫀 by Aleksandr Krivoshchekov (@SuperPaintman)

More Repositories

1

the-evolution-of-a-go-programmer

The Evolution of a Go Programmer
Go
1,305
star
2

babel-plugin-transform-pipeline

Compile pipeline operator to ES5
JavaScript
59
star
3

ulid

Universally Unique Lexicographically Sortable Identifier (ULID) in Crystal
Crystal
27
star
4

serve

Command line static HTTP server
Crystal
23
star
5

babel-plugin-syntax-pipeline

Allow parsing of pipeline operator |>
JavaScript
23
star
6

habrlang

Step by Step guide how to make your own programming language
JavaScript
20
star
7

Tomorrow-Night-Telegram-Theme

A Tomorrow Night Telegram theme
Shell
17
star
8

phaser-typescript-tutorial

A tutorial on making a game with Phaser + TypeScript + Webpack
JavaScript
17
star
9

design-for-failure

Repository for the book "Design for Failure" 📈
16
star
10

ms

Library to easily convert various time formats to milliseconds and milliseconds to human readable format.
Crystal
14
star
11

crystal-ctags

Tool for generation ctags for Crystal
Crystal
13
star
12

blog

SuperPaintman's personal blog
10
star
13

request-id

Middleware for generates / pick up a unique request ID for Crystal servers.
Crystal
8
star
14

response-time

Response time for Crystal servers.
Crystal
8
star
15

dotfiles

~/.*
Shell
7
star
16

winston-seq

A Seq transport for Winston
TypeScript
7
star
17

phaser-typescript-boilerplate

Template for Phaser project (TypeScript + Webpack)
JavaScript
4
star
18

vscode-monokai-extended

Extends Monokai Theme (port of the Monokai TextMate Theme)
JavaScript
3
star
19

etag

Library to generate HTTP ETags
Crystal
3
star
20

superpaintman.com

SuperPaintman's jumppad
Svelte
1
star
21

express-lazy-middleware

Express lazy middleware initialize
TypeScript
1
star