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
 | 
					# 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
 | 
					## [0.0.3] - 2024-03-11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- ✨ Add JSON formatter
 | 
					- ✨ Add JSON formatter
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										13
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								Makefile
									
										
									
									
									
								
							| 
						 | 
					@ -3,6 +3,12 @@ OUT=my-log
 | 
				
			||||||
GOBIN=$(shell go env GOBIN)
 | 
					GOBIN=$(shell go env GOBIN)
 | 
				
			||||||
COVEROUT=cover.out
 | 
					COVEROUT=cover.out
 | 
				
			||||||
COVERHTML=cover.html
 | 
					COVERHTML=cover.html
 | 
				
			||||||
 | 
					OPEN=xdg-open
 | 
				
			||||||
 | 
					OS=$(shell uname -s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(OS),Darwin)
 | 
				
			||||||
 | 
					OPEN=open
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: help
 | 
					.PHONY: help
 | 
				
			||||||
help: ## Show help for documented recipes
 | 
					help: ## Show help for documented recipes
 | 
				
			||||||
| 
						 | 
					@ -23,7 +29,8 @@ test: ## Test application and generate coverage report
 | 
				
			||||||
	$(MAKE) clean
 | 
						$(MAKE) clean
 | 
				
			||||||
	$(MAKE) $(COVEROUT)
 | 
						$(MAKE) $(COVEROUT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(COVEROUT): $(SOURCES) fmt
 | 
					$(COVEROUT): $(SOURCES)
 | 
				
			||||||
 | 
						$(MAKE) fmt
 | 
				
			||||||
	go test ./... -race -cover -coverprofile $@
 | 
						go test ./... -race -cover -coverprofile $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(COVERHTML): $(COVEROUT)
 | 
					$(COVERHTML): $(COVEROUT)
 | 
				
			||||||
| 
						 | 
					@ -33,8 +40,8 @@ $(COVERHTML): $(COVEROUT)
 | 
				
			||||||
report: $(COVERHTML) ## Generate a coverage report
 | 
					report: $(COVERHTML) ## Generate a coverage report
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: open-report
 | 
					.PHONY: open-report
 | 
				
			||||||
open-report: report ## Open the coverage report in the default browser
 | 
					open-report: $(COVERHTML) ## Open the coverage report in the default browser
 | 
				
			||||||
	xdg-open $(COVERHTML)
 | 
						$(OPEN) $<
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: build
 | 
					.PHONY: build
 | 
				
			||||||
build: $(OUT) ## Builds the application
 | 
					build: $(OUT) ## Builds the application
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,6 +32,11 @@ var configCmd = &cobra.Command{
 | 
				
			||||||
	//Long: ``,
 | 
						//Long: ``,
 | 
				
			||||||
	SilenceUsage: true,
 | 
						SilenceUsage: true,
 | 
				
			||||||
	RunE: func(cmd *cobra.Command, args []string) (err error) {
 | 
						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")
 | 
							force, _ := cmd.Flags().GetBool("force")
 | 
				
			||||||
		if !force {
 | 
							if !force {
 | 
				
			||||||
			_, err = os.Stat(config.ConfigPath)
 | 
								_, err = os.Stat(config.ConfigPath)
 | 
				
			||||||
| 
						 | 
					@ -60,4 +65,5 @@ func init() {
 | 
				
			||||||
	rootCmd.AddCommand(configCmd)
 | 
						rootCmd.AddCommand(configCmd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	configCmd.Flags().BoolP("force", "f", false, "Force overwrite")
 | 
						configCmd.Flags().BoolP("force", "f", false, "Force overwrite")
 | 
				
			||||||
 | 
						configCmd.Flags().BoolP("print", "p", false, "Print path only")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,7 @@ import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"codeberg.org/danjones000/my-log/config"
 | 
				
			||||||
	"codeberg.org/danjones000/my-log/files"
 | 
						"codeberg.org/danjones000/my-log/files"
 | 
				
			||||||
	"codeberg.org/danjones000/my-log/formatters"
 | 
						"codeberg.org/danjones000/my-log/formatters"
 | 
				
			||||||
	"codeberg.org/danjones000/my-log/models"
 | 
						"codeberg.org/danjones000/my-log/models"
 | 
				
			||||||
| 
						 | 
					@ -31,6 +32,7 @@ import (
 | 
				
			||||||
var d Date
 | 
					var d Date
 | 
				
			||||||
var fields map[string]string
 | 
					var fields map[string]string
 | 
				
			||||||
var j Json
 | 
					var j Json
 | 
				
			||||||
 | 
					var outJson bool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// dropCmd represents the drop command
 | 
					// dropCmd represents the drop command
 | 
				
			||||||
var dropCmd = &cobra.Command{
 | 
					var dropCmd = &cobra.Command{
 | 
				
			||||||
| 
						 | 
					@ -40,6 +42,10 @@ var dropCmd = &cobra.Command{
 | 
				
			||||||
	Args:         cobra.ExactArgs(2),
 | 
						Args:         cobra.ExactArgs(2),
 | 
				
			||||||
	SilenceUsage: true,
 | 
						SilenceUsage: true,
 | 
				
			||||||
	RunE: func(cmd *cobra.Command, args []string) error {
 | 
						RunE: func(cmd *cobra.Command, args []string) error {
 | 
				
			||||||
 | 
							if outJson {
 | 
				
			||||||
 | 
								config.Overrides["output.stdout.config.format"] = "json"
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		log := args[0]
 | 
							log := args[0]
 | 
				
			||||||
		title := args[1]
 | 
							title := args[1]
 | 
				
			||||||
		ms := &models.Metas{}
 | 
							ms := &models.Metas{}
 | 
				
			||||||
| 
						 | 
					@ -83,6 +89,7 @@ func init() {
 | 
				
			||||||
	dropCmd.Flags().VarP(&d, "date", "d", "Date for log entry")
 | 
						dropCmd.Flags().VarP(&d, "date", "d", "Date for log entry")
 | 
				
			||||||
	dropCmd.Flags().StringToStringVarP(&fields, "fields", "f", nil, "Fields you add to 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().VarP(&j, "json", "j", "Entire entry as json")
 | 
				
			||||||
 | 
						dropCmd.Flags().BoolVarP(&outJson, "output_json", "o", false, "Output result as JSON")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Json struct {
 | 
					type Json struct {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -211,7 +211,7 @@ func (s *AppendTestSuite) TestConfLoadErr() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *AppendTestSuite) TestMkdirErr() {
 | 
					func (s *AppendTestSuite) TestMkdirErr() {
 | 
				
			||||||
	// Don't run this test as root
 | 
						// 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) {
 | 
						defer func(path string) {
 | 
				
			||||||
		config.Overrides["input.path"] = path
 | 
							config.Overrides["input.path"] = path
 | 
				
			||||||
	}(s.dir)
 | 
						}(s.dir)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										8
									
								
								go.mod
									
										
									
									
									
								
							
							
						
						
									
										8
									
								
								go.mod
									
										
									
									
									
								
							| 
						 | 
					@ -5,10 +5,10 @@ go 1.21.5
 | 
				
			||||||
require (
 | 
					require (
 | 
				
			||||||
	github.com/BurntSushi/toml v1.3.2
 | 
						github.com/BurntSushi/toml v1.3.2
 | 
				
			||||||
	github.com/caarlos0/env/v10 v10.0.0
 | 
						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/mitchellh/mapstructure v1.5.0
 | 
				
			||||||
	github.com/spf13/cobra v1.8.0
 | 
						github.com/spf13/cobra v1.8.0
 | 
				
			||||||
	github.com/stretchr/testify v1.8.4
 | 
						github.com/stretchr/testify v1.9.0
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require (
 | 
					require (
 | 
				
			||||||
| 
						 | 
					@ -25,9 +25,7 @@ require (
 | 
				
			||||||
	github.com/tetratelabs/wazero v1.2.1 // indirect
 | 
						github.com/tetratelabs/wazero v1.2.1 // indirect
 | 
				
			||||||
	github.com/wasilibs/go-re2 v1.3.0 // indirect
 | 
						github.com/wasilibs/go-re2 v1.3.0 // indirect
 | 
				
			||||||
	golang.org/x/exp v0.0.0-20220321173239-a90fa8a75705 // 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/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
 | 
				
			||||||
	gopkg.in/yaml.v3 v3.0.1 // 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/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 h1:FqoIKg4uj0G/CrLGuMS9ejnFKa92lxE1dEgBD3pShXg=
 | 
				
			||||||
github.com/elliotchance/pie/v2 v2.7.0/go.mod h1:18t0dgGFH006g4eVdDtWfgFZPQEgl10IoEO8YWEq3Og=
 | 
					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 h1:drT/MZpSZJQXo7jftf5fthArShcaMtsal0Zf/dnmp6k=
 | 
				
			||||||
github.com/hablullah/go-hijri v1.0.2/go.mod h1:OS5qyYLDjORXzK4O1adFw9Q5WfhOcMdAKglDkcTxgWQ=
 | 
					github.com/hablullah/go-hijri v1.0.2/go.mod h1:OS5qyYLDjORXzK4O1adFw9Q5WfhOcMdAKglDkcTxgWQ=
 | 
				
			||||||
github.com/hablullah/go-juliandays v1.0.0 h1:A8YM7wIj16SzlKT0SRJc9CD29iiaUzpBLzh5hr0/5p0=
 | 
					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/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 h1:6QDX3g6z1YvJ4olPhT1wksUcSa/V0a1B+pJb73fBjyo=
 | 
				
			||||||
github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
 | 
					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 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
 | 
				
			||||||
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 | 
					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=
 | 
					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/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 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 | 
				
			||||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 | 
					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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
 | 
				
			||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 | 
					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 h1:J4X2hrGzJvt+wqltuvcSjHQ7ujQxA9gb6PeMs4qlUWs=
 | 
				
			||||||
github.com/tetratelabs/wazero v1.2.1/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ=
 | 
					github.com/tetratelabs/wazero v1.2.1/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ=
 | 
				
			||||||
github.com/wasilibs/go-re2 v1.3.0 h1:LFhBNzoStM3wMie6rN2slD1cuYH2CGiHpvNL3UtcsMw=
 | 
					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=
 | 
					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 h1:ba9YlqfDGTTQ5aZ2fwOoQ1hf32QySyQkR6ODGDzHlnE=
 | 
				
			||||||
golang.org/x/exp v0.0.0-20220321173239-a90fa8a75705/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE=
 | 
					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.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
 | 
				
			||||||
golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 | 
					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 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 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
 | 
				
			||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 | 
					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) {
 | 
						if null.MatchString(s) {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	} else if yesno.MatchString(s) {
 | 
						} else if yesno.MatchString(s) {
 | 
				
			||||||
		if yes.MatchString(s) {
 | 
							return yes.MatchString(s)
 | 
				
			||||||
			return true
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			return false
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	} else if i, err := strconv.Atoi(s); err == nil {
 | 
						} else if i, err := strconv.Atoi(s); err == nil {
 | 
				
			||||||
		return i
 | 
							return i
 | 
				
			||||||
	} else if f, err := strconv.ParseFloat(s, 64); err == nil {
 | 
						} else if f, err := strconv.ParseFloat(s, 64); err == nil {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
package tools
 | 
					package tools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dp "github.com/markusmobius/go-dateparser"
 | 
						dp "github.com/markusmobius/go-dateparser"
 | 
				
			||||||
| 
						 | 
					@ -23,6 +24,19 @@ func ParseDate(in string) (t time.Time, err error) {
 | 
				
			||||||
		return MaxTime, nil
 | 
							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{
 | 
						conf := dp.Configuration{
 | 
				
			||||||
		CurrentTime:        time.Now().Local(),
 | 
							CurrentTime:        time.Now().Local(),
 | 
				
			||||||
		ReturnTimeAsPeriod: true,
 | 
							ReturnTimeAsPeriod: true,
 | 
				
			||||||
| 
						 | 
					@ -32,12 +46,11 @@ func ParseDate(in string) (t time.Time, err error) {
 | 
				
			||||||
	d, err := dp.Parse(&conf, in)
 | 
						d, err := dp.Parse(&conf, in)
 | 
				
			||||||
	t = d.Time
 | 
						t = d.Time
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		d, err = dp.Parse(&conf, in, DateFormat)
 | 
					 | 
				
			||||||
		t = d.Time
 | 
					 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	y, mon, day, h, loc := t.Year(), t.Month(), t.Day(), t.Hour(), t.Location()
 | 
						y, mon, day, h, loc := t.Year(), t.Month(), t.Day(), t.Hour(), t.Location()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch d.Period {
 | 
						switch d.Period {
 | 
				
			||||||
	case date.Second:
 | 
						case date.Second:
 | 
				
			||||||
		t = t.Truncate(time.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)
 | 
						firstMonth := time.Date(y, mon, 1, 0, 0, 0, 0, loc)
 | 
				
			||||||
	firstYear := time.Date(y, 1, 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"
 | 
						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
 | 
						var ts int64 = 1708876012
 | 
				
			||||||
	tsd := time.Unix(ts, 0)
 | 
						tsd := time.Unix(ts, 0)
 | 
				
			||||||
	ent := "February 25, 2024 at 04:00:13AM +0230"
 | 
						ent := "February 25, 2024 at 04:00:13AM +0230"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue