mirror of
https://github.com/opentffoundation/opentf.git
synced 2026-03-14 04:01:09 -04:00
* Importing the OpsGenie SDK * Adding the goreq dependency * Initial commit of the OpsGenie / User provider * Refactoring to return a single client * Adding an import test / fixing a copy/paste error * Adding support for OpsGenie docs * Scaffolding the user documentation for OpsGenie * Adding a TODO * Adding the User data source * Documentation for OpsGenie * Adding OpsGenie to the internal plugin list * Adding support for Teams * Documentation for OpsGenie Team's * Validation for Teams * Removing Description for now * Optional fields for a User: Locale/Timezone * Removing an implemented TODO * Running makefmt * Downloading about half the internet Someone witty might simply sign this commit with "npm install" * Adding validation to the user object * Fixing the docs * Adding a test creating multple users * Prompting for the API Key if it's not specified * Added a test for multiple users / requested changes * Fixing the linting
73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
package tar
|
|
|
|
import (
|
|
"archive/tar"
|
|
"io"
|
|
"os"
|
|
)
|
|
|
|
// Reader provides sequential access to the contents of a tar archive.
|
|
type Reader struct {
|
|
tar.Reader
|
|
}
|
|
|
|
// NewReader creates a new Reader reading from r.
|
|
func NewReader(r io.Reader) *Reader {
|
|
return &Reader{Reader: *tar.NewReader(r)}
|
|
}
|
|
|
|
// NextFile advances to the next file in the tar archive.
|
|
func (r *Reader) NextFile() (name string, err error) {
|
|
hdr, err := r.Next()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return hdr.Name, nil
|
|
}
|
|
|
|
// Writer provides sequential writing of a tar archive in POSIX.1 format.
|
|
type Writer struct {
|
|
tar.Writer
|
|
closers []io.Closer
|
|
}
|
|
|
|
// NewWriter creates a new Writer writing to w.
|
|
func NewWriter(w io.Writer) *Writer {
|
|
return &Writer{Writer: *tar.NewWriter(w)}
|
|
}
|
|
|
|
// NewWriteMultiCloser creates a new Writer writing to w that also closes all
|
|
// closers in order on close.
|
|
func NewWriteMultiCloser(w io.WriteCloser, closers ...io.Closer) *Writer {
|
|
return &Writer{
|
|
Writer: *tar.NewWriter(w),
|
|
closers: closers,
|
|
}
|
|
}
|
|
|
|
// NextFile computes and writes a header and prepares to accept the file's
|
|
// contents.
|
|
func (w *Writer) NextFile(name string, fi os.FileInfo) error {
|
|
if name == "" {
|
|
name = fi.Name()
|
|
}
|
|
hdr, err := tar.FileInfoHeader(fi, name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
hdr.Name = name
|
|
return w.WriteHeader(hdr)
|
|
}
|
|
|
|
// Close closes the tar archive and all other closers, flushing any unwritten
|
|
// data to the underlying writer.
|
|
func (w *Writer) Close() error {
|
|
err := w.Writer.Close()
|
|
for _, c := range w.closers {
|
|
if cerr := c.Close(); cerr != nil && err == nil {
|
|
err = cerr
|
|
}
|
|
}
|
|
return err
|
|
}
|