Skip to content

neilotoole/shelleditor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shelleditor

Invoke the shell EDITOR like kubectl edit does.

This code is lifted from kubectl. Thanks lads.

Why not import the kubectl code directly? It has tons of dependencies that are not needed for this simple task. The codebase has been edited to import fewer packages, and those that are imported are mostly copied to the /pkg dir.

Usage

Import via the normal mechanism.

go get -u github.com/neilotoole/shelleditor

Note that because shellescape supports the stdlib slog logger, so it requires Go 1.21 or greater.

Example program

There's an example program in cmd/shelleditor.

$ go install github.com/neilotoole/shelleditor/cmd/shelleditor
$ shelleditor hello.txt

It's very simple:

package main

import (
	"fmt"
	"log/slog"
	"os"

	"github.com/neilotoole/shelleditor"
)

func main() {
	if len(os.Args) != 2 {
		fmt.Fprintln(os.Stderr, "Usage: shelleditor PATH")
		os.Exit(1)
	}

	// Set logger... you can usually ignore this. When not
	// set, log output is discarded.
	shelleditor.SetLogger(slog.Default())

	ed := shelleditor.NewDefaultEditor("EDITOR")
	if err := ed.Launch(os.Args[1]); err != nil {
		fmt.Fprintf(os.Stderr, "error: %v\n", err)
		os.Exit(1)
	}
}

Alternatives