Thanks to visit codestin.com
Credit goes to github.com

Skip to content

splace/fsflags

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 

Repository files navigation

fsflags

Overview/docs: GoDoc

Installation:

 go get github.com/splace/fsflags

Example: get input, output and daily (self-maintaining) log folder from parameters. use stdin and stdout by default.

package main

import "os"
import "flag"
import "github.com/splace/fsflags"
import "log"

func main() {
	var read fsflags.FileValue
	flag.Var(&read, "i", "input file.")
	var write fsflags.NewFileValue
	flag.Var(&write, "o", "output file (will not overwrite).")
	var over fsflags.CreateFileValue
	flag.Var(&over, "oo", "output file (will overwrite).")
	var daily fsflags.DailyErasingFileValue
	flag.Var(&daily, "d", "folder for log writes, appending to new file (named "YYYY-MM-DD") each day (self erasing).")
	var verbose bool
	flag.BoolVar(&verbose, "v", false, "display log writes.")
	flag.Parse()

	if read.File == nil {
		read.File = os.Stdin
	}

	if write.File == nil {
		if over.File == nil {
			write.File = os.Stdout
		}else{
			write.File = over.File
		}
	}

	// make logger that writes as flags indicate.
	var logger *log.Logger
	if verbose && daily.File!=nil {
		logger=log.New(io.MultiWriter(os.Stdout,daily.File),"",log.Ltime)
	} else {
		if daily.File!=nil{
			logger=log.New(daily.File,"",log.Ltime)
		} else {
			if verbose{
				logger=log.New(os.Stdout,"",log.Ltime)
			}
		}
	}

}

About

implementations of Go-lang flag.Value (https://golang.org/pkg/flag/#Value) handling common filesystem access needs.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages