Example #1
0
func (c *Commit) CreateArchive(path string, archiveType ArchiveType) error {
	f, err := os.OpenFile(path, os.O_CREATE, 0644)
	if err == nil {
		f.Close()
	}

	f, err = os.OpenFile(path, os.O_WRONLY|os.O_TRUNC|os.O_EXCL, 0644)
	if err != nil {
		return err
	}
	defer f.Close()

	var streamer cae.Streamer
	switch archiveType {
	case AT_ZIP:
		streamer = zip.NewStreamArachive(f)
	case AT_TARGZ:
		streamer = tz.NewStreamArachive(f)
	}
	defer streamer.Close()

	return createArchive(&c.Tree, streamer)
}