terraform/vendor/github.com/hashicorp/go-slug
Sander van Harmelen 8a430113f6 gomod: update `go-tfe` 2019-04-08 11:13:14 +02:00
..
.gitignore vendor: catch up vendoring 2018-11-08 14:20:19 -08:00
LICENSE vendor: catch up vendoring 2018-11-08 14:20:19 -08:00
README.md vendor: catch up vendoring 2018-11-08 14:20:19 -08:00
go.mod gomod: update `go-tfe` 2019-04-08 11:13:14 +02:00
slug.go gomod: update `go-tfe` 2019-04-08 11:13:14 +02:00

README.md

go-slug

Build Status GitHub license GoDoc Go Report Card GitHub issues

Package go-slug offers functions for packing and unpacking Terraform Enterprise compatible slugs. Slugs are gzip compressed tar files containing Terraform configuration files.

Installation

Installation can be done with a normal go get:

go get -u github.com/hashicorp/go-slug

Documentation

For the complete usage of go-slug, see the full package docs.

Example

Packing or unpacking a slug is pretty straight forward as shown in the following example:

package main

import (
	"bytes"
	"ioutil"
	"log"
	"os"

	slug "github.com/hashicorp/go-slug"
)

func main() {
	// First create a buffer for storing the slug.
	slug := bytes.NewBuffer(nil)

	// Then call the Pack function with a directory path containing the
	// configuration files and an io.Writer to write the slug to.
	if _, err := Pack("test-fixtures/archive-dir", slug); err != nil {
		log.Fatal(err)
	}

	// Create a directory to unpack the slug contents into.
	dst, err := ioutil.TempDir("", "slug")
	if err != nil {
		log.Fatal(err)
	}
	defer os.RemoveAll(dst)

	// Unpacking a slug is done by calling the Unpack function with an
	// io.Reader to read the slug from and a directory path of an existing
	// directory to store the unpacked configuration files.
	if err := Unpack(slug, dst); err != nil {
		log.Fatal(err)
	}
}

Issues and Contributing

If you find an issue with this package, please report an issue. If you'd like, we welcome any contributions. Fork this repository and submit a pull request.