Skip to content

sethgrid/curse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Curse

A utility for manipulating the terminal cursor. Current feature set:

  • Get terminal cursor position
  • Move cursor
  • Move up, down n-lines
  • Clear line
  • Clear Screen (up, down, all)
  • Set Color

Basic Example usage (see below for an inline-progress bar):

 package main import ( "fmt" "log" "github.com/sethgrid/curse" ) func main() { c, err := curse.New() if err != nil { log.Fatal(err) } c.SetColorBold(curse.RED).SetBackgroundColor(curse.BLACK) fmt.Println("Position: ", c.Position) c.SetDefaultStyle() fmt.Println("something to be erased") c.MoveUp(1).EraseCurrentLine().MoveDown(1) }

Progress Bar Example:

 package main import ( "fmt" "strings" "time" "github.com/sethgrid/curse" ) func main() { fmt.Println("Progress Bar") total := 150 progressBarWidth := 80 c, _ := curse.New() // give some buffer space on the terminal fmt.Println() // display a progress bar for i := 0; i <= total; i++ { c.MoveUp(1) c.EraseCurrentLine() fmt.Printf("%d/%d ", i, total) c.MoveDown(1) c.EraseCurrentLine() fmt.Printf("%s", progressBar(i, total, progressBarWidth)) time.Sleep(time.Millisecond * 25) } // end the previous last line of output fmt.Println() fmt.Println("Complete") } func progressBar(progress, total, width int) string { bar := make([]string, width) for i, _ := range bar { if float32(progress)/float32(total) > float32(i)/float32(width) { bar[i] = "*" } else { bar[i] = " " } } return "[" + strings.Join(bar, "") + "]" }

About

Basic terminal cursor manipulation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages