github.com/jgarto/itcv@v0.0.0-20180826224514-4eea09c1aa0d/cmd/coreGen/coreGen.go (about) 1 // Copyright (c) 2016 Paul Jolly <paul@myitcv.org.uk>, all rights reserved. 2 // Use of this document is governed by a license found in the LICENSE document. 3 4 /* 5 6 coreGen is a go generate generator that helps to automate writing the core of 7 myitcv.io/react. 8 9 For more information see https://github.com/myitcv/react/wiki 10 11 */ 12 package main 13 14 import ( 15 "flag" 16 "fmt" 17 "log" 18 "os" 19 20 "myitcv.io/gogenerate" 21 ) 22 23 const ( 24 coreGenCmd = "coreGen" 25 26 jsPkg = "github.com/gopherjs/gopherjs/js" 27 ) 28 29 func main() { 30 log.SetFlags(0) 31 log.SetPrefix(coreGenCmd + ": ") 32 33 flag.Usage = usage 34 flag.Parse() 35 36 wd, err := os.Getwd() 37 if err != nil { 38 fatalf("unable to get working directory: %v", err) 39 } 40 41 mainGen(wd) 42 } 43 44 func mainGen(wd string) { 45 gogenerate.DefaultLogLevel(fGoGenLog, gogenerate.LogFatal) 46 47 envFile, ok := os.LookupEnv(gogenerate.GOFILE) 48 if !ok { 49 fatalf("env not correct; missing %v", gogenerate.GOFILE) 50 } 51 52 envPkg, ok := os.LookupEnv(gogenerate.GOPACKAGE) 53 if !ok { 54 fatalf("env not correct; missing %v", gogenerate.GOPACKAGE) 55 } 56 57 dirFiles, err := gogenerate.FilesContainingCmd(wd, coreGenCmd) 58 if err != nil { 59 fatalf("could not determine if we are the first file: %v", err) 60 } 61 62 if dirFiles == nil { 63 fatalf("cannot find any files containing the %v directive", coreGenCmd) 64 } 65 66 if dirFiles[envFile] != 1 { 67 fatalf("expected a single occurrence of %v directive in %v. Got: %v", coreGenCmd, envFile, dirFiles) 68 } 69 70 license, err := gogenerate.CommentLicenseHeader(fLicenseFile) 71 if err != nil { 72 fatalf("could not comment license file: %v", err) 73 } 74 75 // if we get here, we know we are the first file... 76 77 dogen(wd, envPkg, license) 78 } 79 80 func fatalf(format string, args ...interface{}) { 81 panic(fmt.Errorf(format, args...)) 82 } 83 84 func infof(format string, args ...interface{}) { 85 if *fGoGenLog == string(gogenerate.LogInfo) { 86 log.Printf(format, args...) 87 } 88 }