You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wiki/dev/installer/main.go

103 lines
2.2 KiB

package main
import (
"fmt"
"runtime"
"time"
"github.com/gosuri/uiprogress"
"github.com/manifoldco/promptui"
"github.com/ttacon/chalk"
)
var logo = `
__ __ _ _ _ _
/ / /\ \ (_) | _(_) (_)___
\ \/ \/ / | |/ / | | / __|
\ /\ /| | <| |_ | \__ \
\/ \/ |_|_|\_\_(_)/ |___/
|__/
`
var finish = `
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
| |
| Open http://localhost:3000/ in your browser |
| to complete the installation! |
| |
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
`
func main() {
fmt.Println(chalk.Yellow.Color(logo))
fmt.Println(chalk.Bold.TextStyle("Installer for Wiki.js 2.x"))
fmt.Printf("%s-%s\n\n", runtime.GOOS, runtime.GOARCH)
// Check system requirements
fmt.Println(chalk.Bold.TextStyle("Verifying system requirements..."))
CheckNodeJs()
CheckRAM()
fmt.Println(chalk.Bold.TextStyle("\nSetup"))
// Prompt for build to install
promptBuild := promptui.Select{
Label: "Select Build to install",
Items: []string{"Stable", "Dev"},
Templates: &promptui.SelectTemplates{
Help: " ",
Selected: chalk.Green.Color("✔") + " Build: {{ . }}",
},
}
_, _, err := promptBuild.Run()
if err != nil {
fmt.Printf("Prompt failed %v\n", err)
return
}
// Choose database driver
promptDB := promptui.Select{
Label: "Select database driver",
Items: []string{"MariaDB", "MySQL", "MS SQL Server", "PostgreSQL", "SQLite"},
Templates: &promptui.SelectTemplates{
Help: " ",
Selected: chalk.Green.Color("✔") + " Database Driver: {{ . }}",
},
Size: 10,
}
_, _, err = promptDB.Run()
// Port
promptPort := promptui.Prompt{
Label: "Port",
Default: "3000",
Templates: &promptui.PromptTemplates{
Success: chalk.Green.Color("✔") + " Port: {{ . }}",
},
}
_, err = promptPort.Run()
// Download archives...
fmt.Println(chalk.Bold.TextStyle("\nDownloading packages..."))
uiprogress.Start()
bar := uiprogress.AddBar(100)
bar.AppendCompleted()
bar.PrependElapsed()
for bar.Incr() {
time.Sleep(time.Millisecond * 20)
}
fmt.Println("\n" + chalk.Yellow.Color(finish))
}