package main import ( "crypto/rsa" "database/sql" "log" "os" "path/filepath" "strings" ) func init() { cd, err := os.UserCacheDir() if err != nil { log.Fatal(err) } if !fileExists(cd) || !fileExists(filepath.Join(cd, "murse")) { err = os.MkdirAll(filepath.Join(cd, "murse"), 0777) if err != nil { log.Fatal(err) } } } func getKey() (*rsa.PublicKey, error) { cd, err := os.UserCacheDir() if err != nil { return nil, err } f := filepath.Join(cd, "murse", "public.key") if fileExists(f) { b, err := os.ReadFile(f) if err != nil { return nil, err } k, err := parseKey(&b) if err != nil { return nil, err } return k, nil } k, err := downloadDevKey() if err != nil { return nil, err } return k, nil } // This will return the files required between two given versions func getRevisedFiles(db *sql.DB, lrev int, nrev int) (map[string]string, error) { rf := make(map[string]string) for i := lrev; i != nrev+1; i++ { mp, err := filesFromSQLite(db, i) if err != nil { return nil, err } for k, v := range mp { rf[k] = v } } return rf, nil } func isProtected(file string) bool { if strings.HasPrefix(file, "cfg/") || strings.HasSuffix(file, ".cfg") || strings.HasSuffix(file, ".dem") || strings.HasPrefix(file, "custom") || strings.HasPrefix(file, "downloads") || strings.HasSuffix(file, "cache") { return true } return false } func fileExists(file string) bool { _, err := os.Stat(file) if !os.IsNotExist(err) || err == nil { return true } return false }