small pixel drawing of a pufferfish dotfiles

bin/prompt_osx.go

package main

import (
	"fmt"
	"os"
	"strings"
    "golang.org/x/sys/unix"
	"time"
)

func main() {
	cwd, _ := os.Getwd()
	host, _ := os.Hostname()
	home := os.Getenv("HOME")
	var parts []string
	if strings.HasPrefix(cwd, home) {
		cwd = "~" + cwd[len(home):]
	}
    // Maybe handle this and drop into failure if leenux
    bootTime, _ := unix.SysctlTimeval("kern.boottime")
    now := time.Now().Unix()
    uptimeSeconds := now - bootTime.Sec

	uptime := time.Duration(uptimeSeconds) * time.Second
	fmt.Printf("\033[38;5;162m[%d:%02d:%02d] %s\033[0m ", int64(uptime.Hours()),
		int64(uptime.Minutes()) % 60, int64(uptime.Seconds()) % 60,
		host)

	parts = strings.Split(cwd, "/")
	for i, part := range parts {
		if i == len(parts)-1 {
			fmt.Printf("%s", part)
		} else {
			if len(part) != 0 {
				fmt.Printf("%c/", part[0])
			} else {
				fmt.Printf("/")
			}
		}
	}
}