packaging

package
v0.40.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2020 License: BSD-3-Clause Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DarwinBundleTask = &packagingTask{
	packagingFormatName: "darwin-bundle",
	templateFiles: map[string]string{
		"darwin-bundle/Info.plist.tmpl.tmpl": "{{.projectName}}.app/Contents/Info.plist.tmpl",
	},
	executableFiles:           []string{},
	buildOutputDirectory:      "{{.projectName}}.app/Contents/MacOS",
	packagingScriptTemplate:   "mkdir -p {{.projectName}}.app/Contents/Resources && png2icns {{.projectName}}.app/Contents/Resources/icon.icns {{.projectName}}.app/Contents/MacOS/assets/icon.png",
	outputFileExtension:       "app",
	outputFileContainsVersion: false,
}

DarwinBundleTask packaging for darwin as bundle

View Source
var DarwinDmgTask = &packagingTask{
	packagingFormatName: "darwin-dmg",
	dependsOn: map[*packagingTask]string{
		DarwinBundleTask: "dmgdir",
	},
	packagingScriptTemplate:   "ln -sf /Applications dmgdir/Applications && genisoimage -V '{{.projectName}}' -D -R -apple -no-pad -o '{{.projectName}}-{{.version}}.dmg' dmgdir",
	outputFileExtension:       "dmg",
	outputFileContainsVersion: true,
	skipAssertInitialized:     true,
}

DarwinDmgTask packaging for darwin as dmg

View Source
var DarwinPkgTask = &packagingTask{
	packagingFormatName: "darwin-pkg",
	dependsOn: map[*packagingTask]string{
		DarwinBundleTask: "flat/root/Applications",
	},
	templateFiles: map[string]string{
		"darwin-pkg/PackageInfo.tmpl.tmpl":  "flat/base.pkg/PackageInfo.tmpl",
		"darwin-pkg/Distribution.tmpl.tmpl": "flat/Distribution.tmpl",
	},
	packagingScriptTemplate:   "(cd flat/root && find . | cpio -o --format odc --owner 0:80 | gzip -c ) > flat/base.pkg/Payload && mkbom -u 0 -g 80 flat/root flat/base.pkg/Bom && (cd flat && xar --compression none -cf '../{{.projectName}}-{{.version}}.pkg' * )",
	outputFileExtension:       "pkg",
	outputFileContainsVersion: true,
}

DarwinPkgTask packaging for darwin as pkg

View Source
var LinuxAppImageTask = &packagingTask{
	packagingFormatName: "linux-appimage",
	templateFiles: map[string]string{
		"linux-appimage/AppRun.tmpl": "AppRun",
		"linux/app.desktop.tmpl":     "{{.projectName}}.desktop",
	},
	executableFiles: []string{
		"AppRun",
		"{{.projectName}}.desktop",
	},
	linuxDesktopFileIconPath:  "/build/assets/icon",
	buildOutputDirectory:      "build",
	packagingScriptTemplate:   "appimagetool . && mv {{.projectName}}-x86_64.AppImage {{.projectName}}-{{.version}}.AppImage",
	outputFileExtension:       "AppImage",
	outputFileContainsVersion: true,
}

LinuxAppImageTask packaging for linux as AppImage

View Source
var LinuxDebTask = &packagingTask{
	packagingFormatName: "linux-deb",
	templateFiles: map[string]string{
		"linux-deb/control.tmpl.tmpl": "DEBIAN/control.tmpl",
		"linux/bin.tmpl":              "usr/bin/{{.projectName}}",
		"linux/app.desktop.tmpl":      "usr/share/applications/{{.projectName}}.desktop",
	},
	executableFiles: []string{
		"usr/bin/{{.projectName}}",
		"usr/share/applications/{{.projectName}}.desktop",
	},
	linuxDesktopFileExecutablePath: "/usr/lib/{{.projectName}}/{{.projectName}}",
	linuxDesktopFileIconPath:       "/usr/lib/{{.projectName}}/assets/icon.png",
	buildOutputDirectory:           "usr/lib/{{.projectName}}",
	packagingScriptTemplate:        "dpkg-deb --build . {{.projectName}}-{{.version}}.deb",
	outputFileExtension:            "deb",
	outputFileContainsVersion:      true,
}

LinuxDebTask packaging for linux as deb

View Source
var LinuxPkgTask = &packagingTask{
	packagingFormatName: "linux-pkg",
	templateFiles: map[string]string{
		"linux-pkg/PKGBUILD.tmpl.tmpl": "PKGBUILD.tmpl",
		"linux/bin.tmpl":               "src/usr/bin/{{.projectName}}",
		"linux/app.desktop.tmpl":       "src/usr/share/applications/{{.projectName}}.desktop",
	},
	executableFiles: []string{
		"src/usr/bin/{{.projectName}}",
		"src/usr/share/applications/{{.projectName}}.desktop",
	},
	linuxDesktopFileExecutablePath: "/usr/lib/{{.projectName}}/{{.projectName}}",
	linuxDesktopFileIconPath:       "/usr/lib/{{.projectName}}/assets/icon.png",
	buildOutputDirectory:           "src/usr/lib/{{.projectName}}",
	packagingScriptTemplate:        "makepkg && mv {{.projectName}}-{{.version}}-{{.release}}-x86_64.pkg.tar.xz {{.projectName}}-{{.version}}.pkg.tar.xz",
	outputFileExtension:            "pkg.tar.xz",
	outputFileContainsVersion:      true,
}

LinuxPkgTask packaging for linux as pacman pkg

View Source
var LinuxRpmTask = &packagingTask{
	packagingFormatName: "linux-rpm",
	templateFiles: map[string]string{
		"linux-rpm/app.spec.tmpl.tmpl": "rpmbuild/SPECS/{{.projectName}}.spec.tmpl",
		"linux/bin.tmpl":               "rpmbuild/BUILDROOT/{{.projectName}}{{`-{{.version}}-{{.release}}`}}.x86_64/usr/bin/{{.projectName}}",
		"linux/app.desktop.tmpl":       "rpmbuild/BUILDROOT/{{.projectName}}{{`-{{.version}}-{{.release}}`}}.x86_64/usr/share/applications/{{.projectName}}.desktop",
	},
	executableFiles: []string{
		"rpmbuild/BUILDROOT/{{.projectName}}-{{.version}}-{{.release}}.x86_64/usr/bin/{{.projectName}}",
		"rpmbuild/BUILDROOT/{{.projectName}}-{{.version}}-{{.release}}.x86_64/usr/share/applications/{{.projectName}}.desktop",
	},
	linuxDesktopFileExecutablePath: "/usr/lib/{{.projectName}}/{{.projectName}}",
	linuxDesktopFileIconPath:       "/usr/lib/{{.projectName}}/assets/icon.png",
	buildOutputDirectory:           "rpmbuild/BUILDROOT/{{.projectName}}-{{.version}}-{{.version}}.x86_64/usr/lib/{{.projectName}}",
	packagingScriptTemplate:        "rpmbuild --define '_topdir /app/rpmbuild' -ba /app/rpmbuild/SPECS/{{.projectName}}.spec && rm /root/.rpmdb -r && mv rpmbuild/RPMS/x86_64/{{.projectName}}-{{.version}}-{{.version}}.x86_64.rpm {{.projectName}}-{{.version}}.rpm",
	outputFileExtension:            "rpm",
	outputFileContainsVersion:      true,
}

LinuxRpmTask packaging for linux as rpm

View Source
var LinuxSnapTask = &packagingTask{
	packagingFormatName: "linux-snap",
	templateFiles: map[string]string{
		"linux-snap/snapcraft.yaml.tmpl.tmpl": "snap/snapcraft.yaml.tmpl",
		"linux/app.desktop.tmpl":              "snap/local/{{.projectName}}.desktop",
	},
	linuxDesktopFileExecutablePath: "/{{.projectName}}",
	linuxDesktopFileIconPath:       "/icon.png",
	buildOutputDirectory:           "build",
	packagingScriptTemplate:        "snapcraft && mv {{.strippedProjectName}}_{{.version}}_{{.arch}}.snap {{.projectName}}-{{.version}}.snap",
	outputFileExtension:            "snap",
	outputFileContainsVersion:      true,
}

LinuxSnapTask packaging for linux as snap

View Source
var WindowsMsiTask = &packagingTask{
	packagingFormatName: "windows-msi",
	templateFiles: map[string]string{
		"windows-msi/app.wxs.tmpl.tmpl": "{{.projectName}}.wxs.tmpl",
	},
	buildOutputDirectory:      "build",
	packagingScriptTemplate:   "convert -resize x16 build/assets/icon.png build/assets/icon.ico && wixl -v {{.projectName}}.wxs && mv {{.projectName}}.msi {{.projectName}}-{{.version}}.msi",
	outputFileExtension:       "msi",
	outputFileContainsVersion: true,
	generateBuildFiles: func(projectName, tmpPath string) {
		directoriesFilePath, err := filepath.Abs(filepath.Join(tmpPath, "directories.wxi"))
		if err != nil {
			log.Errorf("Failed to resolve absolute path for directories.wxi file %s: %v", projectName, err)
			os.Exit(1)
		}
		directoriesFile, err := os.Create(directoriesFilePath)
		if err != nil {
			log.Errorf("Failed to create directories.wxi file %s: %v", projectName, err)
			os.Exit(1)
		}
		directoryRefsFilePath, err := filepath.Abs(filepath.Join(tmpPath, "directory_refs.wxi"))
		if err != nil {
			log.Errorf("Failed to resolve absolute path for directory_refs.wxi file %s: %v", projectName, err)
			os.Exit(1)
		}
		directoryRefsFile, err := os.Create(directoryRefsFilePath)
		if err != nil {
			log.Errorf("Failed to create directory_refs.wxi file %s: %v", projectName, err)
			os.Exit(1)
		}
		componentRefsFilePath, err := filepath.Abs(filepath.Join(tmpPath, "component_refs.wxi"))
		if err != nil {
			log.Errorf("Failed to resolve absolute path for component_refs.wxi file %s: %v", projectName, err)
			os.Exit(1)
		}
		componentRefsFile, err := os.Create(componentRefsFilePath)
		if err != nil {
			log.Errorf("Failed to create component_refs.wxi file %s: %v", projectName, err)
			os.Exit(1)
		}
		directoriesFileContent = append(directoriesFileContent, `<Include>`)
		directoryRefsFileContent = append(directoryRefsFileContent, `<Include>`)
		componentRefsFileContent = append(componentRefsFileContent, `<Include>`)
		windowsMsiProcessFiles(filepath.Join(tmpPath, "build", "flutter_assets"))
		directoriesFileContent = append(directoriesFileContent, `</Include>`)
		directoryRefsFileContent = append(directoryRefsFileContent, `</Include>`)
		componentRefsFileContent = append(componentRefsFileContent, `</Include>`)

		for _, line := range directoriesFileContent {
			if _, err := directoriesFile.WriteString(line + "\n"); err != nil {
				log.Errorf("Could not write directories.wxi: %v", projectName, err)
				os.Exit(1)
			}
		}
		err = directoriesFile.Close()
		if err != nil {
			log.Errorf("Could not close directories.wxi: %v", projectName, err)
			os.Exit(1)
		}
		for _, line := range directoryRefsFileContent {
			if _, err := directoryRefsFile.WriteString(line + "\n"); err != nil {
				log.Errorf("Could not write directory_refs.wxi: %v", projectName, err)
				os.Exit(1)
			}
		}
		err = directoryRefsFile.Close()
		if err != nil {
			log.Errorf("Could not close directory_refs.wxi: %v", projectName, err)
			os.Exit(1)
		}
		for _, line := range componentRefsFileContent {
			if _, err := componentRefsFile.WriteString(line + "\n"); err != nil {
				log.Errorf("Could not write component_refs.wxi: %v", projectName, err)
				os.Exit(1)
			}
		}
		err = componentRefsFile.Close()
		if err != nil {
			log.Errorf("Could not close component_refs.wxi: %v", projectName, err)
			os.Exit(1)
		}
	},
}

WindowsMsiTask packaging for windows as msi

Functions

This section is empty.

Types

type Task added in v0.40.0

type Task interface {
	Name() string
	Init()
	IsInitialized() bool
	AssertInitialized()
	Pack(buildVersion string)
}

Task contains all configuration options for a given packaging method. TODO: Rename to something that suits it more? Mabe Executor?

var NoopTask Task = &noopTask{}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL