<!-- Code generated by gomarkdoc. DO NOT EDIT -->

In Development Package, API may change between versions.

import "github.com/egdaemon/eg/runtime/x/wasi/egtarball"

Package egtarball basic functionality for creating tar balls. it proves the following functionality: - build deterministic paths to a directory for adding contents. - build dterministric archive names from patterns using information provided by the eg environment. - common patterns Assumptions: - tar/gh cli commands are available. - the archive patterns used are unique within the repository the workload is associated with. Compability guarentee: as long as you only use the functions provided by this package for accessing and generating the tarballs we'll ensure no breaking changes.

<a name="Archive"></a>

func Archive

func Archive(pattern string) string

Return the path to the archive for the given pattern after Pack has been called.

<a name="Clean"></a>

func Clean

func Clean(operations ...eg.OpFn) eg.OpFn

deprecated: force a clean tarball directory

<a name="GitPattern"></a>

func GitPattern

func GitPattern(prefix string) string

simple template for naming a tarball from git commit information. see eggit.commit.StringReplace for details.

<a name="Github"></a>

func Github

func Github(patterns ...string) eg.OpFn

Release to github, this is very experimental. WARNING: for local environments this assumes you've provided the token to the eg command. e.g.) GH_TOKEN="$(gh auth token)" eg compute local -e GH_TOKEN WARNING: for hosted environments: we've assumed the git auth access token for pulling the repository will work. this has not yet been validated. and likely needs permission updates.

<a name="GithubDownloadURL"></a>

func GithubDownloadURL

func GithubDownloadURL(pattern string) string

generate the github download url

<a name="GithubRelease"></a>

func GithubRelease

func GithubRelease() string

provides the value that

<a name="Name"></a>

func Name

func Name(pattern string) string

replaces the substitution values within the pattern, resulting in the final resulting archive file's name.

<a name="Pack"></a>

func Pack

func Pack(pattern string) eg.OpFn

create a tarball from the contents of the archive's folder.

<details><summary>Example</summary> <p>
package main

import (
	"context"
	"log"

	"github.com/egdaemon/eg/runtime/wasi/eg"
	"github.com/egdaemon/eg/runtime/wasi/egenv"
	"github.com/egdaemon/eg/runtime/wasi/shell"
	"github.com/egdaemon/eg/runtime/x/wasi/egtarball"
)

func archive() string {
	return egtarball.GitPattern("example")
}

func Pack(ctx context.Context, op eg.Op) error {
	archive := egtarball.GitPattern("example")
	return eg.Perform(
		ctx,
		egtarball.Pack(archive),
		egtarball.SHA256Op(archive),
	)
}

func Populate(ctx context.Context, _ eg.Op) error {
	runtime := shell.Runtime().
		Environ("CONTENT", egenv.EphemeralDirectory("example.txt")).
		Environ("ARCHIVE", egtarball.Path(archive()))
	return shell.Run(
		ctx,
		runtime.Newf("printf \"hello world\n\" | tee ${CONTENT}"),
		runtime.Newf("cp ${CONTENT} ${ARCHIVE}"),
	)
}

func main() {
	var (
		err error
	)

	ctx := context.Background()
	err = eg.Perform(
		ctx,
		Populate,
		Pack,
	)
	if err != nil {
		log.Fatalln(err)
	}
}
</p> </details>

<a name="Path"></a>

func Path

func Path(pattern string) string

Path generate a unique directory for the contents that will be inside the archive can be placed.

<a name="SHA256"></a>

func SHA256

func SHA256(pattern string) string

Reads the cached sha256 from disk, if it cant locate it, recalculates and stores it. will panic if there is an issue calculating the sha256/persisting

<a name="SHA256Op"></a>

func SHA256Op

func SHA256Op(pattern string) eg.OpFn