fix relative path on create (#1222)

This commit is contained in:
Bruce MacDonald
2023-11-21 15:43:17 -05:00
committed by GitHub
parent 2eaa95b417
commit 37d95157df
2 changed files with 18 additions and 13 deletions

View File

@@ -228,10 +228,10 @@ func GetModel(name string) (*Model, error) {
return model, nil
}
func realpath(p string) string {
abspath, err := filepath.Abs(p)
func realpath(mfDir, from string) string {
abspath, err := filepath.Abs(from)
if err != nil {
return p
return from
}
home, err := os.UserHomeDir()
@@ -239,16 +239,21 @@ func realpath(p string) string {
return abspath
}
if p == "~" {
if from == "~" {
return home
} else if strings.HasPrefix(p, "~/") {
return filepath.Join(home, p[2:])
} else if strings.HasPrefix(from, "~/") {
return filepath.Join(home, from[2:])
}
if _, err := os.Stat(filepath.Join(mfDir, from)); err == nil {
// this is a file relative to the Modelfile
return filepath.Join(mfDir, from)
}
return abspath
}
func CreateModel(ctx context.Context, name string, commands []parser.Command, fn func(resp api.ProgressResponse)) error {
func CreateModel(ctx context.Context, name, modelFileDir string, commands []parser.Command, fn func(resp api.ProgressResponse)) error {
config := ConfigV2{
OS: "linux",
Architecture: "amd64",
@@ -276,7 +281,7 @@ func CreateModel(ctx context.Context, name string, commands []parser.Command, fn
c.Args = blobPath
}
bin, err := os.Open(realpath(c.Args))
bin, err := os.Open(realpath(modelFileDir, c.Args))
if err != nil {
// not a file on disk so must be a model reference
modelpath := ParseModelPath(c.Args)
@@ -372,7 +377,7 @@ func CreateModel(ctx context.Context, name string, commands []parser.Command, fn
layers = append(layers, layer)
case "adapter":
fn(api.ProgressResponse{Status: "creating adapter layer"})
bin, err := os.Open(realpath(c.Args))
bin, err := os.Open(realpath(modelFileDir, c.Args))
if err != nil {
return err
}