コード例 #1
0
ファイル: main.go プロジェクト: Varjelus/nwbob
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())
	}
}
コード例 #2
0
ファイル: main.go プロジェクト: Varjelus/nwbob
// 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
}