func createExe() { if err := os.RemoveAll(*outDir); err != nil && os.IsExist(err) { fatalError(err.Error()) } if err := os.MkdirAll(*outDir, os.ModeDir); err != nil { fatalError(err.Error()) } if _, err := kopsa.Copy(exePath, filepath.Join(*nwDir, "nw.exe")); err != nil { fatalError(err.Error()) } if err := createIcon(); err != nil { yellow.Println(err.Error()) } if _, err := kopsa.Copy(exePath, exePath, filepath.Join(*tmp, "bob.nw")); err != nil { fatalError("Can't copy app.nw+nw.exe: " + err.Error()) } }
// Copy NW.js files func copyWalk(path string, info os.FileInfo, err error) error { if err != nil { return err } fileName := strings.TrimPrefix(path, *nwDir) if len(fileName) < 1 { return nil } dstPath := filepath.Join(*outDir, fileName) // Check if the destination file exists dstInfo, err := os.Stat(dstPath) // If it does exist and it errors, return if err != nil && os.IsExist(err) { return err } // If it does exist and it's the same file, return nil if os.IsExist(err) && os.SameFile(info, dstInfo) { return nil } if info.IsDir() { if err := os.Mkdir(dstPath, info.Mode()); err != nil { return err } return nil } // Keep only regular, nonempty files if !info.Mode().IsRegular() || info.Size() == 0 { return nil } // Omit pdf.dll unless otherwise specified if info.Name() == "pdf.dll" && !*usePdf { return nil } // Omit specified files for _, e := range NW_OMIT { if e == info.Name() { return nil } } if _, err = kopsa.Copy(dstPath, path); err != nil { return err } return nil }