69 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"go/build"
 | |
| 	"log"
 | |
| 	"os"
 | |
| )
 | |
| 
 | |
| func main() {
 | |
| 	// parser arguments
 | |
| 	parseArguments()
 | |
| 
 | |
| 	// find package for path
 | |
| 	var pkgs []*build.Package
 | |
| 	for _, importPath := range flags.ImportPaths {
 | |
| 		pkg := pkgForPath(importPath)
 | |
| 		pkgs = append(pkgs, pkg)
 | |
| 	}
 | |
| 
 | |
| 	// switch on the operation to perform
 | |
| 	switch flagsParser.Active.Name {
 | |
| 	case "embed", "embed-go":
 | |
| 		for _, pkg := range pkgs {
 | |
| 			operationEmbedGo(pkg)
 | |
| 		}
 | |
| 	case "embed-syso":
 | |
| 		log.Println("WARNING: embedding .syso is experimental..")
 | |
| 		for _, pkg := range pkgs {
 | |
| 			operationEmbedSyso(pkg)
 | |
| 		}
 | |
| 	case "append":
 | |
| 		operationAppend(pkgs)
 | |
| 	case "clean":
 | |
| 		for _, pkg := range pkgs {
 | |
| 			operationClean(pkg)
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	// all done
 | |
| 	verbosef("\n")
 | |
| 	verbosef("rice finished successfully\n")
 | |
| }
 | |
| 
 | |
| // helper function to get *build.Package for given path
 | |
| func pkgForPath(path string) *build.Package {
 | |
| 	// get pwd for relative imports
 | |
| 	pwd, err := os.Getwd()
 | |
| 	if err != nil {
 | |
| 		fmt.Printf("error getting pwd (required for relative imports): %s\n", err)
 | |
| 		os.Exit(1)
 | |
| 	}
 | |
| 
 | |
| 	// read full package information
 | |
| 	pkg, err := build.Import(path, pwd, 0)
 | |
| 	if err != nil {
 | |
| 		fmt.Printf("error reading package: %s\n", err)
 | |
| 		os.Exit(1)
 | |
| 	}
 | |
| 
 | |
| 	return pkg
 | |
| }
 | |
| 
 | |
| func verbosef(format string, stuff ...interface{}) {
 | |
| 	if flags.Verbose {
 | |
| 		log.Printf(format, stuff...)
 | |
| 	}
 | |
| }
 | 
