| 
									
										
										
										
											2023-08-28 23:05:23 -05:00
										 |  |  | package config | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"errors" | 
					
						
							|  |  |  | 	"github.com/BurntSushi/toml" | 
					
						
							|  |  |  | 	"github.com/adrg/xdg" | 
					
						
							|  |  |  | 	"github.com/kirsle/configdir" | 
					
						
							|  |  |  | 	"os" | 
					
						
							|  |  |  | 	"path/filepath" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type Config struct { | 
					
						
							| 
									
										
										
										
											2023-08-29 20:18:27 -05:00
										 |  |  | 	Source           string            `toml:"source"` | 
					
						
							|  |  |  | 	SourceExtensions []string          `toml:"source_ext"` | 
					
						
							|  |  |  | 	Recurse          bool              `toml:"recurse"` | 
					
						
							|  |  |  | 	SavePath         string            `toml:"save_path"` | 
					
						
							|  |  |  | 	MusicPath        string            `toml:"music_path"` | 
					
						
							|  |  |  | 	Codec            string            `toml:"codec"` | 
					
						
							| 
									
										
										
										
											2023-09-08 09:35:49 -05:00
										 |  |  | 	FfEncoder        string            `toml:"ff_encoder"` | 
					
						
							| 
									
										
										
										
											2023-08-29 20:18:27 -05:00
										 |  |  | 	AllowedCodecs    []string          `toml:"allowed_codec"` | 
					
						
							|  |  |  | 	CodecExt         map[string]string `toml:"codec_ext"` | 
					
						
							| 
									
										
										
										
											2023-08-28 23:05:23 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var config Config | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func newConfig() Config { | 
					
						
							|  |  |  | 	return Config{ | 
					
						
							| 
									
										
										
										
											2023-08-29 10:58:58 -05:00
										 |  |  | 		Source:           xdg.UserDirs.Download, | 
					
						
							|  |  |  | 		SourceExtensions: []string{"webm", "mp4"}, | 
					
						
							|  |  |  | 		Recurse:          true, | 
					
						
							|  |  |  | 		SavePath:         filepath.Join(xdg.UserDirs.Documents, "StripBeats"), | 
					
						
							|  |  |  | 		MusicPath:        xdg.UserDirs.Music, | 
					
						
							| 
									
										
										
										
											2023-08-29 20:18:27 -05:00
										 |  |  | 		Codec:            "opus", | 
					
						
							| 
									
										
										
										
											2023-09-08 09:35:49 -05:00
										 |  |  | 		FfEncoder:        "libopus", | 
					
						
							| 
									
										
										
										
											2023-08-29 20:18:27 -05:00
										 |  |  | 		AllowedCodecs:    []string{"aac", "opus"}, | 
					
						
							|  |  |  | 		CodecExt:         map[string]string{"aac": "m4a", "opus": "opus"}, | 
					
						
							| 
									
										
										
										
											2023-08-28 23:05:23 -05:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func init() { | 
					
						
							|  |  |  | 	config = newConfig() | 
					
						
							|  |  |  | 	configPath := configdir.LocalConfig("strip-beats") | 
					
						
							|  |  |  | 	if err := configdir.MakePath(configPath); err != nil { | 
					
						
							|  |  |  | 		panic(err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	configFile := filepath.Join(configPath, "profile.toml") | 
					
						
							|  |  |  | 	if !exists(configFile) { | 
					
						
							|  |  |  | 		file, err := os.Create(configFile) | 
					
						
							|  |  |  | 		if err != nil { | 
					
						
							|  |  |  | 			panic(err) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		err = toml.NewEncoder(file).Encode(config) | 
					
						
							|  |  |  | 		if err != nil { | 
					
						
							|  |  |  | 			panic(err) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		file.Close() | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		if _, err := toml.DecodeFile(configFile, &config); err != nil { | 
					
						
							|  |  |  | 			panic(err) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func GetConfig() Config { | 
					
						
							|  |  |  | 	return config | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func exists(path string) bool { | 
					
						
							|  |  |  | 	_, err := os.Stat(path) | 
					
						
							|  |  |  | 	return !errors.Is(err, os.ErrNotExist) | 
					
						
							|  |  |  | } |