✨ Write config file
This commit is contained in:
		
					parent
					
						
							
								a6f3cf39a0
							
						
					
				
			
			
				commit
				
					
						3546c1d7f6
					
				
			
		
					 2 changed files with 76 additions and 7 deletions
				
			
		
							
								
								
									
										56
									
								
								cmd/config.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								cmd/config.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,56 @@ | ||||||
|  | /* | ||||||
|  | Copyright © 2024 Dan Jones <danjones@goodevilgenius.org> | ||||||
|  | 
 | ||||||
|  | This program is free software: you can redistribute it and/or modify | ||||||
|  | it under the terms of the GNU Affero General Public License as published by | ||||||
|  | the Free Software Foundation, either version 3 of the License, or | ||||||
|  | (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | This program is distributed in the hope that it will be useful, | ||||||
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | GNU Affero General Public License for more details. | ||||||
|  | 
 | ||||||
|  | You should have received a copy of the GNU Affero General Public License | ||||||
|  | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | */ | ||||||
|  | package cmd | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"os" | ||||||
|  | 
 | ||||||
|  | 	"codeberg.org/danjones000/my-log/config" | ||||||
|  | 	"github.com/spf13/cobra" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // configCmd represents the config command | ||||||
|  | var configCmd = &cobra.Command{ | ||||||
|  | 	Use:   "config", | ||||||
|  | 	Short: "Save default config to file", | ||||||
|  | 	//Long: ``, | ||||||
|  | 	SilenceUsage: true, | ||||||
|  | 	RunE: func(cmd *cobra.Command, args []string) error { | ||||||
|  | 		force, _ := cmd.Flags().GetBool("force") | ||||||
|  | 		if !force { | ||||||
|  | 			_, err := os.Stat(config.ConfigPath) | ||||||
|  | 			if !os.IsNotExist(err) { | ||||||
|  | 				return fmt.Errorf("%s already exists. Use -f to overwrite", config.ConfigPath) | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		f, err := os.Create(config.ConfigPath) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 		defer f.Close() | ||||||
|  | 		c := config.DefaultStr() | ||||||
|  | 		fmt.Fprint(f, c) | ||||||
|  | 		return nil | ||||||
|  | 	}, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func init() { | ||||||
|  | 	rootCmd.AddCommand(configCmd) | ||||||
|  | 
 | ||||||
|  | 	configCmd.Flags().BoolP("force", "f", false, "Force overwrite") | ||||||
|  | } | ||||||
|  | @ -8,23 +8,36 @@ import ( | ||||||
| 	"github.com/BurntSushi/toml" | 	"github.com/BurntSushi/toml" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| const ConfigStr = ` | const ConfigStr = `# Configuration for my-log | ||||||
| [input] |  | ||||||
| ext = "txt" |  | ||||||
| recurse = true |  | ||||||
| path = "%s" |  | ||||||
| 
 | 
 | ||||||
|  | [input] | ||||||
|  | # Path to where the log files are stored | ||||||
|  | path = "%s" | ||||||
|  | # File extension for log files | ||||||
|  | ext = "txt" | ||||||
|  | # Whether to look in sub-folders | ||||||
|  | recurse = true | ||||||
|  | 
 | ||||||
|  | # config for output types | ||||||
| [output] | [output] | ||||||
|  | 
 | ||||||
|  | # This one just prints the logs to stdout when run | ||||||
| [output.stdout] | [output.stdout] | ||||||
| enabled = true | enabled = true | ||||||
| [output.stdout.config] | [output.stdout.config] | ||||||
|  | # Whether to output as JSON. Maybe useful to pipe elsewhere. | ||||||
| json = false | json = false | ||||||
|  | 
 | ||||||
| ` | ` | ||||||
| 
 | 
 | ||||||
| func DefaultConfig() (Config, error) { | func DefaultStr() string { | ||||||
| 	home, _ := os.UserHomeDir() | 	home, _ := os.UserHomeDir() | ||||||
| 	inDir := fp.Join(home, "my-log") | 	inDir := fp.Join(home, "my-log") | ||||||
| 	s := fmt.Sprintf(ConfigStr, inDir) | 	return fmt.Sprintf(ConfigStr, inDir) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func DefaultConfig() (Config, error) { | ||||||
|  | 	s := DefaultStr() | ||||||
| 	c := Config{} | 	c := Config{} | ||||||
| 	_, err := toml.Decode(s, &c) | 	_, err := toml.Decode(s, &c) | ||||||
| 	return c, err | 	return c, err | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue