Compare commits

...

6 commits

4 changed files with 34 additions and 12 deletions

View file

@ -8,8 +8,8 @@ HOST_GOOS=$(shell go env GOOS)
HOST_GOARCH=$(shell go env GOARCH)
# GOOS=windows GOARCH=386
NAME=vedecom-ukko
REPO_PATH=bitbucket.com/glenux-corp/vedecom-ukko
NAME=randomedit
REPO_PATH=bitbucket.com/glenux-corp/randomedit
BUILD_DIR=$(shell pwd)/_build
INSTALL_DIR=$(PREFIX)/bin
SHARE_DIR=$(PREFIX)/share/$(NAME)
@ -20,14 +20,9 @@ build: vendor ## build executable
@mkdir -p "$(BUILD_DIR)"
# go build -i ./...
# GOBIN="$(BUILD_DIR)" go install ./...
for binary in "./cmd"/* ; do \
for binary in $$(cd cmd ; ls) ; do \
name="$$(basename "$$binary")" ; \
go build -i "$$binary" || exit 1 ; \
if [ -f "$$name.exe" ]; then \
mv "$$name.exe" "$(BUILD_DIR)/$$name.exe" || exit 1 ; \
else \
mv "$$name" "$(BUILD_DIR)/$$name" || exit 1 ; \
fi ; \
go build -o "_build/$$binary" ./cmd/$$binary/... || exit 1 ; \
done

View file

@ -4,10 +4,15 @@
For when you can't decide what you want to start with.
## Prerequisites
Make sure you have a recent version of Golang installed.
## Installation
:warning: FIXME
Type the following command:
make build
## Usage

View file

@ -36,21 +36,30 @@ func findFiles(dir string, patterns []string) []string {
func main() {
var directories []string
var patterns []string
var verbose bool
var editor string
flag.StringArrayVarP(&directories, "dir", "d", []string{"."}, "Look in given directory")
flag.StringArrayVarP(&patterns, "pattern", "p", []string{}, "Match given globbing pattern")
flag.StringVarP(&editor, "editor", "e", "", "Use given editor command")
flag.BoolVarP(&verbose, "verbose", "v", false, "Match given globbing pattern")
flag.Parse()
if len(patterns) < 1 {
patterns = []string{"*.txt", "*.md"}
}
// fmt.Printf("%#v\n", directories)
editor := os.Getenv("EDITOR")
if len(editor) < 1 {
editor = os.Getenv("EDITOR")
}
// walk dirs & merge result
filesSet := map[string]int{}
for _, dir := range directories {
for _, file := range findFiles(dir, patterns) {
if verbose {
fmt.Printf("d: Found %s\n", file)
}
if _, ok := filesSet[file]; !ok {
filesSet[file] = 0
}
@ -60,9 +69,17 @@ func main() {
// extract keys
files := []string{}
for k := range filesSet {
if verbose {
fmt.Printf("d: #%d. %s\n", len(files), k)
}
files = append(files, k)
}
if verbose {
// fmt.Printf("d: List %+v\n", files)
fmt.Printf("d: List has %d entries\n", len(files))
}
if len(files) < 1 {
fmt.Println("No file found")
os.Exit(1)
@ -70,6 +87,9 @@ func main() {
rand.Seed(time.Now().UTC().UnixNano())
choice := rand.Intn(len(files))
if verbose {
fmt.Printf("d: Chosen entry n°%d\n", choice)
}
fmt.Printf("%s %s\n", editor, files[choice])
// Run editor

2
go.mod
View file

@ -1,3 +1,5 @@
module github.com/glenux/randomedit
go 1.15
require github.com/spf13/pflag v1.0.2