dinogo icon indicating copy to clipboard operation
dinogo copied to clipboard

Dinogo is an CLI framework for build shell, terminal and command line applications in Go.

dinogo

Dinogo is an CLI framework for build shell, terminal and command line applications in Go.

MIT License Go Report Card

Table of Contents

  • Features
  • Example Shell Application
  • Packages
  • Contributing
  • License

Features

  • Cross Platform
  • Fast and efficient
  • Keyboard API
  • Enable/Disable Windows Virtual Terminal Processing
  • Input infrastructure (custom actions, key combos...)
  • Input profiles (classic, password...)
  • Drawing tools
  • Shell infrastructure
  • Default actions (help, clear, exit...) for your shell
  • Command history infrastructure
  • Auto command complete support for your shell
  • ANSI escape codes and parser
  • CLI functions (move left, move right, clear screen...)
  • By default supports cursor move on input via command line

Example Shell Application

package main

import (
	"github.com/mertcandav/dinogo/shell"
	"github.com/mertcandav/dinogo/shell/actions"
)

func about(_ shell.CommandActionInfo) {
	println("This shell is example for Dinogo framework.")
}

func main() {
	sh := shell.Init()
	sh.Commands = []shell.Command{
		{Name: "clear", Help: "Clear entire screen.", Action: actions.Clear},
		{Name: "about", Help: "Show about this shell.", Action: about},
		{Name: "history", Help: "List command history.", Action: actions.History},
		{Name: "help", Help: "Show help.", Action: actions.Help},
		{Name: "exit", Help: "Exit shell.", Action: actions.Exit},
	}
	sh.Loop()
}

Packages

  • ansiescape/ ANSI escape code constants and parser.
  • drawing/ Drawing tools.
  • input/ Input infrastructure for command line inputs.
  • keyboard/ Keyboard API.
  • message/ Message templates for print.
  • shell/ Shell infrastructure.
  • terminal/ CLI functions and tools.

Contributing

Thanks for you want contributing to Dinogo!

The Dinogo project use issues for only bug reports and proposals.
To contribute, please read the contribution guidelines from here.

All contributions to Dinogo, no matter how small or large, are welcome.
From a simple typo correction to a contribution to the code, all contributions are welcome and appreciated.

License

Dinogo is distributed under the terms of the MIT license.
See license details.