47 lines
628 B
Go
47 lines
628 B
Go
package archive
|
|
|
|
import (
|
|
"archive/zip"
|
|
"os"
|
|
"fmt"
|
|
)
|
|
|
|
type Archive struct {
|
|
file *os.File
|
|
}
|
|
|
|
func Create(name string) (Archive, error) {
|
|
var archive Archive
|
|
|
|
file, err := os.Create(name)
|
|
if err != nil {
|
|
return archive, err
|
|
}
|
|
|
|
archive.setFile(file)
|
|
|
|
return archive, nil
|
|
}
|
|
|
|
func (a *Archive) AddFile(path, content string) error {
|
|
writer := zip.NewWriter(a.file)
|
|
defer writer.Close()
|
|
|
|
file, err := writer.Create(path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Fprintf(file, content)
|
|
|
|
return nil
|
|
}
|
|
|
|
func (a *Archive) Close() error {
|
|
return a.file.Close()
|
|
}
|
|
|
|
func (a *Archive) setFile(file *os.File) {
|
|
a.file = file
|
|
}
|