|
|
|
@ -302,6 +302,16 @@ func generate(cmd *cobra.Command, model, prompt string) error { |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func showLayer(l *server.Layer) { |
|
|
|
filename, err := server.GetBlobsPath(l.Digest) |
|
|
|
bts, err := os.ReadFile(filename) |
|
|
|
if err != nil { |
|
|
|
fmt.Printf("Couldn't read layer") |
|
|
|
return |
|
|
|
} |
|
|
|
fmt.Printf(string(bts) + "\n") |
|
|
|
} |
|
|
|
|
|
|
|
func generateInteractive(cmd *cobra.Command, model string) error { |
|
|
|
home, err := os.UserHomeDir() |
|
|
|
if err != nil { |
|
|
|
@ -322,6 +332,11 @@ func generateInteractive(cmd *cobra.Command, model string) error { |
|
|
|
readline.PcItem("default"), |
|
|
|
), |
|
|
|
), |
|
|
|
readline.PcItem("/show", |
|
|
|
readline.PcItem("license"), |
|
|
|
readline.PcItem("system"), |
|
|
|
readline.PcItem("template"), |
|
|
|
), |
|
|
|
readline.PcItem("/exit"), |
|
|
|
readline.PcItem("/bye"), |
|
|
|
) |
|
|
|
@ -393,9 +408,58 @@ func generateInteractive(cmd *cobra.Command, model string) error { |
|
|
|
case "emacs", "default": |
|
|
|
scanner.SetVimMode(false) |
|
|
|
continue |
|
|
|
default: |
|
|
|
usage() |
|
|
|
continue |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
usage() |
|
|
|
continue |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
usage() |
|
|
|
continue |
|
|
|
} |
|
|
|
case strings.HasPrefix(line, "/show"): |
|
|
|
args := strings.Fields(line) |
|
|
|
if len(args) > 1 { |
|
|
|
mp := server.ParseModelPath(model) |
|
|
|
manifest, err := server.GetManifest(mp) |
|
|
|
if err != nil { |
|
|
|
fmt.Printf("error: couldn't get a manifestfor this model") |
|
|
|
continue |
|
|
|
} |
|
|
|
switch args[1] { |
|
|
|
case "license": |
|
|
|
for _, l := range manifest.Layers { |
|
|
|
if l.MediaType == "application/vnd.ollama.image.license" { |
|
|
|
showLayer(l) |
|
|
|
} |
|
|
|
} |
|
|
|
continue |
|
|
|
case "system": |
|
|
|
for _, l := range manifest.Layers { |
|
|
|
if l.MediaType == "application/vnd.ollama.image.system" { |
|
|
|
showLayer(l) |
|
|
|
} |
|
|
|
} |
|
|
|
continue |
|
|
|
case "template": |
|
|
|
for _, l := range manifest.Layers { |
|
|
|
if l.MediaType == "application/vnd.ollama.image.template" { |
|
|
|
showLayer(l) |
|
|
|
} |
|
|
|
} |
|
|
|
continue |
|
|
|
default: |
|
|
|
usage() |
|
|
|
continue |
|
|
|
} |
|
|
|
} else { |
|
|
|
usage() |
|
|
|
continue |
|
|
|
} |
|
|
|
case line == "/help", line == "/?": |
|
|
|
usage() |
|
|
|
|