mirror of
				https://gitea.com/gitea/tea.git
				synced 2025-10-31 01:05:26 +01:00 
			
		
		
		
	add tea times command (#54)
				
					
				
			Merge branch 'master' into 50-cmd-times labels: fix refactor bug fixup! use version check implemented in SDK instead add subcmds: `tea times (delete|reset)` fixes #87 fixes #88 times: reword help use version check implemented in SDK instead make fmt Check gitea server version for times endpoint refactor times.go dont print TrackedTime ID print username & issue index instead of IDs switch to urface/cli/v2 vendor araddon/dateparse use araddon/dateparse for arbitrary date inputs add --from, --until flags allow filtering by issue index make app name lower case to make the help texts consistent with the binary name add --total flag implement `tea times add` add `tea times` subcommand Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: Norwin Roosen <git@nroo.de> Reviewed-on: https://gitea.com/gitea/tea/pulls/54 Reviewed-by: 6543 <6543@noreply.gitea.io> Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
		
							
								
								
									
										12
									
								
								cmd/flags.go
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								cmd/flags.go
									
									
									
									
									
								
							| @@ -21,28 +21,32 @@ var ( | |||||||
|  |  | ||||||
| // LoginFlag provides flag to specify tea login profile | // LoginFlag provides flag to specify tea login profile | ||||||
| var LoginFlag = cli.StringFlag{ | var LoginFlag = cli.StringFlag{ | ||||||
| 	Name:        "login, l", | 	Name:        "login", | ||||||
|  | 	Aliases:     []string{"l"}, | ||||||
| 	Usage:       "Use a different Gitea login. Optional", | 	Usage:       "Use a different Gitea login. Optional", | ||||||
| 	Destination: &loginValue, | 	Destination: &loginValue, | ||||||
| } | } | ||||||
|  |  | ||||||
| // RepoFlag provides flag to specify repository | // RepoFlag provides flag to specify repository | ||||||
| var RepoFlag = cli.StringFlag{ | var RepoFlag = cli.StringFlag{ | ||||||
| 	Name:        "repo, r", | 	Name:        "repo", | ||||||
|  | 	Aliases:     []string{"r"}, | ||||||
| 	Usage:       "Repository to interact with. Optional", | 	Usage:       "Repository to interact with. Optional", | ||||||
| 	Destination: &repoValue, | 	Destination: &repoValue, | ||||||
| } | } | ||||||
|  |  | ||||||
| // RemoteFlag provides flag to specify remote repository | // RemoteFlag provides flag to specify remote repository | ||||||
| var RemoteFlag = cli.StringFlag{ | var RemoteFlag = cli.StringFlag{ | ||||||
| 	Name:        "remote, R", | 	Name:        "remote", | ||||||
|  | 	Aliases:     []string{"R"}, | ||||||
| 	Usage:       "Discover Gitea login from remote. Optional", | 	Usage:       "Discover Gitea login from remote. Optional", | ||||||
| 	Destination: &remoteValue, | 	Destination: &remoteValue, | ||||||
| } | } | ||||||
|  |  | ||||||
| // OutputFlag provides flag to specify output type | // OutputFlag provides flag to specify output type | ||||||
| var OutputFlag = cli.StringFlag{ | var OutputFlag = cli.StringFlag{ | ||||||
| 	Name:        "output, o", | 	Name:        "output", | ||||||
|  | 	Aliases:     []string{"o"}, | ||||||
| 	Usage:       "Output format. (csv, simple, table, tsv, yaml)", | 	Usage:       "Output format. (csv, simple, table, tsv, yaml)", | ||||||
| 	Destination: &outputValue, | 	Destination: &outputValue, | ||||||
| } | } | ||||||
|   | |||||||
| @@ -125,12 +125,14 @@ var CmdIssuesCreate = cli.Command{ | |||||||
| 	Action:      runIssuesCreate, | 	Action:      runIssuesCreate, | ||||||
| 	Flags: append([]cli.Flag{ | 	Flags: append([]cli.Flag{ | ||||||
| 		&cli.StringFlag{ | 		&cli.StringFlag{ | ||||||
| 			Name:  "title, t", | 			Name:    "title", | ||||||
| 			Usage: "issue title to create", | 			Aliases: []string{"t"}, | ||||||
|  | 			Usage:   "issue title to create", | ||||||
| 		}, | 		}, | ||||||
| 		&cli.StringFlag{ | 		&cli.StringFlag{ | ||||||
| 			Name:  "body, b", | 			Name:    "body", | ||||||
| 			Usage: "issue body to create", | 			Aliases: []string{"b"}, | ||||||
|  | 			Usage:   "issue body to create", | ||||||
| 		}, | 		}, | ||||||
| 	}, LoginRepoFlags...), | 	}, LoginRepoFlags...), | ||||||
| } | } | ||||||
|   | |||||||
| @@ -30,8 +30,9 @@ var CmdLabels = cli.Command{ | |||||||
| 	}, | 	}, | ||||||
| 	Flags: append([]cli.Flag{ | 	Flags: append([]cli.Flag{ | ||||||
| 		&cli.StringFlag{ | 		&cli.StringFlag{ | ||||||
| 			Name:  "save, s", | 			Name:    "save", | ||||||
| 			Usage: "Save all the labels as a file", | 			Aliases: []string{"s"}, | ||||||
|  | 			Usage:   "Save all the labels as a file", | ||||||
| 		}, | 		}, | ||||||
| 	}, AllDefaultFlags...), | 	}, AllDefaultFlags...), | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								cmd/login.go
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								cmd/login.go
									
									
									
									
									
								
							| @@ -34,24 +34,28 @@ var cmdLoginAdd = cli.Command{ | |||||||
| 	Description: `Add a Gitea login`, | 	Description: `Add a Gitea login`, | ||||||
| 	Flags: []cli.Flag{ | 	Flags: []cli.Flag{ | ||||||
| 		&cli.StringFlag{ | 		&cli.StringFlag{ | ||||||
| 			Name:  "name, n", | 			Name:    "name", | ||||||
| 			Usage: "Login name", | 			Aliases: []string{"n"}, | ||||||
|  | 			Usage:   "Login name", | ||||||
| 		}, | 		}, | ||||||
| 		&cli.StringFlag{ | 		&cli.StringFlag{ | ||||||
| 			Name:    "url, u", | 			Name:    "url", | ||||||
|  | 			Aliases: []string{"u"}, | ||||||
| 			Value:   "https://try.gitea.io", | 			Value:   "https://try.gitea.io", | ||||||
| 			EnvVars: []string{"GITEA_SERVER_URL"}, | 			EnvVars: []string{"GITEA_SERVER_URL"}, | ||||||
| 			Usage:   "Server URL", | 			Usage:   "Server URL", | ||||||
| 		}, | 		}, | ||||||
| 		&cli.StringFlag{ | 		&cli.StringFlag{ | ||||||
| 			Name:    "token, t", | 			Name:    "token", | ||||||
|  | 			Aliases: []string{"t"}, | ||||||
| 			Value:   "", | 			Value:   "", | ||||||
| 			EnvVars: []string{"GITEA_SERVER_TOKEN"}, | 			EnvVars: []string{"GITEA_SERVER_TOKEN"}, | ||||||
| 			Usage:   "Access token. Can be obtained from Settings > Applications", | 			Usage:   "Access token. Can be obtained from Settings > Applications", | ||||||
| 		}, | 		}, | ||||||
| 		&cli.BoolFlag{ | 		&cli.BoolFlag{ | ||||||
| 			Name:  "insecure, i", | 			Name:    "insecure", | ||||||
| 			Usage: "Disable TLS verification", | 			Aliases: []string{"i"}, | ||||||
|  | 			Usage:   "Disable TLS verification", | ||||||
| 		}, | 		}, | ||||||
| 	}, | 	}, | ||||||
| 	Action: runLoginAdd, | 	Action: runLoginAdd, | ||||||
|   | |||||||
| @@ -20,8 +20,9 @@ var CmdLogout = cli.Command{ | |||||||
| 	Action:      runLogout, | 	Action:      runLogout, | ||||||
| 	Flags: []cli.Flag{ | 	Flags: []cli.Flag{ | ||||||
| 		&cli.StringFlag{ | 		&cli.StringFlag{ | ||||||
| 			Name:  "name, n", | 			Name:    "name", | ||||||
| 			Usage: "Login name to remove", | 			Aliases: []string{"n"}, | ||||||
|  | 			Usage:   "Login name to remove", | ||||||
| 		}, | 		}, | ||||||
| 	}, | 	}, | ||||||
| } | } | ||||||
|   | |||||||
| @@ -80,24 +80,29 @@ var CmdReleaseCreate = cli.Command{ | |||||||
| 			Usage: "Target refs, branch name or commit id", | 			Usage: "Target refs, branch name or commit id", | ||||||
| 		}, | 		}, | ||||||
| 		&cli.StringFlag{ | 		&cli.StringFlag{ | ||||||
| 			Name:  "title, t", | 			Name:    "title", | ||||||
| 			Usage: "Release title", | 			Aliases: []string{"t"}, | ||||||
|  | 			Usage:   "Release title", | ||||||
| 		}, | 		}, | ||||||
| 		&cli.StringFlag{ | 		&cli.StringFlag{ | ||||||
| 			Name:  "note, n", | 			Name:    "note", | ||||||
| 			Usage: "Release notes", | 			Aliases: []string{"n"}, | ||||||
|  | 			Usage:   "Release notes", | ||||||
| 		}, | 		}, | ||||||
| 		&cli.BoolFlag{ | 		&cli.BoolFlag{ | ||||||
| 			Name:  "draft, d", | 			Name:    "draft", | ||||||
| 			Usage: "Is a draft", | 			Aliases: []string{"d"}, | ||||||
|  | 			Usage:   "Is a draft", | ||||||
| 		}, | 		}, | ||||||
| 		&cli.BoolFlag{ | 		&cli.BoolFlag{ | ||||||
| 			Name:  "prerelease, p", | 			Name:    "prerelease", | ||||||
| 			Usage: "Is a pre-release", | 			Aliases: []string{"p"}, | ||||||
|  | 			Usage:   "Is a pre-release", | ||||||
| 		}, | 		}, | ||||||
| 		&cli.StringSliceFlag{ | 		&cli.StringSliceFlag{ | ||||||
| 			Name:  "asset, a", | 			Name:    "asset", | ||||||
| 			Usage: "List of files to attach", | 			Aliases: []string{"a"}, | ||||||
|  | 			Usage:   "List of files to attach", | ||||||
| 		}, | 		}, | ||||||
| 	}, LoginRepoFlags...), | 	}, LoginRepoFlags...), | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										274
									
								
								cmd/times.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										274
									
								
								cmd/times.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,274 @@ | |||||||
|  | // Copyright 2020 The Gitea Authors. All rights reserved. | ||||||
|  | // Use of this source code is governed by a MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | package cmd | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"log" | ||||||
|  | 	"strconv" | ||||||
|  | 	"strings" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
|  | 	"code.gitea.io/sdk/gitea" | ||||||
|  |  | ||||||
|  | 	"github.com/araddon/dateparse" | ||||||
|  | 	"github.com/urfave/cli/v2" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // CmdTrackedTimes represents the command to operate repositories' times. | ||||||
|  | var CmdTrackedTimes = cli.Command{ | ||||||
|  | 	Name:    "times", | ||||||
|  | 	Aliases: []string{"time"}, | ||||||
|  | 	Usage:   "Operate on tracked times of a repository's issues & pulls", | ||||||
|  | 	Description: `Operate on tracked times of a repository's issues & pulls. | ||||||
|  | 		 Depending on your permissions on the repository, only your own tracked | ||||||
|  | 		 times might be listed.`, | ||||||
|  | 	ArgsUsage: "[username | #issue]", | ||||||
|  | 	Action:    runTrackedTimes, | ||||||
|  | 	Subcommands: []*cli.Command{ | ||||||
|  | 		&CmdTrackedTimesAdd, | ||||||
|  | 		&CmdTrackedTimesDelete, | ||||||
|  | 		&CmdTrackedTimesReset, | ||||||
|  | 	}, | ||||||
|  | 	Flags: append([]cli.Flag{ | ||||||
|  | 		&cli.StringFlag{ | ||||||
|  | 			Name:    "from", | ||||||
|  | 			Aliases: []string{"f"}, | ||||||
|  | 			Usage:   "Show only times tracked after this date", | ||||||
|  | 		}, | ||||||
|  | 		&cli.StringFlag{ | ||||||
|  | 			Name:    "until", | ||||||
|  | 			Aliases: []string{"u"}, | ||||||
|  | 			Usage:   "Show only times tracked before this date", | ||||||
|  | 		}, | ||||||
|  | 		&cli.BoolFlag{ | ||||||
|  | 			Name:    "total", | ||||||
|  | 			Aliases: []string{"t"}, | ||||||
|  | 			Usage:   "Print the total duration at the end", | ||||||
|  | 		}, | ||||||
|  | 	}, AllDefaultFlags...), | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func runTrackedTimes(ctx *cli.Context) error { | ||||||
|  | 	login, owner, repo := initCommand() | ||||||
|  | 	client := login.Client() | ||||||
|  |  | ||||||
|  | 	if err := client.CheckServerVersionConstraint(">= 1.11"); err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	var times []*gitea.TrackedTime | ||||||
|  | 	var err error | ||||||
|  |  | ||||||
|  | 	user := ctx.Args().First() | ||||||
|  | 	fmt.Println(ctx.Command.ArgsUsage) | ||||||
|  | 	if user == "" { | ||||||
|  | 		// get all tracked times on the repo | ||||||
|  | 		times, err = client.GetRepoTrackedTimes(owner, repo) | ||||||
|  | 	} else if strings.HasPrefix(user, "#") { | ||||||
|  | 		// get all tracked times on the specified issue | ||||||
|  | 		issue, err2 := strconv.ParseInt(user[1:], 10, 64) | ||||||
|  | 		if err2 != nil { | ||||||
|  | 			return err2 | ||||||
|  | 		} | ||||||
|  | 		times, err = client.ListTrackedTimes(owner, repo, issue) | ||||||
|  | 	} else { | ||||||
|  | 		// get all tracked times by the specified user | ||||||
|  | 		times, err = client.GetUserTrackedTimes(owner, repo, user) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	var from, until time.Time | ||||||
|  | 	if ctx.String("from") != "" { | ||||||
|  | 		from, err = dateparse.ParseLocal(ctx.String("from")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	if ctx.String("until") != "" { | ||||||
|  | 		until, err = dateparse.ParseLocal(ctx.String("until")) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	printTrackedTimes(times, outputValue, from, until, ctx.Bool("total")) | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func printTrackedTimes(times []*gitea.TrackedTime, outputType string, from, until time.Time, printTotal bool) { | ||||||
|  | 	var outputValues [][]string | ||||||
|  | 	var totalDuration int64 | ||||||
|  |  | ||||||
|  | 	localLoc, err := time.LoadLocation("Local") // local timezone for time formatting | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	for _, t := range times { | ||||||
|  | 		if !from.IsZero() && from.After(t.Created) { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		if !until.IsZero() && until.Before(t.Created) { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		totalDuration += t.Time | ||||||
|  |  | ||||||
|  | 		outputValues = append( | ||||||
|  | 			outputValues, | ||||||
|  | 			[]string{ | ||||||
|  | 				t.Created.In(localLoc).Format("2006-01-02 15:04:05"), | ||||||
|  | 				"#" + strconv.FormatInt(t.Issue.Index, 10), | ||||||
|  | 				t.UserName, | ||||||
|  | 				time.Duration(1e9 * t.Time).String(), | ||||||
|  | 			}, | ||||||
|  | 		) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if printTotal { | ||||||
|  | 		outputValues = append(outputValues, []string{ | ||||||
|  | 			"TOTAL", "", "", time.Duration(1e9 * totalDuration).String(), | ||||||
|  | 		}) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	headers := []string{ | ||||||
|  | 		"Created", | ||||||
|  | 		"Issue", | ||||||
|  | 		"User", | ||||||
|  | 		"Duration", | ||||||
|  | 	} | ||||||
|  | 	Output(outputType, headers, outputValues) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // CmdTrackedTimesAdd represents a sub command of times to add time to an issue | ||||||
|  | var CmdTrackedTimesAdd = cli.Command{ | ||||||
|  | 	Name:      "add", | ||||||
|  | 	Usage:     "Track spent time on an issue", | ||||||
|  | 	UsageText: "tea times add <issue> <duration>", | ||||||
|  | 	Description: `Track spent time on an issue | ||||||
|  | 	 Example: | ||||||
|  | 		tea times add 1 1h25m | ||||||
|  | 	`, | ||||||
|  | 	Action: runTrackedTimesAdd, | ||||||
|  | 	Flags:  LoginRepoFlags, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func runTrackedTimesAdd(ctx *cli.Context) error { | ||||||
|  | 	login, owner, repo := initCommand() | ||||||
|  |  | ||||||
|  | 	if ctx.Args().Len() < 2 { | ||||||
|  | 		return fmt.Errorf("No issue or duration specified.\nUsage:\t%s", ctx.Command.UsageText) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	issueStr := ctx.Args().First() | ||||||
|  | 	if strings.HasPrefix(issueStr, "#") { | ||||||
|  | 		issueStr = issueStr[1:] | ||||||
|  | 	} | ||||||
|  | 	issue, err := strconv.ParseInt(issueStr, 10, 64) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	duration, err := time.ParseDuration(strings.Join(ctx.Args().Tail(), "")) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	_, err = login.Client().AddTime(owner, repo, issue, gitea.AddTimeOption{ | ||||||
|  | 		Time: int64(duration.Seconds()), | ||||||
|  | 	}) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // CmdTrackedTimesDelete is a sub command of CmdTrackedTimes, and removes time from an issue | ||||||
|  | var CmdTrackedTimesDelete = cli.Command{ | ||||||
|  | 	Name:      "delete", | ||||||
|  | 	Aliases:   []string{"rm"}, | ||||||
|  | 	Usage:     "Delete a single tracked time on an issue", | ||||||
|  | 	UsageText: "tea times delete <issue> <time ID>", | ||||||
|  | 	Action:    runTrackedTimesDelete, | ||||||
|  | 	Flags:     LoginRepoFlags, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func runTrackedTimesDelete(ctx *cli.Context) error { | ||||||
|  | 	login, owner, repo := initCommand() | ||||||
|  | 	client := login.Client() | ||||||
|  |  | ||||||
|  | 	if err := client.CheckServerVersionConstraint(">= 1.11"); err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if ctx.Args().Len() < 2 { | ||||||
|  | 		return fmt.Errorf("No issue or time ID specified.\nUsage:\t%s", ctx.Command.UsageText) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	issueStr := ctx.Args().First() | ||||||
|  | 	if strings.HasPrefix(issueStr, "#") { | ||||||
|  | 		issueStr = issueStr[1:] | ||||||
|  | 	} | ||||||
|  | 	issue, err := strconv.ParseInt(issueStr, 10, 64) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	timeID, err := strconv.ParseInt(ctx.Args().Get(1), 10, 64) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	err = client.DeleteTime(owner, repo, issue, timeID) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // CmdTrackedTimesReset is a subcommand of CmdTrackedTimes, and | ||||||
|  | // clears all tracked times on an issue. | ||||||
|  | var CmdTrackedTimesReset = cli.Command{ | ||||||
|  | 	Name:      "reset", | ||||||
|  | 	Usage:     "Reset tracked time on an issue", | ||||||
|  | 	UsageText: "tea times reset <issue>", | ||||||
|  | 	Action:    runTrackedTimesReset, | ||||||
|  | 	Flags:     LoginRepoFlags, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func runTrackedTimesReset(ctx *cli.Context) error { | ||||||
|  | 	login, owner, repo := initCommand() | ||||||
|  | 	client := login.Client() | ||||||
|  |  | ||||||
|  | 	if err := client.CheckServerVersionConstraint(">= 1.11"); err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if ctx.Args().Len() != 1 { | ||||||
|  | 		return fmt.Errorf("No issue specified.\nUsage:\t%s", ctx.Command.UsageText) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	issueStr := ctx.Args().First() | ||||||
|  | 	if strings.HasPrefix(issueStr, "#") { | ||||||
|  | 		issueStr = issueStr[1:] | ||||||
|  | 	} | ||||||
|  | 	issue, err := strconv.ParseInt(issueStr, 10, 64) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	err = client.ResetIssueTime(owner, repo, issue) | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatal(err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								go.mod
									
									
									
									
									
								
							| @@ -4,6 +4,7 @@ go 1.12 | |||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	code.gitea.io/sdk/gitea v0.11.0 | 	code.gitea.io/sdk/gitea v0.11.0 | ||||||
|  | 	github.com/araddon/dateparse v0.0.0-20190622164848-0fb0a474d195 | ||||||
| 	github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect | 	github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect | ||||||
| 	github.com/go-gitea/yaml v0.0.0-20170812160011-eb3733d160e7 | 	github.com/go-gitea/yaml v0.0.0-20170812160011-eb3733d160e7 | ||||||
| 	github.com/mattn/go-runewidth v0.0.4 // indirect | 	github.com/mattn/go-runewidth v0.0.4 // indirect | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.sum
									
									
									
									
									
								
							| @@ -5,6 +5,8 @@ github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBb | |||||||
| github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= | github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= | ||||||
| github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= | github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= | ||||||
| github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= | github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= | ||||||
|  | github.com/araddon/dateparse v0.0.0-20190622164848-0fb0a474d195 h1:c4mLfegoDw6OhSJXTd2jUEQgZUQuJWtocudb97Qn9EM= | ||||||
|  | github.com/araddon/dateparse v0.0.0-20190622164848-0fb0a474d195/go.mod h1:SLqhdZcd+dF3TEVL2RMoob5bBP5R1P1qkox+HtCBgGI= | ||||||
| github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= | github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= | ||||||
| github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= | github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= | ||||||
| github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= | github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								main.go
									
									
									
									
									
								
							| @@ -29,7 +29,7 @@ func init() { | |||||||
|  |  | ||||||
| func main() { | func main() { | ||||||
| 	app := cli.NewApp() | 	app := cli.NewApp() | ||||||
| 	app.Name = "Tea" | 	app.Name = "tea" | ||||||
| 	app.Usage = "Command line tool to interact with Gitea" | 	app.Usage = "Command line tool to interact with Gitea" | ||||||
| 	app.Description = `` | 	app.Description = `` | ||||||
| 	app.Version = Version + formatBuiltWith(Tags) | 	app.Version = Version + formatBuiltWith(Tags) | ||||||
| @@ -41,6 +41,7 @@ func main() { | |||||||
| 		&cmd.CmdReleases, | 		&cmd.CmdReleases, | ||||||
| 		&cmd.CmdRepos, | 		&cmd.CmdRepos, | ||||||
| 		&cmd.CmdLabels, | 		&cmd.CmdLabels, | ||||||
|  | 		&cmd.CmdTrackedTimes, | ||||||
| 	} | 	} | ||||||
| 	app.EnableBashCompletion = true | 	app.EnableBashCompletion = true | ||||||
| 	err := app.Run(os.Args) | 	err := app.Run(os.Args) | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								vendor/github.com/araddon/dateparse/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								vendor/github.com/araddon/dateparse/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | language: go | ||||||
|  |  | ||||||
|  | go: | ||||||
|  |   - 1.10.x | ||||||
|  |   - 1.11.x | ||||||
|  |  | ||||||
|  | before_install: | ||||||
|  |   - go get -t -v ./... | ||||||
|  |  | ||||||
|  | script: | ||||||
|  |   - go test -race -coverprofile=coverage.txt -covermode=atomic | ||||||
|  |  | ||||||
|  | after_success: | ||||||
|  |   - bash <(curl -s https://codecov.io/bash) | ||||||
							
								
								
									
										21
									
								
								vendor/github.com/araddon/dateparse/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vendor/github.com/araddon/dateparse/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | The MIT License (MIT) | ||||||
|  |  | ||||||
|  | Copyright (c) 2015-2017 Aaron Raddon | ||||||
|  |  | ||||||
|  | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  | of this software and associated documentation files (the "Software"), to deal | ||||||
|  | in the Software without restriction, including without limitation the rights | ||||||
|  | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  | copies of the Software, and to permit persons to whom the Software is | ||||||
|  | furnished to do so, subject to the following conditions: | ||||||
|  |  | ||||||
|  | The above copyright notice and this permission notice shall be included in | ||||||
|  | all copies or substantial portions of the Software. | ||||||
|  |  | ||||||
|  | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||||
|  | THE SOFTWARE. | ||||||
							
								
								
									
										282
									
								
								vendor/github.com/araddon/dateparse/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										282
									
								
								vendor/github.com/araddon/dateparse/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,282 @@ | |||||||
|  | Go Date Parser  | ||||||
|  | --------------------------- | ||||||
|  |  | ||||||
|  | Parse many date strings without knowing format in advance.  Uses a scanner to read bytes and use a state machine to find format.  Much faster than shotgun based parse methods.  See [bench_test.go](https://github.com/araddon/dateparse/blob/master/bench_test.go) for performance comparison. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | [](https://codecov.io/gh/araddon/dateparse) | ||||||
|  | [](http://godoc.org/github.com/araddon/dateparse) | ||||||
|  | [](https://travis-ci.org/araddon/dateparse) | ||||||
|  | [](https://goreportcard.com/report/araddon/dateparse) | ||||||
|  |  | ||||||
|  | **MM/DD/YYYY VS DD/MM/YYYY** Right now this uses mm/dd/yyyy WHEN ambiguous if this is not desired behavior, use `ParseStrict` which will fail on ambiguous date strings. | ||||||
|  |  | ||||||
|  | **Timezones** The location your server is configured affects the results!  See example or https://play.golang.org/p/IDHRalIyXh and last paragraph here https://golang.org/pkg/time/#Parse. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ```go | ||||||
|  |  | ||||||
|  | // Normal parse.  Equivalent Timezone rules as time.Parse() | ||||||
|  | t, err := dateparse.ParseAny("3/1/2014") | ||||||
|  |  | ||||||
|  | // Parse Strict, error on ambigous mm/dd vs dd/mm dates | ||||||
|  | t, err := dateparse.ParseStrict("3/1/2014") | ||||||
|  | > returns error  | ||||||
|  |  | ||||||
|  | // Return a string that represents the layout to parse the given date-time. | ||||||
|  | layout, err := dateparse.ParseFormat("May 8, 2009 5:57:51 PM") | ||||||
|  | > "Jan 2, 2006 3:04:05 PM" | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | cli tool for testing dateformats | ||||||
|  | ---------------------------------- | ||||||
|  |  | ||||||
|  | [Date Parse CLI](https://github.com/araddon/dateparse/blob/master/dateparse) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Extended example | ||||||
|  | ------------------- | ||||||
|  |  | ||||||
|  | https://github.com/araddon/dateparse/blob/master/example/main.go | ||||||
|  |  | ||||||
|  | ```go | ||||||
|  | package main | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"flag" | ||||||
|  | 	"fmt" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
|  | 	"github.com/apcera/termtables" | ||||||
|  | 	"github.com/araddon/dateparse" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | var examples = []string{ | ||||||
|  | 	"May 8, 2009 5:57:51 PM", | ||||||
|  | 	"oct 7, 1970", | ||||||
|  | 	"oct 7, '70", | ||||||
|  | 	"oct. 7, 1970", | ||||||
|  | 	"oct. 7, 70", | ||||||
|  | 	"Mon Jan  2 15:04:05 2006", | ||||||
|  | 	"Mon Jan  2 15:04:05 MST 2006", | ||||||
|  | 	"Mon Jan 02 15:04:05 -0700 2006", | ||||||
|  | 	"Monday, 02-Jan-06 15:04:05 MST", | ||||||
|  | 	"Mon, 02 Jan 2006 15:04:05 MST", | ||||||
|  | 	"Tue, 11 Jul 2017 16:28:13 +0200 (CEST)", | ||||||
|  | 	"Mon, 02 Jan 2006 15:04:05 -0700", | ||||||
|  | 	"Thu, 4 Jan 2018 17:53:36 +0000", | ||||||
|  | 	"Mon Aug 10 15:44:11 UTC+0100 2015", | ||||||
|  | 	"Fri Jul 03 2015 18:04:07 GMT+0100 (GMT Daylight Time)", | ||||||
|  | 	"September 17, 2012 10:09am", | ||||||
|  | 	"September 17, 2012 at 10:09am PST-08", | ||||||
|  | 	"September 17, 2012, 10:10:09", | ||||||
|  | 	"October 7, 1970", | ||||||
|  | 	"October 7th, 1970", | ||||||
|  | 	"12 Feb 2006, 19:17", | ||||||
|  | 	"12 Feb 2006 19:17", | ||||||
|  | 	"7 oct 70", | ||||||
|  | 	"7 oct 1970", | ||||||
|  | 	"03 February 2013", | ||||||
|  | 	"1 July 2013", | ||||||
|  | 	"2013-Feb-03", | ||||||
|  | 	//   mm/dd/yy | ||||||
|  | 	"3/31/2014", | ||||||
|  | 	"03/31/2014", | ||||||
|  | 	"08/21/71", | ||||||
|  | 	"8/1/71", | ||||||
|  | 	"4/8/2014 22:05", | ||||||
|  | 	"04/08/2014 22:05", | ||||||
|  | 	"4/8/14 22:05", | ||||||
|  | 	"04/2/2014 03:00:51", | ||||||
|  | 	"8/8/1965 12:00:00 AM", | ||||||
|  | 	"8/8/1965 01:00:01 PM", | ||||||
|  | 	"8/8/1965 01:00 PM", | ||||||
|  | 	"8/8/1965 1:00 PM", | ||||||
|  | 	"8/8/1965 12:00 AM", | ||||||
|  | 	"4/02/2014 03:00:51", | ||||||
|  | 	"03/19/2012 10:11:59", | ||||||
|  | 	"03/19/2012 10:11:59.3186369", | ||||||
|  | 	// yyyy/mm/dd | ||||||
|  | 	"2014/3/31", | ||||||
|  | 	"2014/03/31", | ||||||
|  | 	"2014/4/8 22:05", | ||||||
|  | 	"2014/04/08 22:05", | ||||||
|  | 	"2014/04/2 03:00:51", | ||||||
|  | 	"2014/4/02 03:00:51", | ||||||
|  | 	"2012/03/19 10:11:59", | ||||||
|  | 	"2012/03/19 10:11:59.3186369", | ||||||
|  | 	// Chinese | ||||||
|  | 	"2014年04月08日", | ||||||
|  | 	//   yyyy-mm-ddThh | ||||||
|  | 	"2006-01-02T15:04:05+0000", | ||||||
|  | 	"2009-08-12T22:15:09-07:00", | ||||||
|  | 	"2009-08-12T22:15:09", | ||||||
|  | 	"2009-08-12T22:15:09Z", | ||||||
|  | 	//   yyyy-mm-dd hh:mm:ss | ||||||
|  | 	"2014-04-26 17:24:37.3186369", | ||||||
|  | 	"2012-08-03 18:31:59.257000000", | ||||||
|  | 	"2014-04-26 17:24:37.123", | ||||||
|  | 	"2013-04-01 22:43", | ||||||
|  | 	"2013-04-01 22:43:22", | ||||||
|  | 	"2014-12-16 06:20:00 UTC", | ||||||
|  | 	"2014-12-16 06:20:00 GMT", | ||||||
|  | 	"2014-04-26 05:24:37 PM", | ||||||
|  | 	"2014-04-26 13:13:43 +0800", | ||||||
|  | 	"2014-04-26 13:13:43 +0800 +08", | ||||||
|  | 	"2014-04-26 13:13:44 +09:00", | ||||||
|  | 	"2012-08-03 18:31:59.257000000 +0000 UTC", | ||||||
|  | 	"2015-09-30 18:48:56.35272715 +0000 UTC", | ||||||
|  | 	"2015-02-18 00:12:00 +0000 GMT", | ||||||
|  | 	"2015-02-18 00:12:00 +0000 UTC", | ||||||
|  | 	"2015-02-08 03:02:00 +0300 MSK m=+0.000000001", | ||||||
|  | 	"2015-02-08 03:02:00.001 +0300 MSK m=+0.000000001", | ||||||
|  | 	"2017-07-19 03:21:51+00:00", | ||||||
|  | 	"2014-04-26", | ||||||
|  | 	"2014-04", | ||||||
|  | 	"2014", | ||||||
|  | 	"2014-05-11 08:20:13,787", | ||||||
|  | 	// mm.dd.yy | ||||||
|  | 	"3.31.2014", | ||||||
|  | 	"03.31.2014", | ||||||
|  | 	"08.21.71", | ||||||
|  | 	"2014.03", | ||||||
|  | 	"2014.03.30", | ||||||
|  | 	//  yyyymmdd and similar | ||||||
|  | 	"20140601", | ||||||
|  | 	"20140722105203", | ||||||
|  | 	// unix seconds, ms, micro, nano | ||||||
|  | 	"1332151919", | ||||||
|  | 	"1384216367189", | ||||||
|  | 	"1384216367111222", | ||||||
|  | 	"1384216367111222333", | ||||||
|  | } | ||||||
|  |  | ||||||
|  | var ( | ||||||
|  | 	timezone = "" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func main() { | ||||||
|  | 	flag.StringVar(&timezone, "timezone", "UTC", "Timezone aka `America/Los_Angeles` formatted time-zone") | ||||||
|  | 	flag.Parse() | ||||||
|  |  | ||||||
|  | 	if timezone != "" { | ||||||
|  | 		// NOTE:  This is very, very important to understand | ||||||
|  | 		// time-parsing in go | ||||||
|  | 		loc, err := time.LoadLocation(timezone) | ||||||
|  | 		if err != nil { | ||||||
|  | 			panic(err.Error()) | ||||||
|  | 		} | ||||||
|  | 		time.Local = loc | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	table := termtables.CreateTable() | ||||||
|  |  | ||||||
|  | 	table.AddHeaders("Input", "Parsed, and Output as %v") | ||||||
|  | 	for _, dateExample := range examples { | ||||||
|  | 		t, err := dateparse.ParseLocal(dateExample) | ||||||
|  | 		if err != nil { | ||||||
|  | 			panic(err.Error()) | ||||||
|  | 		} | ||||||
|  | 		table.AddRow(dateExample, fmt.Sprintf("%v", t)) | ||||||
|  | 	} | ||||||
|  | 	fmt.Println(table.Render()) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | +-------------------------------------------------------+-----------------------------------------+ | ||||||
|  | | Input                                                 | Parsed, and Output as %v                | | ||||||
|  | +-------------------------------------------------------+-----------------------------------------+ | ||||||
|  | | May 8, 2009 5:57:51 PM                                | 2009-05-08 17:57:51 +0000 UTC           | | ||||||
|  | | oct 7, 1970                                           | 1970-10-07 00:00:00 +0000 UTC           | | ||||||
|  | | oct 7, '70                                            | 1970-10-07 00:00:00 +0000 UTC           | | ||||||
|  | | oct. 7, 1970                                          | 1970-10-07 00:00:00 +0000 UTC           | | ||||||
|  | | oct. 7, 70                                            | 1970-10-07 00:00:00 +0000 UTC           | | ||||||
|  | | Mon Jan  2 15:04:05 2006                              | 2006-01-02 15:04:05 +0000 UTC           | | ||||||
|  | | Mon Jan  2 15:04:05 MST 2006                          | 2006-01-02 15:04:05 +0000 MST           | | ||||||
|  | | Mon Jan 02 15:04:05 -0700 2006                        | 2006-01-02 15:04:05 -0700 -0700         | | ||||||
|  | | Monday, 02-Jan-06 15:04:05 MST                        | 2006-01-02 15:04:05 +0000 MST           | | ||||||
|  | | Mon, 02 Jan 2006 15:04:05 MST                         | 2006-01-02 15:04:05 +0000 MST           | | ||||||
|  | | Tue, 11 Jul 2017 16:28:13 +0200 (CEST)                | 2017-07-11 16:28:13 +0200 +0200         | | ||||||
|  | | Mon, 02 Jan 2006 15:04:05 -0700                       | 2006-01-02 15:04:05 -0700 -0700         | | ||||||
|  | | Thu, 4 Jan 2018 17:53:36 +0000                        | 2018-01-04 17:53:36 +0000 UTC           | | ||||||
|  | | Mon Aug 10 15:44:11 UTC+0100 2015                     | 2015-08-10 15:44:11 +0000 UTC           | | ||||||
|  | | Fri Jul 03 2015 18:04:07 GMT+0100 (GMT Daylight Time) | 2015-07-03 18:04:07 +0100 GMT           | | ||||||
|  | | September 17, 2012 10:09am                            | 2012-09-17 10:09:00 +0000 UTC           | | ||||||
|  | | September 17, 2012 at 10:09am PST-08                  | 2012-09-17 10:09:00 -0800 PST           | | ||||||
|  | | September 17, 2012, 10:10:09                          | 2012-09-17 10:10:09 +0000 UTC           | | ||||||
|  | | October 7, 1970                                       | 1970-10-07 00:00:00 +0000 UTC           | | ||||||
|  | | October 7th, 1970                                     | 1970-10-07 00:00:00 +0000 UTC           | | ||||||
|  | | 12 Feb 2006, 19:17                                    | 2006-02-12 19:17:00 +0000 UTC           | | ||||||
|  | | 12 Feb 2006 19:17                                     | 2006-02-12 19:17:00 +0000 UTC           | | ||||||
|  | | 7 oct 70                                              | 1970-10-07 00:00:00 +0000 UTC           | | ||||||
|  | | 7 oct 1970                                            | 1970-10-07 00:00:00 +0000 UTC           | | ||||||
|  | | 03 February 2013                                      | 2013-02-03 00:00:00 +0000 UTC           | | ||||||
|  | | 1 July 2013                                           | 2013-07-01 00:00:00 +0000 UTC           | | ||||||
|  | | 2013-Feb-03                                           | 2013-02-03 00:00:00 +0000 UTC           | | ||||||
|  | | 3/31/2014                                             | 2014-03-31 00:00:00 +0000 UTC           | | ||||||
|  | | 03/31/2014                                            | 2014-03-31 00:00:00 +0000 UTC           | | ||||||
|  | | 08/21/71                                              | 1971-08-21 00:00:00 +0000 UTC           | | ||||||
|  | | 8/1/71                                                | 1971-08-01 00:00:00 +0000 UTC           | | ||||||
|  | | 4/8/2014 22:05                                        | 2014-04-08 22:05:00 +0000 UTC           | | ||||||
|  | | 04/08/2014 22:05                                      | 2014-04-08 22:05:00 +0000 UTC           | | ||||||
|  | | 4/8/14 22:05                                          | 2014-04-08 22:05:00 +0000 UTC           | | ||||||
|  | | 04/2/2014 03:00:51                                    | 2014-04-02 03:00:51 +0000 UTC           | | ||||||
|  | | 8/8/1965 12:00:00 AM                                  | 1965-08-08 00:00:00 +0000 UTC           | | ||||||
|  | | 8/8/1965 01:00:01 PM                                  | 1965-08-08 13:00:01 +0000 UTC           | | ||||||
|  | | 8/8/1965 01:00 PM                                     | 1965-08-08 13:00:00 +0000 UTC           | | ||||||
|  | | 8/8/1965 1:00 PM                                      | 1965-08-08 13:00:00 +0000 UTC           | | ||||||
|  | | 8/8/1965 12:00 AM                                     | 1965-08-08 00:00:00 +0000 UTC           | | ||||||
|  | | 4/02/2014 03:00:51                                    | 2014-04-02 03:00:51 +0000 UTC           | | ||||||
|  | | 03/19/2012 10:11:59                                   | 2012-03-19 10:11:59 +0000 UTC           | | ||||||
|  | | 03/19/2012 10:11:59.3186369                           | 2012-03-19 10:11:59.3186369 +0000 UTC   | | ||||||
|  | | 2014/3/31                                             | 2014-03-31 00:00:00 +0000 UTC           | | ||||||
|  | | 2014/03/31                                            | 2014-03-31 00:00:00 +0000 UTC           | | ||||||
|  | | 2014/4/8 22:05                                        | 2014-04-08 22:05:00 +0000 UTC           | | ||||||
|  | | 2014/04/08 22:05                                      | 2014-04-08 22:05:00 +0000 UTC           | | ||||||
|  | | 2014/04/2 03:00:51                                    | 2014-04-02 03:00:51 +0000 UTC           | | ||||||
|  | | 2014/4/02 03:00:51                                    | 2014-04-02 03:00:51 +0000 UTC           | | ||||||
|  | | 2012/03/19 10:11:59                                   | 2012-03-19 10:11:59 +0000 UTC           | | ||||||
|  | | 2012/03/19 10:11:59.3186369                           | 2012-03-19 10:11:59.3186369 +0000 UTC   | | ||||||
|  | | 2014年04月08日                                           | 2014-04-08 00:00:00 +0000 UTC           | | ||||||
|  | | 2006-01-02T15:04:05+0000                              | 2006-01-02 15:04:05 +0000 UTC           | | ||||||
|  | | 2009-08-12T22:15:09-07:00                             | 2009-08-12 22:15:09 -0700 -0700         | | ||||||
|  | | 2009-08-12T22:15:09                                   | 2009-08-12 22:15:09 +0000 UTC           | | ||||||
|  | | 2009-08-12T22:15:09Z                                  | 2009-08-12 22:15:09 +0000 UTC           | | ||||||
|  | | 2014-04-26 17:24:37.3186369                           | 2014-04-26 17:24:37.3186369 +0000 UTC   | | ||||||
|  | | 2012-08-03 18:31:59.257000000                         | 2012-08-03 18:31:59.257 +0000 UTC       | | ||||||
|  | | 2014-04-26 17:24:37.123                               | 2014-04-26 17:24:37.123 +0000 UTC       | | ||||||
|  | | 2013-04-01 22:43                                      | 2013-04-01 22:43:00 +0000 UTC           | | ||||||
|  | | 2013-04-01 22:43:22                                   | 2013-04-01 22:43:22 +0000 UTC           | | ||||||
|  | | 2014-12-16 06:20:00 UTC                               | 2014-12-16 06:20:00 +0000 UTC           | | ||||||
|  | | 2014-12-16 06:20:00 GMT                               | 2014-12-16 06:20:00 +0000 UTC           | | ||||||
|  | | 2014-04-26 05:24:37 PM                                | 2014-04-26 17:24:37 +0000 UTC           | | ||||||
|  | | 2014-04-26 13:13:43 +0800                             | 2014-04-26 13:13:43 +0800 +0800         | | ||||||
|  | | 2014-04-26 13:13:43 +0800 +08                         | 2014-04-26 13:13:43 +0800 +0800         | | ||||||
|  | | 2014-04-26 13:13:44 +09:00                            | 2014-04-26 13:13:44 +0900 +0900         | | ||||||
|  | | 2012-08-03 18:31:59.257000000 +0000 UTC               | 2012-08-03 18:31:59.257 +0000 UTC       | | ||||||
|  | | 2015-09-30 18:48:56.35272715 +0000 UTC                | 2015-09-30 18:48:56.35272715 +0000 UTC  | | ||||||
|  | | 2015-02-18 00:12:00 +0000 GMT                         | 2015-02-18 00:12:00 +0000 UTC           | | ||||||
|  | | 2015-02-18 00:12:00 +0000 UTC                         | 2015-02-18 00:12:00 +0000 UTC           | | ||||||
|  | | 2015-02-08 03:02:00 +0300 MSK m=+0.000000001          | 2015-02-08 03:02:00 +0300 +0300         | | ||||||
|  | | 2015-02-08 03:02:00.001 +0300 MSK m=+0.000000001      | 2015-02-08 03:02:00.001 +0300 +0300     | | ||||||
|  | | 2017-07-19 03:21:51+00:00                             | 2017-07-19 03:21:51 +0000 UTC           | | ||||||
|  | | 2014-04-26                                            | 2014-04-26 00:00:00 +0000 UTC           | | ||||||
|  | | 2014-04                                               | 2014-04-01 00:00:00 +0000 UTC           | | ||||||
|  | | 2014                                                  | 2014-01-01 00:00:00 +0000 UTC           | | ||||||
|  | | 2014-05-11 08:20:13,787                               | 2014-05-11 08:20:13.787 +0000 UTC       | | ||||||
|  | | 3.31.2014                                             | 2014-03-31 00:00:00 +0000 UTC           | | ||||||
|  | | 03.31.2014                                            | 2014-03-31 00:00:00 +0000 UTC           | | ||||||
|  | | 08.21.71                                              | 1971-08-21 00:00:00 +0000 UTC           | | ||||||
|  | | 2014.03                                               | 2014-03-01 00:00:00 +0000 UTC           | | ||||||
|  | | 2014.03.30                                            | 2014-03-30 00:00:00 +0000 UTC           | | ||||||
|  | | 20140601                                              | 2014-06-01 00:00:00 +0000 UTC           | | ||||||
|  | | 20140722105203                                        | 2014-07-22 10:52:03 +0000 UTC           | | ||||||
|  | | 1332151919                                            | 2012-03-19 10:11:59 +0000 UTC           | | ||||||
|  | | 1384216367189                                         | 2013-11-12 00:32:47.189 +0000 UTC       | | ||||||
|  | | 1384216367111222                                      | 2013-11-12 00:32:47.111222 +0000 UTC    | | ||||||
|  | | 1384216367111222333                                   | 2013-11-12 00:32:47.111222333 +0000 UTC | | ||||||
|  | +-------------------------------------------------------+-----------------------------------------+ | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | ``` | ||||||
							
								
								
									
										1864
									
								
								vendor/github.com/araddon/dateparse/parseany.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1864
									
								
								vendor/github.com/araddon/dateparse/parseany.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| @@ -1,5 +1,7 @@ | |||||||
| # code.gitea.io/sdk/gitea v0.11.0 | # code.gitea.io/sdk/gitea v0.11.0 | ||||||
| code.gitea.io/sdk/gitea | code.gitea.io/sdk/gitea | ||||||
|  | # github.com/araddon/dateparse v0.0.0-20190622164848-0fb0a474d195 | ||||||
|  | github.com/araddon/dateparse | ||||||
| # github.com/cpuguy83/go-md2man/v2 v2.0.0 | # github.com/cpuguy83/go-md2man/v2 v2.0.0 | ||||||
| github.com/cpuguy83/go-md2man/v2/md2man | github.com/cpuguy83/go-md2man/v2/md2man | ||||||
| # github.com/davecgh/go-spew v1.1.1 | # github.com/davecgh/go-spew v1.1.1 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Norwin
					Norwin