Initial Upload

Has basic functionality, still need to work on some stuff though
This commit is contained in:
Belac Darkstorm
2016-08-31 08:39:58 -05:00
committed by GitHub
parent 093ceeb483
commit f2621afdda
3 changed files with 210 additions and 0 deletions
+110
View File
@@ -0,0 +1,110 @@
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strings"
"github.com/nelsam/gxui/drivers/gl"
)
var (
appMaster map[string][]prtap
cats []string
)
type prtap struct {
name string
cat string
ex string
}
func main() {
appMaster = make(map[string][]prtap)
os.Mkdir("PortableApps", 0777)
pa, err := os.Open("PortableApps")
if err != nil {
panic(err)
}
appstmp, _ := pa.Readdir(-1)
var folds []string
for _, v := range appstmp {
if v.IsDir() {
folds = append(folds, v.Name())
}
}
sort.Strings(folds)
for _, v := range folds {
fi, _ := os.Open("PortableApps/" + v)
pat := processApp(fi)
if (pat != prtap{}) {
if _, ok := appMaster[pat.cat]; !ok {
cats = append(cats, pat.cat)
}
appMaster[pat.cat] = append(appMaster[pat.cat], pat)
}
}
gl.StartDriver(uiMain)
}
func processApp(fi *os.File) (out prtap) {
var hasEx bool
out.cat = "other"
fis, _ := fi.Readdir(-1)
for _, v := range fis {
if v.IsDir() && v.Name() == "App" {
fild, err := os.Open(fi.Name() + "/App/AppInfo/appinfo.ini")
fmt.Println(fi.Name() + "/App/AppInfo/appinfo.ini")
if err == nil {
fmt.Println("working!")
out.cat = getCat(fild)
out.name = getName(fild)
}
} else if !v.IsDir() {
//do os check here
if strings.HasSuffix(v.Name(), ".sh") {
hasEx = true
out.ex = fi.Name() + "/" + v.Name()
if out.name == "" {
out.name = strings.TrimSuffix(v.Name(), ".sh")
}
}
}
}
if hasEx {
return
}
return prtap{}
}
func getCat(fi *os.File) (out string) {
rdr := bufio.NewReader(fi)
var err error
var ln []byte
for err == nil {
ln, _, err = rdr.ReadLine()
str := string(ln)
if strings.HasPrefix(str, "Category=") {
out = strings.TrimPrefix(str, "Category=")
return
}
}
return
}
func getName(fi *os.File) (out string) {
rdr := bufio.NewReader(fi)
var err error
var ln []byte
for err == nil {
ln, _, err = rdr.ReadLine()
str := string(ln)
if strings.HasPrefix(str, "Name=") {
out = strings.TrimPrefix(str, "Name=")
return
}
}
return
}