Skip to content

Commit

Permalink
Renamed to x-tar
Browse files Browse the repository at this point in the history
  • Loading branch information
fd committed May 13, 2016
1 parent a2a7e85 commit a8bbaf7
Show file tree
Hide file tree
Showing 43 changed files with 9,898 additions and 20 deletions.
1 change: 0 additions & 1 deletion cmd/tar-build/main.go

This file was deleted.

77 changes: 77 additions & 0 deletions cmd/x-tar/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package main

import (
"bytes"
"fmt"
"io"
"io/ioutil"
"os"
"path"

"github.com/fd/tar-utils/pkg/build"

"gopkg.in/alecthomas/kingpin.v2"
"limbo.services/version"
)

func main() {
err := run()
if err != nil {
fmt.Fprintf(os.Stderr, "error: %s\n", err)
os.Exit(1)
}
}

func run() error {
var (
contextDir string
tarfileName string
outputTar string
)

app := kingpin.New("x-tar", "Tar utilities").Version(version.Get().String()).Author(version.Get().ReleasedBy)

buildCmd := app.Command("build", "Make a new tar file")
buildCmd.Arg("context-dir", "The context directory for the build").Default(".").ExistingDirVar(&contextDir)
buildCmd.Flag("tarfile", "Tarfile location").Short('t').PlaceHolder("FILE").StringVar(&tarfileName)
buildCmd.Flag("output", "Path to output Tar archive").Short('o').Default("-").PlaceHolder("FILE").StringVar(&outputTar)

switch kingpin.MustParse(app.Parse(os.Args[1:])) {

case buildCmd.FullCommand():
if tarfileName == "" {
tarfileName = path.Join(contextDir, "Tarfile")
}

var buf bytes.Buffer

err := tarbuild.Build(&buf, contextDir, tarfileName)
if err != nil {
return err
}

err = putStream(outputTar, &buf)
if err != nil {
return err
}
}

return nil
}

const stdio = "-"

func openStream(name string) (io.Reader, error) {
if name == stdio {
return os.Stdin, nil
}
return os.Open(name)
}

func putStream(name string, buf *bytes.Buffer) error {
if name == stdio {
_, err := io.Copy(os.Stdout, buf)
return err
}
return ioutil.WriteFile(name, buf.Bytes(), 0644)
}
2 changes: 1 addition & 1 deletion pkg/build/tarbuild.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func Build(dst io.Writer, wd, conf string) error {
w = tar.NewWriter(&buf)
)

err = dstFS.writeEntriesToTar("/", w)
err = dstFS.writeEntriesToTar("", w)
if err != nil {
return err
}
Expand Down
39 changes: 21 additions & 18 deletions pkg/build/vfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"path/filepath"
"sort"
"strings"
"time"

"github.com/sabhiram/go-git-ignore"
)
Expand Down Expand Up @@ -490,17 +491,19 @@ func (d *Dir) writeEntriesToTar(path string, w *tar.Writer) error {
return nil
}

var ftime = time.Date(1988, time.February, 1, 0, 0, 0, 0, time.UTC)

func (d *Dir) writeToTar(path string, w *tar.Writer) error {
h := tar.Header{
Typeflag: tar.TypeDir,
Mode: int64(d.Perm | c_ISDIR),
Name: path + "/",
Uname: d.User,
Gname: d.Group,
Size: 0,
// AccessTime:
// ChangeTime:
// ModTime:
Typeflag: tar.TypeDir,
Mode: int64(d.Perm | c_ISDIR),
Name: path + "/",
Uname: d.User,
Gname: d.Group,
Size: 0,
AccessTime: ftime,
ChangeTime: ftime,
ModTime: ftime,
}

err := w.WriteHeader(&h)
Expand All @@ -518,15 +521,15 @@ func (f *File) writeToTar(path string, w *tar.Writer) error {
}

h := tar.Header{
Typeflag: tar.TypeReg,
Mode: int64(f.Perm | c_ISREG),
Name: path,
Uname: f.User,
Gname: f.Group,
Size: int64(len(data)),
// AccessTime:
// ChangeTime:
// ModTime:
Typeflag: tar.TypeReg,
Mode: int64(f.Perm | c_ISREG),
Name: path,
Uname: f.User,
Gname: f.Group,
Size: int64(len(data)),
AccessTime: ftime,
ChangeTime: ftime,
ModTime: ftime,
}

err = w.WriteHeader(&h)
Expand Down
27 changes: 27 additions & 0 deletions vendor/github.com/alecthomas/template/LICENSE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 25 additions & 0 deletions vendor/github.com/alecthomas/template/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit a8bbaf7

Please sign in to comment.