Compare commits
	
		
			18 commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| fba5551bb3 | |||
| 85671a076c | |||
| da35bf4bcf | |||
| 345ef9471d | |||
| 5f6ce7ca21 | |||
| 514ffee613 | |||
| ece9256745 | |||
| e9c1bf7070 | |||
| 306b2c597d | |||
| ab0dea2805 | |||
| 7312714ccb | |||
| 9980ae8cc7 | |||
| 02a7babb36 | |||
| 80e07dbd14 | |||
| 9ca2b9156d | |||
| b456bcbfcc | |||
| bddf8e1458 | |||
| 396f19f691 | 
					 10 changed files with 62 additions and 23 deletions
				
			
		
							
								
								
									
										12
									
								
								CHANGELOG.md
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								CHANGELOG.md
									
										
									
									
									
								
							|  | @ -1,5 +1,17 @@ | |||
| # Changelog | ||||
| 
 | ||||
| ## [0.0.6] - 2024-10-07 | ||||
| 
 | ||||
| - Update external dependency: go-dateparser | ||||
| 
 | ||||
| ## [0.0.5] - 2024-10-07 | ||||
| 
 | ||||
| - Small change: adds --output_json to drop command. | ||||
| 
 | ||||
| ## [0.0.4] - 2024-05-08 | ||||
| 
 | ||||
| - ✨ Add -p flag to config to print config path | ||||
| 
 | ||||
| ## [0.0.3] - 2024-03-11 | ||||
| 
 | ||||
| - ✨ Add JSON formatter | ||||
|  |  | |||
							
								
								
									
										13
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -3,6 +3,12 @@ OUT=my-log | |||
| GOBIN=$(shell go env GOBIN) | ||||
| COVEROUT=cover.out | ||||
| COVERHTML=cover.html | ||||
| OPEN=xdg-open | ||||
| OS=$(shell uname -s) | ||||
| 
 | ||||
| ifeq ($(OS),Darwin) | ||||
| OPEN=open | ||||
| endif | ||||
| 
 | ||||
| .PHONY: help | ||||
| help: ## Show help for documented recipes
 | ||||
|  | @ -23,7 +29,8 @@ test: ## Test application and generate coverage report | |||
| 	$(MAKE) clean | ||||
| 	$(MAKE) $(COVEROUT) | ||||
| 
 | ||||
| $(COVEROUT): $(SOURCES) fmt | ||||
| $(COVEROUT): $(SOURCES) | ||||
| 	$(MAKE) fmt | ||||
| 	go test ./... -race -cover -coverprofile $@ | ||||
| 
 | ||||
| $(COVERHTML): $(COVEROUT) | ||||
|  | @ -33,8 +40,8 @@ $(COVERHTML): $(COVEROUT) | |||
| report: $(COVERHTML) ## Generate a coverage report
 | ||||
| 
 | ||||
| .PHONY: open-report | ||||
| open-report: report ## Open the coverage report in the default browser
 | ||||
| 	xdg-open $(COVERHTML) | ||||
| open-report: $(COVERHTML) ## Open the coverage report in the default browser
 | ||||
| 	$(OPEN) $< | ||||
| 
 | ||||
| .PHONY: build | ||||
| build: $(OUT) ## Builds the application
 | ||||
|  |  | |||
|  | @ -32,6 +32,11 @@ var configCmd = &cobra.Command{ | |||
| 	//Long: ``, | ||||
| 	SilenceUsage: true, | ||||
| 	RunE: func(cmd *cobra.Command, args []string) (err error) { | ||||
| 		print, _ := cmd.Flags().GetBool("print") | ||||
| 		if print { | ||||
| 			fmt.Fprintln(cmd.OutOrStdout(), config.ConfigPath) | ||||
| 			return nil | ||||
| 		} | ||||
| 		force, _ := cmd.Flags().GetBool("force") | ||||
| 		if !force { | ||||
| 			_, err = os.Stat(config.ConfigPath) | ||||
|  | @ -60,4 +65,5 @@ func init() { | |||
| 	rootCmd.AddCommand(configCmd) | ||||
| 
 | ||||
| 	configCmd.Flags().BoolP("force", "f", false, "Force overwrite") | ||||
| 	configCmd.Flags().BoolP("print", "p", false, "Print path only") | ||||
| } | ||||
|  |  | |||
|  | @ -21,6 +21,7 @@ import ( | |||
| 	"fmt" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"codeberg.org/danjones000/my-log/config" | ||||
| 	"codeberg.org/danjones000/my-log/files" | ||||
| 	"codeberg.org/danjones000/my-log/formatters" | ||||
| 	"codeberg.org/danjones000/my-log/models" | ||||
|  | @ -31,6 +32,7 @@ import ( | |||
| var d Date | ||||
| var fields map[string]string | ||||
| var j Json | ||||
| var outJson bool | ||||
| 
 | ||||
| // dropCmd represents the drop command | ||||
| var dropCmd = &cobra.Command{ | ||||
|  | @ -40,6 +42,10 @@ var dropCmd = &cobra.Command{ | |||
| 	Args:         cobra.ExactArgs(2), | ||||
| 	SilenceUsage: true, | ||||
| 	RunE: func(cmd *cobra.Command, args []string) error { | ||||
| 		if outJson { | ||||
| 			config.Overrides["output.stdout.config.format"] = "json" | ||||
| 		} | ||||
| 
 | ||||
| 		log := args[0] | ||||
| 		title := args[1] | ||||
| 		ms := &models.Metas{} | ||||
|  | @ -83,6 +89,7 @@ func init() { | |||
| 	dropCmd.Flags().VarP(&d, "date", "d", "Date for log entry") | ||||
| 	dropCmd.Flags().StringToStringVarP(&fields, "fields", "f", nil, "Fields you add to entry") | ||||
| 	dropCmd.Flags().VarP(&j, "json", "j", "Entire entry as json") | ||||
| 	dropCmd.Flags().BoolVarP(&outJson, "output_json", "o", false, "Output result as JSON") | ||||
| } | ||||
| 
 | ||||
| type Json struct { | ||||
|  |  | |||
|  | @ -211,7 +211,7 @@ func (s *AppendTestSuite) TestConfLoadErr() { | |||
| 
 | ||||
| func (s *AppendTestSuite) TestMkdirErr() { | ||||
| 	// Don't run this test as root | ||||
| 	config.Overrides["input.path"] = "/root/my-logs-test" | ||||
| 	config.Overrides["input.path"] = "/var/my-logs-test" | ||||
| 	defer func(path string) { | ||||
| 		config.Overrides["input.path"] = path | ||||
| 	}(s.dir) | ||||
|  |  | |||
							
								
								
									
										8
									
								
								go.mod
									
										
									
									
									
								
							
							
						
						
									
										8
									
								
								go.mod
									
										
									
									
									
								
							|  | @ -5,10 +5,10 @@ go 1.21.5 | |||
| require ( | ||||
| 	github.com/BurntSushi/toml v1.3.2 | ||||
| 	github.com/caarlos0/env/v10 v10.0.0 | ||||
| 	github.com/markusmobius/go-dateparser v1.2.1 | ||||
| 	github.com/markusmobius/go-dateparser v1.2.3 | ||||
| 	github.com/mitchellh/mapstructure v1.5.0 | ||||
| 	github.com/spf13/cobra v1.8.0 | ||||
| 	github.com/stretchr/testify v1.8.4 | ||||
| 	github.com/stretchr/testify v1.9.0 | ||||
| ) | ||||
| 
 | ||||
| require ( | ||||
|  | @ -25,9 +25,7 @@ require ( | |||
| 	github.com/tetratelabs/wazero v1.2.1 // indirect | ||||
| 	github.com/wasilibs/go-re2 v1.3.0 // indirect | ||||
| 	golang.org/x/exp v0.0.0-20220321173239-a90fa8a75705 // indirect | ||||
| 	golang.org/x/text v0.10.0 // indirect | ||||
| 	golang.org/x/text v0.14.0 // indirect | ||||
| 	gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect | ||||
| 	gopkg.in/yaml.v3 v3.0.1 // indirect | ||||
| ) | ||||
| 
 | ||||
| replace github.com/markusmobius/go-dateparser => github.com/goodevilgenius/go-dateparser v1.2.2 | ||||
|  |  | |||
							
								
								
									
										12
									
								
								go.sum
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								go.sum
									
										
									
									
									
								
							|  | @ -8,8 +8,6 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 | |||
| github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/elliotchance/pie/v2 v2.7.0 h1:FqoIKg4uj0G/CrLGuMS9ejnFKa92lxE1dEgBD3pShXg= | ||||
| github.com/elliotchance/pie/v2 v2.7.0/go.mod h1:18t0dgGFH006g4eVdDtWfgFZPQEgl10IoEO8YWEq3Og= | ||||
| github.com/goodevilgenius/go-dateparser v1.2.2 h1:Up9KokPx/h07mesQGAZQg3Xi/8yrDVn1638h3k/lRyk= | ||||
| github.com/goodevilgenius/go-dateparser v1.2.2/go.mod h1:5xYsZ1h7iB3sE1BSu8bkjYpbFST7EU1/AFxcyO3mgYg= | ||||
| github.com/hablullah/go-hijri v1.0.2 h1:drT/MZpSZJQXo7jftf5fthArShcaMtsal0Zf/dnmp6k= | ||||
| github.com/hablullah/go-hijri v1.0.2/go.mod h1:OS5qyYLDjORXzK4O1adFw9Q5WfhOcMdAKglDkcTxgWQ= | ||||
| github.com/hablullah/go-juliandays v1.0.0 h1:A8YM7wIj16SzlKT0SRJc9CD29iiaUzpBLzh5hr0/5p0= | ||||
|  | @ -24,6 +22,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | |||
| github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||||
| github.com/magefile/mage v1.14.0 h1:6QDX3g6z1YvJ4olPhT1wksUcSa/V0a1B+pJb73fBjyo= | ||||
| github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= | ||||
| github.com/markusmobius/go-dateparser v1.2.3 h1:TvrsIvr5uk+3v6poDjaicnAFJ5IgtFHgLiuMY2Eb7Nw= | ||||
| github.com/markusmobius/go-dateparser v1.2.3/go.mod h1:cMwQRrBUQlK1UI5TIFHEcvpsMbkWrQLXuaPNMFzuYLk= | ||||
| github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= | ||||
| github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= | ||||
| github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= | ||||
|  | @ -36,8 +36,8 @@ github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= | |||
| github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= | ||||
| github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= | ||||
| github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | ||||
| github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= | ||||
| github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= | ||||
| github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= | ||||
| github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= | ||||
| github.com/tetratelabs/wazero v1.2.1 h1:J4X2hrGzJvt+wqltuvcSjHQ7ujQxA9gb6PeMs4qlUWs= | ||||
| github.com/tetratelabs/wazero v1.2.1/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= | ||||
| github.com/wasilibs/go-re2 v1.3.0 h1:LFhBNzoStM3wMie6rN2slD1cuYH2CGiHpvNL3UtcsMw= | ||||
|  | @ -46,8 +46,8 @@ github.com/wasilibs/nottinygc v0.4.0 h1:h1TJMihMC4neN6Zq+WKpLxgd9xCFMw7O9ETLwY2e | |||
| github.com/wasilibs/nottinygc v0.4.0/go.mod h1:oDcIotskuYNMpqMF23l7Z8uzD4TC0WXHK8jetlB3HIo= | ||||
| golang.org/x/exp v0.0.0-20220321173239-a90fa8a75705 h1:ba9YlqfDGTTQ5aZ2fwOoQ1hf32QySyQkR6ODGDzHlnE= | ||||
| golang.org/x/exp v0.0.0-20220321173239-a90fa8a75705/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= | ||||
| golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= | ||||
| golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= | ||||
| golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= | ||||
| golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= | ||||
| gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
|  |  | |||
|  | @ -24,11 +24,7 @@ func ParseString(in string) any { | |||
| 	if null.MatchString(s) { | ||||
| 		return nil | ||||
| 	} else if yesno.MatchString(s) { | ||||
| 		if yes.MatchString(s) { | ||||
| 			return true | ||||
| 		} else { | ||||
| 			return false | ||||
| 		} | ||||
| 		return yes.MatchString(s) | ||||
| 	} else if i, err := strconv.Atoi(s); err == nil { | ||||
| 		return i | ||||
| 	} else if f, err := strconv.ParseFloat(s, 64); err == nil { | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| package tools | ||||
| 
 | ||||
| import ( | ||||
| 	"strconv" | ||||
| 	"time" | ||||
| 
 | ||||
| 	dp "github.com/markusmobius/go-dateparser" | ||||
|  | @ -23,6 +24,19 @@ func ParseDate(in string) (t time.Time, err error) { | |||
| 		return MaxTime, nil | ||||
| 	} | ||||
| 
 | ||||
| 	var er error | ||||
| 	for _, format := range []string{time.RFC3339, DateFormat} { | ||||
| 		if t, er = time.ParseInLocation(format, in, nil); er == nil { | ||||
| 			return | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	var ts int64 | ||||
| 	if ts, er = strconv.ParseInt(in, 10, 0); er == nil { | ||||
| 		t = time.Unix(ts, 0) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	conf := dp.Configuration{ | ||||
| 		CurrentTime:        time.Now().Local(), | ||||
| 		ReturnTimeAsPeriod: true, | ||||
|  | @ -32,12 +46,11 @@ func ParseDate(in string) (t time.Time, err error) { | |||
| 	d, err := dp.Parse(&conf, in) | ||||
| 	t = d.Time | ||||
| 	if err != nil { | ||||
| 		d, err = dp.Parse(&conf, in, DateFormat) | ||||
| 		t = d.Time | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	y, mon, day, h, loc := t.Year(), t.Month(), t.Day(), t.Hour(), t.Location() | ||||
| 
 | ||||
| 	switch d.Period { | ||||
| 	case date.Second: | ||||
| 		t = t.Truncate(time.Second) | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ func TestParseDate(t *testing.T) { | |||
| 	firstMonth := time.Date(y, mon, 1, 0, 0, 0, 0, loc) | ||||
| 	firstYear := time.Date(y, 1, 1, 0, 0, 0, 0, loc) | ||||
| 	exact := "2075-02-12T12:13:54.536-02:00" | ||||
| 	exactd, _ := time.ParseInLocation(time.RFC3339, exact, time.FixedZone("UTC-02:00", -7200)) | ||||
| 	exactd, _ := time.ParseInLocation(time.RFC3339, exact, nil) | ||||
| 	var ts int64 = 1708876012 | ||||
| 	tsd := time.Unix(ts, 0) | ||||
| 	ent := "February 25, 2024 at 04:00:13AM +0230" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue