tz

command module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 5, 2023 License: MPL-2.0 Imports: 19 Imported by: 0

README

= tz: Time Zone CLI app

image::https://github.com/DavidGamba/screenshots/blob/master/dgtools/tz/tz-default.png[]

Show time zones based on user defined groups.
The group members can be team members, family members, cities, etc.

Place your config file in `~/.config/tz/config.cue`, `~/.tz.cue` or pass it as a CLI option.

.config file
[source, cue]
----
package tz

default_group: "work"

_miami: {city: "Miami", admin1: "Florida", country_code: "US"}
_calgary: {city: "Calgary", country_code: "CA"}
_san_jose: {city: "San Jose", admin1: "San Jose", country_code: "CR"}
_palo_alto: {city: "Palo Alto", country_code: "US"}

group: "work": {
	member: "John": _palo_alto
	member: "Alan": _palo_alto
	member: "Mike": {city: "Rochester", country_code: "gb"}
	member: "Steve": {time_zone: "Europe/London"}
	member: "Patrick": {city: "Flint", time_zone: "America/Detroit"}
}

group: "family": {
	member: "Brother": _miami
	member: "David": _calgary
	member: "Parents": _san_jose
	member: "Bogota": {city: "Bogota", country_code: "CO", type: "city"}
}
----

Run `tz` to see the time zones of your team members.

image::https://github.com/DavidGamba/screenshots/blob/master/dgtools/tz/tz-default.png[]

Use `tz -s` to see a short version.

Use `tz -g family` to see your `family` group.

Use `tz help` to see all options.

== Finding the time zone for a city

Run: `tz cities <city>` to find the time zone for a city.
Narrow down results using the `-cc` flag.

----
$ tz cities rochester
 Time               Name                                             Admin1                                    CC  TimeZone                        Population
 06/20 07:56 BST    Rochester                                        England                                   GB  Europe/London                   28,671
 06/20 01:56 CDT    Rochester                                        Minnesota                                 US  America/Chicago                 112,225
 06/20 02:56 EDT    Rochester                                        New Hampshire                             US  America/New_York                30,038
 06/20 02:56 EDT    Rochester                                        New York                                  US  America/New_York                209,802
 06/20 02:56 EDT    Rochester Hills                                  Michigan                                  US  America/Detroit                 73,424

$ tz cities rochester -cc gb
 Time               Name                                             Admin1                                    CC  TimeZone                        Population
 06/20 07:57 BST    Rochester                                        England                                   GB  Europe/London                   28,671
----

== Config file syntax

The config file is a CUE file with the following syntax:

[source, cue]
----
package tz

default_group: "name"

group: "name": {
	member: "name": {city: "city", admin1: "admin1", country_code: "country_code", time_zone: "time_zone"}
}
----

The `admin1` field is the Admin division 1 name as defined in the geonames database: state, province, etc.

You can create reusable cities, for example:

[source, cue]
----
_miami: {city: "Miami", admin1: "Florida", country_code: "US"}

group: "family": {
	member: "Brother": _miami
}
----

Not all fields are required, as long as the provided fields uniquely identify a city or a time zone.

Additionally, members can be labeled as `type: "city"` or `type: "country"` so they show up before other members (`type: "person"` by default).

[source, cue]
----
member: "Palo_Alto": _palo_alto
member: "Palo_Alto": {type: "city"}
----

== Installation

* Install using go:
+
----
go install github.com/DavidGamba/dgtools/tz@latest
----
+
Ensure your Go bin is in your PATH.

* Install using homebrew:
+
----
brew tap DavidGamba/dgtools https://github.com/DavidGamba/dgtools
brew install DavidGamba/dgtools/tz
----

=== Completion

Add the following to your `.bashrc` file for completion:

----
complete -o default -C tz tz
----

Or for `zsh`:

----
autoload bashcompinit
bashcompinit
complete -o default -C tz tz
----

== Features

* Show the time zone of your team members.

* Show countries and cities in the same view as people but show them first for a faster lookup.

* Use a config file to configure your time zone groups.

* List all time zones by city so you can easily edit your config file.

* Show the day next to the time to see -1/+1 days.

== Motivation

Replacement for my `date` based https://github.com/DavidGamba/bin/blob/96468fe1ebfdc81972dad0b56a11b8023f3f639b/tz[tz] script.

== City time zone information

Information obtained by going to http://download.geonames.org/export/dump/ and downloading the `cities15000.zip` file.

Then a sqlite3 db is generated using the command:

----
sqlite3 cities.db < db.schema
----

Finally, the following query is used to generate an export:

----
sqlite3 cities.db ".headers off" ".mode tabs" "select distinct c.asciiname,a.asciiname,c.countrycode,c.timezone,c.population from cities as c left join admin1 as a on c.countrycode || '.' || c.admin1code = a.code;"  > cities-tz.tsv
----

The TSV is bundled in the binary (The resulting TSV is smaller than its CSV and JSON counterparts).

== ROADMAP

* Show google maps link to city

* tz list shows a list of all timezone abbreviations

* admin1 filter in cities list

== LICENSE

This file is part of tz.

Copyright (C) 2023  David Gamba Rios

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL