|
@@ -17,7 +17,6 @@ import (
|
|
|
"os"
|
|
|
"os/signal"
|
|
|
"path/filepath"
|
|
|
- "regexp"
|
|
|
"runtime"
|
|
|
"strings"
|
|
|
"syscall"
|
|
@@ -57,12 +56,13 @@ func CreateHandler(cmd *cobra.Command, args []string) error {
|
|
|
p := progress.NewProgress(os.Stderr)
|
|
|
defer p.Stop()
|
|
|
|
|
|
- modelfile, err := os.ReadFile(filename)
|
|
|
+ modelfile, err := os.Open(filename)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
+ defer modelfile.Close()
|
|
|
|
|
|
- commands, err := parser.Parse(bytes.NewReader(modelfile))
|
|
|
+ commands, err := parser.Parse(modelfile)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
@@ -76,10 +76,10 @@ func CreateHandler(cmd *cobra.Command, args []string) error {
|
|
|
spinner := progress.NewSpinner(status)
|
|
|
p.Add(status, spinner)
|
|
|
|
|
|
- for _, c := range commands {
|
|
|
- switch c.Name {
|
|
|
+ for i := range commands {
|
|
|
+ switch commands[i].Name {
|
|
|
case "model", "adapter":
|
|
|
- path := c.Args
|
|
|
+ path := commands[i].Args
|
|
|
if path == "~" {
|
|
|
path = home
|
|
|
} else if strings.HasPrefix(path, "~/") {
|
|
@@ -91,7 +91,7 @@ func CreateHandler(cmd *cobra.Command, args []string) error {
|
|
|
}
|
|
|
|
|
|
fi, err := os.Stat(path)
|
|
|
- if errors.Is(err, os.ErrNotExist) && c.Name == "model" {
|
|
|
+ if errors.Is(err, os.ErrNotExist) && commands[i].Name == "model" {
|
|
|
continue
|
|
|
} else if err != nil {
|
|
|
return err
|
|
@@ -114,13 +114,7 @@ func CreateHandler(cmd *cobra.Command, args []string) error {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- name := c.Name
|
|
|
- if c.Name == "model" {
|
|
|
- name = "from"
|
|
|
- }
|
|
|
-
|
|
|
- re := regexp.MustCompile(fmt.Sprintf(`(?im)^(%s)\s+%s\s*$`, name, c.Args))
|
|
|
- modelfile = re.ReplaceAll(modelfile, []byte("$1 @"+digest))
|
|
|
+ commands[i].Args = "@"+digest
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -150,7 +144,7 @@ func CreateHandler(cmd *cobra.Command, args []string) error {
|
|
|
|
|
|
quantization, _ := cmd.Flags().GetString("quantization")
|
|
|
|
|
|
- request := api.CreateRequest{Name: args[0], Modelfile: string(modelfile), Quantization: quantization}
|
|
|
+ request := api.CreateRequest{Name: args[0], Modelfile: parser.Format(commands), Quantization: quantization}
|
|
|
if err := client.Create(cmd.Context(), &request, fn); err != nil {
|
|
|
return err
|
|
|
}
|