CoreLocationCLI gets the physical location of your device and prints it to standard output. If you move it can also print your updated location. Kill it with CTRL-C.
Note for Mac users: make sure Wi-Fi is turned on. Otherwise you will see kCLErrorDomain error 0.
CoreLocationCLI --help
CoreLocationCLI --version
CoreLocationCLI [--watch] [--verbose] [--format FORMAT]
CoreLocationCLI [--watch] [--verbose] --json| Switch | Description |
|---|---|
-h, --help |
Display this help message and exit |
--version |
Display the program version |
-w, --watch |
Continually print location updates |
-v, --verbose |
Show debugging output |
-f, --format |
Print a string with the specified substitutions |
-j, --json |
Print a JSON object with all available information |
With the format specifiers:
| Format | Description |
|---|---|
%latitude |
Latitude (degrees north; negative for south) |
%longitude |
Longitude (degrees east; negative for west) |
%altitude |
Altitude in meters |
%direction |
Degrees from true north |
%speed |
Speed in meters per second |
%h_accuracy |
Horizontal accuracy in meters |
%v_accuracy |
Vertical accuracy in meters |
%time |
Timestamp of the location update |
%address |
Reverse geocoded address |
%name |
Place name from reverse geocoding |
%isoCountryCode |
ISO country code from reverse geocoding |
%country |
Country name from reverse geocoding |
%postalCode |
Postal code from reverse geocoding |
%administrativeArea |
State or province from reverse geocoding |
%subAdministrativeArea |
Additional administrative area information |
%locality |
City name from reverse geocoding |
%subLocality |
Additional city-level information |
%thoroughfare |
Street address from reverse geocoding |
%subThoroughfare |
Additional street-level information |
%region |
Geographic region from reverse geocoding |
%timeZone |
Time zone from reverse geocoding |
%time_local |
Localized time using the reverse geocoded time zone |
Note: The default format is %latitude %longitude.
./CoreLocationCLI50.943829 6.941043
./CoreLocationCLI --format "%latitude %longitude\n%address"50.943829 6.941043 Kaiser-Wilhelm-Ring 21 Cologne North Rhine-Westphalia 50672 Germany
./CoreLocationCLI --json{"address":"407 Keats Rd\nLower Moreland PA 19006\nUnited States","locality":"nLower Moreland","subThoroughfare":"407","time":"2019-10-03 04:10:05 +0000","subLocality":null,"administrativeArea":"PA","country":"United States","thoroughfare":"Keats Rd","region":"<+40.141196,-75.034815> radius 35.91","speed":"-1","latitude":"40.141196","name":"1354 Panther Rd","altitude":"92.00","timeZone":"America\/New_York","time_local": "2019-10-02 23:10:05 -0400","isoCountryCode":"US","longitude":"-75.034815","v_accuracy":"65","postalCode":"19006","direction":"-1.0","h_accuracy":"65","subAdministrativeArea":"Montgomery"}
Install the latest release using Homebrew with:
brew install --cask corelocationcliOr build from the command line. See scripts/README.md.
The Homebrew cask installs the notarized GitHub release. Gatekeeper accepts that copy.
A dialog that says "CoreLocationCLI" can't be opened because it is from an unidentified developer means the copy was not that notarized release. Approve it in System Settings, Privacy & Security. See https://support.apple.com/en-us/HT202491.
This project exists to provide a simple tool for getting a device's location. It is expected that this will be composed with other tools or used directly for testing and logging.
The project maintainer was a victim of kidnapping in his past. Meanwhile his laptop was opened by the captors, at the time CoreLocation CLI could have helped to identify the location of his captors. Since then, he continues to maintain the software, he uses the software so it could collect evidence in this situation again, and he is more careful about not getting kidnapped.
Considering the project scope, please report any issues and recommend a fix if possible.
See RELEASE.md.
- Releases follow best practices documented in swift-app-template, release 1.1.0. Release Please uses the
simplerelease type, aVERSIONfile, and the merged release pull request as the only publish trigger.include-v-in-tagis false, because the Homebrew cask downloadsreleases/download/<version>/CoreLocationCLI.zip. The template's tag isv<version>. This repository publishes the stapled zip. The template uploads an iOS build and a macOS build to TestFlight. The workflow creates the GitHub release after that build succeeds, which is the gate in that template's release workflow. - lint.yml, .editorconfig, .markdownlint.json, .markdownlintignore, and .prettierignore are the lint files from swift-app-template release 1.1.0. Prettier and markdownlint run there.
swift formatruns in ci.yml onSourcesandTests. The template formats an Xcode app and tests it on the iPhone 17 simulator. This repository is a Swift package. - The release attestation follows rust-template release 1.1.0. actions/attest signs
CoreLocationCLI.ziptwice. Passing no predicate selects SLSA Provenance v1. The second statement isurn:versionwith{"version":"<version>"}. The value is the release tag and has no leadingv. Both lines arerelease.sigstore.jsonl. Checking them followsgh attestation verify. The commands are in RELEASE.md. rust-template attests provenance in the build job. This repository attests both statements in the publish job, after notarization, because that is the only job that produces the zip.
