ollama

Форк
0
/
getstarted_windows.go 
44 строки · 1.1 Кб
1
package lifecycle
2

3
import (
4
	"fmt"
5
	"log/slog"
6
	"os"
7
	"os/exec"
8
	"path/filepath"
9
	"syscall"
10
)
11

12
func GetStarted() error {
13
	const CREATE_NEW_CONSOLE = 0x00000010
14
	var err error
15
	bannerScript := filepath.Join(AppDir, "ollama_welcome.ps1")
16
	args := []string{
17
		// TODO once we're signed, the execution policy bypass should be removed
18
		"powershell", "-noexit", "-ExecutionPolicy", "Bypass", "-nologo", "-file", bannerScript,
19
	}
20
	args[0], err = exec.LookPath(args[0])
21
	if err != nil {
22
		return err
23
	}
24

25
	// Make sure the script actually exists
26
	_, err = os.Stat(bannerScript)
27
	if err != nil {
28
		return fmt.Errorf("getting started banner script error %s", err)
29
	}
30

31
	slog.Info(fmt.Sprintf("opening getting started terminal with %v", args))
32
	attrs := &os.ProcAttr{
33
		Files: []*os.File{os.Stdin, os.Stdout, os.Stderr},
34
		Sys:   &syscall.SysProcAttr{CreationFlags: CREATE_NEW_CONSOLE, HideWindow: false},
35
	}
36
	proc, err := os.StartProcess(args[0], args, attrs)
37

38
	if err != nil {
39
		return fmt.Errorf("unable to start getting started shell %w", err)
40
	}
41

42
	slog.Debug(fmt.Sprintf("getting started terminal PID: %d", proc.Pid))
43
	return proc.Release()
44
}
45

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.