mirror of
https://codeberg.org/scip/ts.git
synced 2026-08-24 14:54:20 +02:00
Use interfaces, add unit tests, add duration diff support (#3)
* use interface for Duration and Time printing, fix diff ts parsing * add unit tests and gpl * added tests, add support for duration diff+add * bump version * catch setenv errors * fix ci job name
This commit is contained in:
@@ -1,3 +1,20 @@
|
||||
/*
|
||||
Copyright © 2025 Thomas von Dein
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
@@ -14,12 +31,12 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
VERSIONstring = "0.0.1"
|
||||
VERSIONstring = "0.0.2"
|
||||
Usage string = `This is ts, a timestamp tool.
|
||||
|
||||
Usage: ts <time string> [<time string>]
|
||||
-d --diff Calculate difference between two timestamps (default)
|
||||
-a --add Add two timestamps (second parameter must be a time)
|
||||
-a --add Add two timestamps (second parameter must be a duration)
|
||||
-f --format For diffs: duration, hour, min, sec, msec
|
||||
For timestamps: datetime, rfc3339, date, time, unix, string
|
||||
string is a strftime(1) format string. datetime is
|
||||
@@ -54,7 +71,11 @@ noon Yesterday at 10:15am Mon, 02 Jan 2006 15:
|
||||
1:05pm Next dec 22nd at 3pm 3 days ago 1999AD
|
||||
10:25:10am Next December 25th at 7:30am UTC-7 Three days ago 1999 AD
|
||||
1:05:10pm Next December 23rd AT 5:25 PM 1 day from now 2008CE
|
||||
10:25 Last December 23rd AT 5:25 PM 1 week ago 2008 CE`
|
||||
10:25 Last December 23rd AT 5:25 PM 1 week ago 2008 CE
|
||||
|
||||
Example durations for second parameter:
|
||||
2d1h30m 2 days, one and a half hour
|
||||
30m 30 minutes`
|
||||
ModeDiff int = iota
|
||||
ModeAdd
|
||||
)
|
||||
@@ -110,6 +131,15 @@ func InitConfig(output io.Writer) (*Config, error) {
|
||||
return nil, fmt.Errorf("error unmarshalling: %w", err)
|
||||
}
|
||||
|
||||
// want examples?
|
||||
if conf.Examples {
|
||||
_, err := fmt.Fprintln(output, Examples)
|
||||
if err != nil {
|
||||
Die(err)
|
||||
}
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
// args are timestamps
|
||||
if len(flagset.Args()) == 0 {
|
||||
return nil, errors.New("no timestamp argument[s] specified.\n" + Usage)
|
||||
|
||||
Reference in New Issue
Block a user