mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-21 11:17:44 +08:00
40 lines
768 B
Go
40 lines
768 B
Go
package bake
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func evaluatePaths(in []string) ([]string, error) {
|
|
out := make([]string, 0, len(in))
|
|
for _, p := range in {
|
|
if p == "/" {
|
|
out = append(out, getAllVolumes()...)
|
|
continue
|
|
}
|
|
v, err := filepath.Abs(p)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
v, err = filepath.EvalSymlinks(v)
|
|
if err != nil {
|
|
return nil, errors.Wrapf(err, "failed to evaluate path %q", p)
|
|
}
|
|
out = append(out, v)
|
|
}
|
|
return out, nil
|
|
}
|
|
|
|
func getAllVolumes() []string {
|
|
var volumes []string
|
|
for _, drive := range "ABCDEFGHIJKLMNOPQRSTUVWXYZ" {
|
|
p := string(drive) + ":" + string(filepath.Separator)
|
|
if _, err := os.Stat(p); !os.IsNotExist(err) {
|
|
volumes = append(volumes, p)
|
|
}
|
|
}
|
|
return volumes
|
|
}
|