1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-14 11:03:09 +02:00
sap-jenkins-library/pkg/npm/ignore.go
2022-03-02 14:06:51 +01:00

61 lines
1.1 KiB
Go

package npm
import (
"bufio"
"io/ioutil"
"os"
"path/filepath"
"strings"
"github.com/pkg/errors"
)
const (
ignoreFilename = ".npmignore"
)
var (
writeIgnoreFile = ioutil.WriteFile
)
func NewNPMIgnore(path string) NPMIgnore {
if !strings.HasSuffix(path, ignoreFilename) {
path = filepath.Join(path, ignoreFilename)
}
return NPMIgnore{filepath: path, values: []string{}}
}
type NPMIgnore struct {
filepath string
values []string
}
func (ignorefile *NPMIgnore) Write() error {
content := strings.Join(ignorefile.values, "\n")
if err := writeIgnoreFile(ignorefile.filepath, []byte(content+"\n"), 0644); err != nil {
return errors.Wrapf(err, "failed to write %s", ignorefile.filepath)
}
return nil
}
func (ignorefile *NPMIgnore) Load() error {
file, err := os.Open(ignorefile.filepath)
if err != nil {
return err
}
defer file.Close()
var lines []string
scanner := bufio.NewScanner(file)
for scanner.Scan() {
lines = append(lines, scanner.Text())
}
ignorefile.values = lines
return scanner.Err()
}
func (ignorefile *NPMIgnore) Add(value string) {
ignorefile.values = append(ignorefile.values, value)
}