本文整理汇总了Golang中github.com/gpmgo/gopm/modules/log.Info函数的典型用法代码示例。如果您正苦于以下问题:Golang Info函数的具体用法?Golang Info怎么用?Golang Info使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Info函数的18个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: runTest
func runTest(ctx *cli.Context) {
if err := setup(ctx); err != nil {
errors.SetError(err)
return
}
if err := linkVendors(ctx, ""); err != nil {
errors.SetError(err)
return
}
log.Info("Testing...")
cmdArgs := []string{"go", "test"}
if len(ctx.String("tags")) > 0 {
cmdArgs = append(cmdArgs, "-tags")
cmdArgs = append(cmdArgs, ctx.String("tags"))
}
if ctx.IsSet("verbose") {
cmdArgs = append(cmdArgs, "-v")
}
cmdArgs = append(cmdArgs, ctx.Args()...)
if err := execCmd(setting.DefaultVendor, setting.WorkDir, cmdArgs...); err != nil {
errors.SetError(fmt.Errorf("fail to run program: %v", err))
return
}
log.Info("Command executed successfully!")
}
开发者ID:CowLeo,项目名称:gopm,代码行数:29,代码来源:test.go
示例2: runTest
func runTest(ctx *cli.Context) {
if err := setup(ctx); err != nil {
errors.SetError(err)
return
}
os.RemoveAll(setting.DefaultVendor)
if !setting.Debug {
defer os.RemoveAll(setting.DefaultVendor)
}
if err := linkVendors(ctx, ""); err != nil {
errors.SetError(err)
return
}
log.Info("Testing...")
cmdArgs := []string{"go", "test"}
cmdArgs = append(cmdArgs, ctx.Args()...)
if err := execCmd(setting.DefaultVendor, setting.WorkDir, cmdArgs...); err != nil {
errors.SetError(fmt.Errorf("fail to run program: %v", err))
return
}
log.Info("Command executed successfully!")
}
开发者ID:juqkai,项目名称:gopm,代码行数:27,代码来源:test.go
示例3: execCmd
func execCmd(gopath, curPath string, args ...string) error {
oldGopath := os.Getenv("GOPATH")
log.Info("Setting GOPATH to %s", gopath)
sep := ":"
if runtime.GOOS == "windows" {
sep = ";"
}
if err := os.Setenv("GOPATH", gopath+sep+oldGopath); err != nil {
if setting.LibraryMode {
return fmt.Errorf("Fail to setting GOPATH: %v", err)
}
log.Error("", "Fail to setting GOPATH:")
log.Fatal("", "\t"+err.Error())
}
if setting.HasGOPATHSetting {
defer func() {
log.Info("Setting GOPATH back to %s", oldGopath)
os.Setenv("GOPATH", oldGopath)
}()
}
cmd := exec.Command(args[0], args[1:]...)
cmd.Dir = curPath
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
log.Info("===== application outputs start =====\n")
err := cmd.Run()
log.Info("====== application outputs end ======")
return err
}
开发者ID:juqkai,项目名称:gopm,代码行数:35,代码来源:cmd.go
示例4: buildBinary
func buildBinary(ctx *cli.Context, args ...string) error {
_, target, err := parseGopmfile(setting.GOPMFILE)
if err != nil {
return err
}
if err := linkVendors(ctx, ""); err != nil {
return err
}
log.Info("Building...")
cmdArgs := []string{"go", "build"}
cmdArgs = append(cmdArgs, args...)
if err := execCmd(setting.DefaultVendor, setting.WorkDir, cmdArgs...); err != nil {
return fmt.Errorf("fail to build program: %v", err)
}
if setting.IsWindowsXP {
fName := path.Base(target)
binName := fName + ".exe"
os.Remove(binName)
exePath := path.Join(setting.DefaultVendorSrc, target, binName)
if base.IsFile(exePath) {
if err := os.Rename(exePath, path.Join(setting.WorkDir, binName)); err != nil {
return fmt.Errorf("fail to move binary: %v", err)
}
} else {
log.Warn("No binary generated")
}
}
return nil
}
开发者ID:juqkai,项目名称:gopm,代码行数:33,代码来源:build.go
示例5: Download
// Download downloads remote package without version control.
func (n *Node) Download(ctx *cli.Context) ([]string, error) {
for _, s := range services {
if !strings.HasPrefix(n.DownloadURL, s.prefix) {
continue
}
m := s.pattern.FindStringSubmatch(n.DownloadURL)
if m == nil {
if s.prefix != "" {
return nil, errors.New("Cannot match package service prefix by given path")
}
continue
}
match := map[string]string{"downloadURL": n.DownloadURL}
for i, n := range s.pattern.SubexpNames() {
if n != "" {
match[n] = m[i]
}
}
return s.get(HttpClient, match, n, ctx)
}
if n.ImportPath != n.DownloadURL {
return nil, errors.New("Didn't find any match service")
}
log.Info("Cannot match any service, getting dynamic...")
return n.getDynamic(HttpClient, ctx)
}
开发者ID:juqkai,项目名称:gopm,代码行数:32,代码来源:struct.go
示例6: runBuild
func runBuild(ctx *cli.Context) {
if err := setup(ctx); err != nil {
errors.SetError(err)
return
}
if err := buildBinary(ctx, ctx.Args()...); err != nil {
errors.SetError(err)
return
}
log.Info("Command executed successfully!")
}
开发者ID:happy214117,项目名称:gopm,代码行数:13,代码来源:build.go
示例7: runInstall
func runInstall(ctx *cli.Context) {
if err := setup(ctx); err != nil {
errors.SetError(err)
return
}
os.RemoveAll(setting.DefaultVendor)
if !setting.Debug {
defer os.RemoveAll(setting.DefaultVendor)
}
if err := linkVendors(ctx, ""); err != nil {
errors.SetError(err)
return
}
// Get target name.
gfPath := path.Join(setting.WorkDir, setting.GOPMFILE)
_, target, err := parseGopmfile(gfPath)
if err != nil {
errors.SetError(fmt.Errorf("fail to parse gopmfile: %v", err))
return
}
log.Info("Installing...")
cmdArgs := []string{"go", "install"}
if ctx.Bool("verbose") {
cmdArgs = append(cmdArgs, "-v")
}
cmdArgs = append(cmdArgs, target)
if err := execCmd(setting.DefaultVendor, setting.WorkDir, cmdArgs...); err != nil {
errors.SetError(fmt.Errorf("fail to run program: %v", err))
return
}
log.Info("Command executed successfully!")
}
开发者ID:juqkai,项目名称:gopm,代码行数:38,代码来源:install.go
示例8: ParseTarget
// ParseTarget guesses import path of current package if target is empty,
// otherwise simply returns the value it gets.
func ParseTarget(target string) string {
if len(target) > 0 {
return target
}
for _, gopath := range base.GetGOPATHs() {
if strings.HasPrefix(setting.WorkDir, gopath) {
target = strings.TrimPrefix(setting.WorkDir, path.Join(gopath, "src")+"/")
log.Info("Guess import path: %s", target)
return target
}
}
return "."
}
开发者ID:CowLeo,项目名称:gopm,代码行数:16,代码来源:utils.go
示例9: getPackages
func getPackages(target string, ctx *cli.Context, nodes []*doc.Node) error {
if err := downloadPackages(target, ctx, nodes); err != nil {
return err
}
if err := setting.SaveLocalNodes(); err != nil {
return err
}
log.Info("%d package(s) downloaded, %d failed", downloadCount, failConut)
if ctx.GlobalBool("strict") && failConut > 0 && !setting.LibraryMode {
return fmt.Errorf("fail to download some packages")
}
return nil
}
开发者ID:yonglehou,项目名称:gopm,代码行数:14,代码来源:get.go
示例10: downloadPackage
// downloadPackage downloads package either use version control tools or not.
func downloadPackage(ctx *cli.Context, n *doc.Node) (*doc.Node, []string, error) {
// fmt.Println(n.VerString())
log.Info("Downloading package: %s", n.VerString())
downloadCache.Set(n.VerString())
vendor := base.GetTempDir()
defer os.RemoveAll(vendor)
var (
err error
imports []string
srcPath string
)
// Check if only need to use VCS tools.
vcs := doc.GetVcsName(n.InstallGopath)
// If update, gopath and VCS tools set then use VCS tools to update the package.
if ctx.Bool("update") && (ctx.Bool("gopath") || ctx.Bool("local")) && len(vcs) > 0 {
if err = n.UpdateByVcs(vcs); err != nil {
return nil, nil, fmt.Errorf("fail to update by VCS(%s): %v", n.ImportPath, err)
}
srcPath = n.InstallGopath
} else {
if !n.IsGetDepsOnly || !n.IsExist() {
// Get revision value from local records.
n.Revision = setting.LocalNodes.MustValue(n.RootPath, "value")
if err = n.DownloadGopm(ctx); err != nil {
errors.AppendError(errors.NewErrDownload(n.ImportPath + ": " + err.Error()))
failConut++
os.RemoveAll(n.InstallPath)
return nil, nil, nil
}
}
srcPath = n.InstallPath
}
if n.IsGetDeps {
imports, err = getDepList(ctx, n.ImportPath, srcPath, vendor)
if err != nil {
return nil, nil, fmt.Errorf("fail to list imports(%s): %v", n.ImportPath, err)
}
if setting.Debug {
log.Debug("New imports: %v", imports)
}
}
return n, imports, err
}
开发者ID:yonglehou,项目名称:gopm,代码行数:49,代码来源:get.go
示例11: CopyToGopath
func (n *Node) CopyToGopath() error {
if n.HasVcs() {
log.Warn("Package in GOPATH has version control: %s", n.RootPath)
return nil
}
os.RemoveAll(n.InstallGopath)
if err := base.CopyDir(n.InstallPath, n.InstallGopath); err != nil {
if setting.LibraryMode {
return fmt.Errorf("Fail to copy to GOPATH: %v", err)
}
log.Error("", "Fail to copy to GOPATH:")
log.Fatal("", "\t"+err.Error())
}
log.Info("Package copied to GOPATH: %s", n.RootPath)
return nil
}
开发者ID:juqkai,项目名称:gopm,代码行数:17,代码来源:struct.go
示例12: runBuild
func runBuild(ctx *cli.Context) {
if err := setup(ctx); err != nil {
errors.SetError(err)
return
}
os.RemoveAll(setting.DefaultVendor)
if !setting.Debug {
defer os.RemoveAll(setting.DefaultVendor)
}
if err := buildBinary(ctx, ctx.Args()...); err != nil {
errors.SetError(err)
return
}
log.Info("Command executed successfully!")
}
开发者ID:juqkai,项目名称:gopm,代码行数:17,代码来源:build.go
示例13: setup
// setup initializes and checks common environment variables.
func setup(ctx *cli.Context) (err error) {
setting.Debug = ctx.GlobalBool("debug")
log.NonColor = ctx.GlobalBool("noterm")
log.Verbose = ctx.Bool("verbose")
log.Info("App Version: %s", ctx.App.Version)
setting.HomeDir, err = base.HomeDir()
if err != nil {
return fmt.Errorf("Fail to get home directory: %v", err)
}
setting.HomeDir = strings.Replace(setting.HomeDir, "\\", "/", -1)
setting.InstallRepoPath = path.Join(setting.HomeDir, ".gopm/repos")
if runtime.GOOS == "windows" {
setting.IsWindows = true
}
os.MkdirAll(setting.InstallRepoPath, os.ModePerm)
log.Info("Local repository path: %s", setting.InstallRepoPath)
if !setting.LibraryMode || len(setting.WorkDir) == 0 {
setting.WorkDir, err = os.Getwd()
if err != nil {
return fmt.Errorf("Fail to get work directory: %v", err)
}
setting.WorkDir = strings.Replace(setting.WorkDir, "\\", "/", -1)
}
setting.DefaultVendor = path.Join(setting.WorkDir, setting.VENDOR)
setting.DefaultVendorSrc = path.Join(setting.DefaultVendor, "src")
if !ctx.Bool("remote") {
if ctx.Bool("local") {
// gf, _, _, err := genGopmfile(ctx)
// if err != nil {
// return err
// }
// setting.InstallGopath = gf.MustValue("project", "local_gopath")
// if ctx.Command.Name != "gen" {
// if com.IsDir(setting.InstallGopath) {
// log.Log("Indicated local GOPATH: %s", setting.InstallGopath)
// setting.InstallGopath += "/src"
// } else {
// if setting.LibraryMode {
// return fmt.Errorf("Local GOPATH does not exist or is not a directory: %s",
// setting.InstallGopath)
// }
// log.Error("", "Invalid local GOPATH path")
// log.Error("", "Local GOPATH does not exist or is not a directory:")
// log.Error("", "\t"+setting.InstallGopath)
// log.Help("Try 'go help gopath' to get more information")
// }
// }
} else {
// Get GOPATH.
setting.InstallGopath = base.GetGOPATHs()[0]
if base.IsDir(setting.InstallGopath) {
log.Info("Indicated GOPATH: %s", setting.InstallGopath)
setting.InstallGopath += "/src"
setting.HasGOPATHSetting = true
} else {
if ctx.Bool("gopath") {
return fmt.Errorf("Local GOPATH does not exist or is not a directory: %s",
setting.InstallGopath)
} else {
// It's OK that no GOPATH setting
// when user does not specify to use.
log.Warn("No GOPATH setting available")
}
}
}
}
setting.ConfigFile = path.Join(setting.HomeDir, ".gopm/data/gopm.ini")
if err = setting.LoadConfig(); err != nil {
return err
}
setting.PkgNameListFile = path.Join(setting.HomeDir, ".gopm/data/pkgname.list")
if err = setting.LoadPkgNameList(); err != nil {
return err
}
setting.LocalNodesFile = path.Join(setting.HomeDir, ".gopm/data/localnodes.list")
if err = setting.LoadLocalNodes(); err != nil {
return err
}
return nil
}
开发者ID:juqkai,项目名称:gopm,代码行数:90,代码来源:cmd.go
示例14: runGen
func runGen(ctx *cli.Context) {
if err := setup(ctx); err != nil {
errors.SetError(err)
return
}
gfPath := path.Join(setting.WorkDir, setting.GOPMFILE)
if !setting.HasGOPATHSetting && !base.IsFile(gfPath) {
log.Warn("Dependency list may contain package itself without GOPATH setting and gopmfile.")
}
gf, target, err := parseGopmfile(gfPath)
if err != nil {
errors.SetError(err)
return
}
list, err := getDepList(ctx, target, setting.WorkDir, setting.DefaultVendor)
if err != nil {
errors.SetError(err)
return
}
for _, name := range list {
// Check if user has specified the version.
if val := gf.MustValue("deps", name); len(val) == 0 {
gf.SetValue("deps", name, "")
}
}
// Check resources.
if _, err = gf.GetValue("res", "include"); err != nil {
resList := make([]string, 0, len(setting.CommonRes))
for _, res := range setting.CommonRes {
if base.IsExist(res) {
resList = append(resList, res)
}
}
gf.SetValue("res", "include", strings.Join(resList, "|"))
}
if err = setting.SaveGopmfile(gf, gfPath); err != nil {
errors.SetError(err)
return
}
if ctx.Bool("local") {
localGopath := gf.MustValue("project", "local_gopath")
if len(localGopath) == 0 {
localGopath = "./vendor"
gf.SetValue("project", "local_gopath", localGopath)
if err = setting.SaveGopmfile(gf, gfPath); err != nil {
errors.SetError(err)
return
}
}
for _, name := range []string{"src", "pkg", "bin"} {
os.MkdirAll(path.Join(localGopath, name), os.ModePerm)
}
}
log.Info("Generate gopmfile successfully!")
}
开发者ID:juqkai,项目名称:gopm,代码行数:62,代码来源:gen.go
示例15: DownloadGopm
// DownloadGopm downloads remote package from gopm registry.
func (n *Node) DownloadGopm(ctx *cli.Context) error {
// Fetch latest version, check if package has been changed.
if n.Type == BRANCH && n.IsEmptyVal() {
resp, err := http.Get(fmt.Sprintf("%s%s?pkgname=%s",
setting.RegistryURL, setting.URL_API_REVISION, n.RootPath))
if err != nil {
return fmt.Errorf("fail to make request: %v", err)
}
if resp.StatusCode != 200 {
var apiErr ApiError
if err = json.NewDecoder(resp.Body).Decode(&apiErr); err != nil {
return fmt.Errorf("fail to decode response JSON: %v", err)
}
return errors.New(apiErr.Error)
}
var apiResp ApiResponse
if err = json.NewDecoder(resp.Body).Decode(&apiResp); err != nil {
return fmt.Errorf("fail to decode response JSON: %v", err)
}
if n.Revision == apiResp.Sha {
log.Info("Package(%s) hasn't been changed", n.RootPath)
return nil
}
n.Revision = apiResp.Sha
}
resp, err := http.Get(fmt.Sprintf("%s%s?pkgname=%s&revision=%s",
setting.RegistryURL, setting.URL_API_DOWNLOAD, n.RootPath, n.Value))
if err != nil {
return fmt.Errorf("fail to make request: %v", err)
}
if resp.StatusCode != 200 {
var apiErr ApiError
if err = json.NewDecoder(resp.Body).Decode(&apiErr); err != nil {
return fmt.Errorf("fail to decode response JSON: %v", err)
}
return errors.New(apiErr.Error)
}
tmpPath := path.Join(setting.HomeDir, ".gopm/temp/archive",
n.RootPath+"-"+base.ToStr(time.Now().Nanosecond())+".zip")
defer os.Remove(tmpPath)
if setting.Debug {
log.Debug("Temp archive path: %s", tmpPath)
}
os.MkdirAll(path.Dir(tmpPath), os.ModePerm)
fw, err := os.Create(tmpPath)
if err != nil {
return err
}
if _, err = io.Copy(fw, resp.Body); err != nil {
return fmt.Errorf("fail to save archive: %v", err)
}
fw.Close()
// Remove old files.
os.RemoveAll(n.InstallPath)
os.MkdirAll(path.Dir(n.InstallPath), os.ModePerm)
var rootDir string
var extractFn = func(fullName string, fi os.FileInfo) error {
if len(rootDir) == 0 {
rootDir = strings.Split(fullName, "/")[0]
}
return nil
}
if err := zip.ExtractToFunc(tmpPath, path.Dir(n.InstallPath), extractFn); err != nil {
return fmt.Errorf("fail to extract archive: %v", err)
} else if err = os.Rename(path.Join(path.Dir(n.InstallPath), rootDir),
n.InstallPath); err != nil {
return fmt.Errorf("fail to rename directory: %v", err)
}
return nil
}
开发者ID:CowLeo,项目名称:gopm,代码行数:77,代码来源:struct.go
示例16: runBin
func runBin(ctx *cli.Context) {
if err := setup(ctx); err != nil {
errors.SetError(err)
return
}
if len(ctx.Args()) != 1 {
errors.SetError(fmt.Errorf("Incorrect number of arguments for command: should have 1"))
return
}
// Check if given directory exists if specified.
if ctx.IsSet("dir") && !base.IsDir(ctx.String("dir")) {
errors.SetError(fmt.Errorf("Indicated path does not exist or not a directory"))
return
}
// Parse package version.
info := ctx.Args().First()
pkgPath := info
n := doc.NewNode(pkgPath, doc.BRANCH, "", true)
if i := strings.Index(info, "@"); i > -1 {
pkgPath = info[:i]
var err error
tp, val, err := validPkgInfo(info[i+1:])
if err != nil {
errors.SetError(err)
return
}
n = doc.NewNode(pkgPath, tp, val, !ctx.Bool("download"))
}
// Check package name.
if !strings.Contains(pkgPath, "/") {
tmpPath, err := setting.GetPkgFullPath(pkgPath)
if err != nil {
errors.SetError(err)
return
}
if tmpPath != pkgPath {
n = doc.NewNode(tmpPath, n.Type, n.Value, n.IsGetDeps)
}
}
if err := downloadPackages(".", ctx, []*doc.Node{n}); err != nil {
errors.SetError(err)
return
}
// Check if previous steps were successful.
if !n.IsExist() {
errors.SetError(fmt.Errorf("Download steps weren't successful"))
return
}
tmpVendor := path.Join("vendor", path.Base(n.RootPath))
os.RemoveAll(tmpVendor)
os.RemoveAll(setting.VENDOR)
// TODO: should use .gopm/temp path.
if err := autoLink(n.InstallPath, tmpVendor); err != nil {
errors.SetError(fmt.Errorf("Fail to link slef: %v", err))
return
}
os.Chdir(tmpVendor)
oldWorkDir := setting.WorkDir
setting.WorkDir = path.Join(setting.WorkDir, tmpVendor)
if !setting.Debug {
defer func() {
os.Chdir(oldWorkDir)
os.RemoveAll("vendor")
os.RemoveAll(setting.VENDOR)
}()
}
// if err := buildBinary(ctx); err != nil {
// errors.SetError(err)
// return
// }
if err := linkVendors(ctx, n.ImportPath); err != nil {
errors.SetError(err)
return
}
log.Info("Installing...")
cmdArgs := []string{"go", "install"}
if ctx.Bool("verbose") {
cmdArgs = append(cmdArgs, "-v")
}
cmdArgs = append(cmdArgs, n.ImportPath)
if err := execCmd(setting.DefaultVendor, setting.WorkDir, cmdArgs...); err != nil {
errors.SetError(fmt.Errorf("fail to run program: %v", err))
return
}
gf, _, err := parseGopmfile(setting.GOPMFILE)
if err != nil {
errors.SetError(err)
return
//.........这里部分代码省略.........
开发者ID:juqkai,项目名称:gopm,代码行数:101,代码来源:bin.go
示例17: runUpdate
func runUpdate(ctx *cli.Context) {
if setting.LibraryMode {
errors.SetError(fmt.Errorf("Library mode does not support update command"))
return
}
if err := setup(ctx); err != nil {
errors.SetError(err)
return
}
isAnythingUpdated := false
localVerInfo := loadLocalVerInfo()
// Get remote version info.
var remoteVerInfo version
if err := base.HttpGetJSON(doc.HttpClient, "http://gopm.io/VERSION.json", &remoteVerInfo); err != nil {
log.Fatal("Fail to fetch VERSION.json: %v", err)
}
// Package name list.
if remoteVerInfo.PackageNameList > localVerInfo.PackageNameList {
log.Info("Updating pkgname.list...%v > %v",
localVerInfo.PackageNameList, remoteVerInfo.PackageNameList)
data, err := base.HttpGetBytes(doc.HttpClient, "https://raw.githubusercontent.com/gpmgo/docs/master/pkgname.list", nil)
if err != nil {
log.Warn("Fail to update pkgname.list: %v", err)
} else {
if err = ioutil.WriteFile(setting.PkgNameListFile, data, os.ModePerm); err != nil {
log.Fatal("Fail to save pkgname.list: %v", err)
}
log.Info("Update pkgname.list to %v succeed!", remoteVerInfo.PackageNameList)
isAnythingUpdated = true
}
}
// Gopm.
if remoteVerInfo.Gopm > setting.VERSION {
log.Info("Updating gopm...%v > %v", setting.VERSION, remoteVerInfo.Gopm)
tmpDir := base.GetTempDir()
tmpBinPath := path.Join(tmpDir, "gopm")
if runtime.GOOS == "windows" {
tmpBinPath += ".exe"
}
os.MkdirAll(path.Dir(tmpBinPath), os.ModePerm)
os.Remove(tmpBinPath)
// Fetch code.
args := []string{"bin", "-u", "-r", "-d=" + tmpDir}
if ctx.Bool("verbose") {
args = append(args, "-v")
}
args = append(args, "github.com/gpmgo/gopm")
stdout, stderr, err := base.ExecCmd("gopm", args...)
if err != nil {
log.Fatal("Fail to execute 'bin -u -r -d=/Users/jiahuachen/.gopm/temp -v github.com/gpmgo/gopm: %s", stderr)
}
if len(stdout) > 0 {
fmt.Print(stdout)
}
// Check if previous steps were successful.
if !base.IsExist(tmpBinPath) {
log.Error("Fail to continue command")
log.Fatal("Previous steps weren't successful, no binary produced")
}
movePath, err := execPath()
if err != nil {
log.Fatal("Fail to get execute path: %v", err)
}
log.Info("New binary will be replaced for %s", movePath)
// Move binary to given directory.
if runtime.GOOS != "windows" {
err := os.Rename(tmpBinPath, movePath)
if err != nil {
log.Fatal("Fail to move binary: %v", err)
}
os.Chmod(movePath+"/"+path.Base(tmpBinPath), os.ModePerm)
} else {
batPath := path.Join(tmpDir, "update.bat")
f, err := os.Create(batPath)
if err != nil {
log.Error("Update", "Fail to generate bat file")
log.Fatal("", err.Error())
}
f.WriteString("@echo off\r\n")
f.WriteString(fmt.Sprintf("ping -n 1 127.0.0.1>nul\r\ncopy \"%v\" \"%v\" >nul\r\ndel \"%v\" >nul\r\n\r\n",
tmpBinPath, movePath, tmpBinPath))
f.Close()
attr := &os.ProcAttr{
Dir: setting.WorkDir,
Env: os.Environ(),
Files: []*os.File{os.Stdin, os.Stdout, os.Stderr},
}
if _, err = os.StartProcess(batPath, []string{batPath}, attr); err != nil {
log.Error("Update", "Fail to start bat process")
//.........这里部分代码省略.........
开发者ID:Lane391,项目名称:golangdemo,代码行数:101,代码来源:update.go
示例18: downloadPackages
// downloadPackages downloads packages with certain commit,
// if the commit is empty string, then it downloads all dependencies,
// otherwise, it only downloada package with specific commit only.
func downloadPackages(target string, ctx *cli.Context, nodes []*doc.Node) (err error) {
for _, n := range nodes {
// Check if it is a valid remote path or C.
if n.ImportPath == "C" {
continue
} else if !base.IsValidRemotePath(n.ImportPath) {
// Invalid import path.
if setting.LibraryMode {
errors.AppendError(errors.NewErrInvalidPackage(n.VerString()))
}
log.Error("Skipped invalid package: " + n.VerString())
failConut++
continue
}
// Valid import path.
if isSubpackage(n.RootPath, target) {
continue
}
// Indicates whether need to download package or update.
if n.IsFixed() && n.IsExist() {
n.IsGetDepsOnly = true
}
if downloadCache.Get(n.VerString()) {
if !skipCache.Get(n.VerString()) {
skipCache.Set(n.VerString())
log.Debug("Skipped downloaded package: %s", n.VerString())
}
continue
}
if !ctx.Bool("update") {
// Check if package has been downloaded.
if n.IsExist() {
if !skipCache.Get(n.VerString()) {
skipCache.Set(n.VerString())
log.Info("%s", n.InstallPath)
log.Debug("Skipped installed package: %s", n.VerString())
}
// Only copy when no version control.
if !copyCache.Get(n.VerString()) && (ctx.Bool("gopath") || ctx.Bool("local")) {
copyCache.Set(n.VerString())
if err = n.CopyToGopath(); err != nil {
return err
}
}
continue
} else {
setting.LocalNodes.SetValue(n.RootPath, "value", "")
}
}
// Download package.
nod, imports, err := downloadPackage(ctx, n)
if err != nil {
return err
}
for _, name := range imports {
var gf *goconfig.ConfigFile
gfPath := path.Join(n.InstallPath, setting.GOPMFILE)
// Check if has gopmfile.
if base.IsFile(gfPath) {
log.Info("Found gopmfile: %s", n.VerString())
var err error
gf, _, err = parseGopmfile(gfPath)
if err != nil {
return fmt.Errorf("fail to parse gopmfile(%s): %v", gfPath, err)
}
}
// Need to download dependencies.
// Generate temporary nodes.
nodes := make([]*doc.Node, len(imports))
for i := range nodes {
nodes[i] = doc.NewNode(name, doc.BRANCH, "", !ctx.Bool("download"))
if gf == nil {
continue
}
// Check if user specified the version.
if v := gf.MustValue("deps", imports[i]); len(v) > 0 {
nodes[i].Type, nodes[i].Value, err = validPkgInfo(v)
if err != nil {
return err
}
}
}
if err = downloadPackages(target, ctx, nodes); err != nil {
return err
}
}
// Only save package information with specific commit.
//.........这里部分代码省略.........
开发者ID:yonglehou,项目名称:gopm,代码行数:101,代码来源:get.go
注:本文中的github.com/gpmgo/gopm/modules/log.Info函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论