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 ¶
There is no documentation for this package.
Click to show internal directories.
Click to hide internal directories.