package mercuryUtil import ( "encoding/csv" "fmt" "os" "path" ) func GetAllFilesInDir(pathlikeBase string) (*[]string, error) { listing, err := os.ReadDir(pathlikeBase) res := make([]string, 0, 300) if err != nil { return nil, err } for _, list := range listing { if list.IsDir() || path.Ext(list.Name()) != ".csv" { fmt.Printf("Skipping: %s\n", list.Name()) continue } else { res = append(res, path.Join(pathlikeBase, list.Name())) } } return &res, nil } func CopyFile(inPath string, outpath string) error { b, err := os.ReadFile(inPath) if err != nil { return err } err = os.WriteFile(outpath, b, 0755) if err != nil { return err } return nil } func LoadCsv(pathlike string) (*[][]string, error) { f, err := os.OpenFile(pathlike, os.O_RDONLY, 0755) if err != nil { panic(err) } defer f.Close() reader := csv.NewReader(f) records, err := reader.ReadAll() if err != nil { return nil, err } return &records, nil } func StringArrEquals(a []string, b []string) bool { if len(a) != len(b) { return false } //should we do this? it screws up order independence //sort.Strings(a) //sort.Strings(b) for i := 0; i < len(a); i++ { vA := a[i] vB := b[i] if vA != vB { return false } } return true }