Skip to content

Commit

Permalink
可以帮助做到安装mah了
Browse files Browse the repository at this point in the history
  • Loading branch information
EricTianC committed Feb 17, 2021
1 parent bddbe5b commit 78b1733
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 42 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
!*.go
mcl
mcl.*
test
test*
20 changes: 18 additions & 2 deletions checkJRE.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,21 @@ func checkJRE() {
}

func checkJavaBin() bool {

switch runtime.GOOS {
case "macos":
matches, err := filepath.Glob("./jre/*/Contents/Home/bin/*")
if err == nil && len(matches) != 0 {
javaPath, _ = filepath.Split(matches[0])
}
default:
matches, err := filepath.Glob("./jre/*/bin/*")
if err == nil && len(matches) != 0 {
javaPath, _ = filepath.Split(matches[0])
}

}

jpath, err := exec.LookPath(JAVA)
if err != nil {
return false
Expand Down Expand Up @@ -94,17 +109,18 @@ func download_java() error {
if r.MatchString(link) {
name = link
arch_url = url + link
break
}
}
downloadFile(name, arch_url)
unpack(name, "./jre/")
switch runtime.GOOS {
case "macos":
matches, _ := filepath.Glob("./jre/*/Content/bin/*")
javaPath, _ = filepath.Split(matches[0])
javaPath = filepath.Dir(matches[0])
default:
matches, _ := filepath.Glob("./jre/*/bin/*")
javaPath, _ = filepath.Split(matches[0])
javaPath = filepath.Dir(matches[0])
}
log.Printf("已自动配置Java环境,请手动将%s添加到环境变量中", javaPath)
return nil
Expand Down
81 changes: 81 additions & 0 deletions check_mcl.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package main

import (
"bufio"
"fmt"
"io"
"log"
"os"
"os/exec"
"strings"
)

const (
REPOURL = "iTXTech/mirai-console-loader"
MCL_ZIP = "mcl.zip"
)

var MCL_BASE_ARG = []string{"-jar", "mcl.jar"}

func check_mcl() {
if _, err := os.Stat("mcl.jar"); err != nil {
get_mcl()
first_run_mcl()
}
}

func get_mcl() {
if _, err := os.Stat(MCL_ZIP); err != nil {
download_mcl()
}
err := unpack(MCL_ZIP, ".")
if err != nil {
log.Panicf("解压失败:%s", err)
}
os.Remove(MCL_ZIP)
}

func download_mcl() {
downUrl, err := get_latest_version_url(REPOURL, 0)
if err != nil {
log.Panic(err)
}
err = downloadFile(MCL_ZIP, downUrl)
if err != nil {
log.Panicf("下载失败:%s", err)
}
}

func first_run_mcl() {
args := append(MCL_BASE_ARG, os.Args...)
cmd := exec.Command(javaPath+JAVA, args...)
cmd.Stdin = os.Stdin
stdout, err := cmd.StdoutPipe()
if err != nil {
log.Fatal(err)
}
cmd.Stderr = os.Stderr
err = cmd.Start()
if err != nil {
log.Panic(err)
}
go wait_first_complete(stdout)
cmd.Wait()
args = append(MCL_BASE_ARG, "--update-package net.mamoe:mirai-api-http --channel stable --type plugin")
cmd = exec.Command(javaPath+JAVA, args...)
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Run()
}

func wait_first_complete(r io.Reader) {
scanner := bufio.NewScanner(r)
for scanner.Scan() {
text := scanner.Text()
if strings.Contains(text, "mirai-console started successfully.") {
fmt.Print("麻烦您手动输一下stop并回车,谢谢了")
}
fmt.Println(text)
}
}
33 changes: 0 additions & 33 deletions get_mcl.go

This file was deleted.

10 changes: 4 additions & 6 deletions main.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package main

import (
"fmt"
"os"
"os/exec"
)
Expand All @@ -10,11 +9,10 @@ var javaPath string

func main() {
checkJRE()
if _, err := os.Stat("mcl.jar"); err != nil {
get_mcl()
}
fmt.Println(javaPath + JAVA)
cmd := exec.Command(javaPath+JAVA, "-jar", "mcl.jar")
check_mcl()
args := []string{"-jar", "mcl.jar"}
args = append(args, os.Args...)
cmd := exec.Command(javaPath+JAVA, args...)
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
Expand Down

0 comments on commit 78b1733

Please sign in to comment.