-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtypes.go
74 lines (66 loc) · 1.81 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package main
import (
"fmt"
"log"
)
// Stack представляет тип стека технологий
type Stack string
const (
FrontendStack Stack = "Frontend"
JavaKotlinStack Stack = "Java/Kotlin"
GolangStack Stack = "Golang"
PythonStack Stack = "Python"
EssentialStack Stack = "Essential Tools"
)
// Tool представляет инструмент разработчика
type Tool struct {
Command string
Description string
InstallFunc func() error
}
// install устанавливает инструмент
func (t Tool) install(osType string) error {
if !isInstalled(t.Command, osType) {
if t.InstallFunc != nil {
return t.InstallFunc()
}
return executeCommand(osType, "install", t.Command)
}
fmt.Printf("%s уже установлен.\n", t.Description)
return nil
}
// update обновляет инструмент
func (t Tool) update(osType string) error {
if isInstalled(t.Command, osType) {
log.Printf("Обновление %s...\n", t.Description)
return executeCommand(osType, "update", t.Command)
}
fmt.Printf("%s не установлен.\n", t.Description)
return nil
}
// uninstall удаляет инструмент
func (t Tool) uninstall(osType string) error {
if isInstalled(t.Command, osType) {
log.Printf("Удаление %s...\n", t.Description)
return executeCommand(osType, "uninstall", t.Command)
}
fmt.Printf("%s не установлен.\n", t.Description)
return nil
}
// StringToStack конвертирует строку в тип Stack
func StringToStack(s string) Stack {
switch s {
case "Frontend":
return FrontendStack
case "Java/Kotlin":
return JavaKotlinStack
case "Golang":
return GolangStack
case "Python":
return PythonStack
case "Essential Tools":
return EssentialStack
default:
return EssentialStack
}
}