123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package sqlpath
- import (
- "fmt"
- "io/ioutil"
- "os"
- "path/filepath"
- "strings"
- "github.com/kyleconroy/sqlc/internal/migrations"
- )
- // Return a list of SQL files in the listed paths. Only includes files ending
- // in .sql. Omits hidden files, directories, and migrations.
- func Glob(paths []string) ([]string, error) {
- var files []string
- for _, path := range paths {
- f, err := os.Stat(path)
- if err != nil {
- return nil, fmt.Errorf("path %s does not exist", path)
- }
- if f.IsDir() {
- listing, err := ioutil.ReadDir(path)
- if err != nil {
- return nil, err
- }
- for _, f := range listing {
- files = append(files, filepath.Join(path, f.Name()))
- }
- } else {
- files = append(files, path)
- }
- }
- var sqlFiles []string
- for _, file := range files {
- if !strings.HasSuffix(file, ".sql") {
- continue
- }
- if strings.HasPrefix(filepath.Base(file), ".") {
- continue
- }
- if migrations.IsDown(filepath.Base(file)) {
- continue
- }
- sqlFiles = append(sqlFiles, file)
- }
- return sqlFiles, nil
- }
|