From 756dbf357496b57c77bbaa40658ecb6cd7c64253 Mon Sep 17 00:00:00 2001 From: David Newhall II Date: Fri, 21 Jun 2019 02:37:25 -0700 Subject: [PATCH] Build exe too. Update docs. --- CONTRIBUTING.md | 4 ++-- Makefile | 17 +++++++++++------ README.md | 17 +++++++++-------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c07962c2..fa7c4c86 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,10 +19,10 @@ As long as this document is kept up to date, this is what the travis file does: - Tests that the Docker container ran and produced expected output. - Makes a release. `make release`: This does a lot of things, controlled by the [Makefile](Makefile). - Runs go tests and go linters. - - Compiles the application binaries for Linux and macOS. + - Compiles the application binaries for Windows, Linux and macOS. - Compiles a man page that goes into the packages. - Creates rpm and deb packages using fpm. - - Puts the packages, gzipped binaries and a file containing the SHA256s of each asset into a release folder. + - Puts the packages, gzipped binaries and files containing the SHA256s of each asset into a release folder. After the release is built and Docker image tested: - Deploys the release assets to the tagged release on GitHub using an encrypted GitHub Token (api key). diff --git a/Makefile b/Makefile index c42e0317..002a2862 100644 --- a/Makefile +++ b/Makefile @@ -20,15 +20,14 @@ RPMVERSION:=$(shell echo $(VERSION) | tr -- - _) all: man build # Prepare a release. Called in Travis CI. -release: clean test $(BINARY)-$(RPMVERSION)-$(ITERATION).x86_64.rpm $(BINARY)_$(VERSION)-$(ITERATION)_amd64.deb macos +release: clean test macos windows $(BINARY)-$(RPMVERSION)-$(ITERATION).x86_64.rpm $(BINARY)_$(VERSION)-$(ITERATION)_amd64.deb # Prepareing a release! mkdir -p release - gzip -9 $(BINARY).linux - gzip -9 $(BINARY).macos - mv $(BINARY)-$(RPMVERSION)-$(ITERATION).x86_64.rpm $(BINARY)_$(VERSION)-$(ITERATION)_amd64.deb \ - $(BINARY).macos.gz $(BINARY).linux.gz release/ + mv $(BINARY).linux $(BINARY).macos $(BINARY).exe release/ + gzip -9r release/ + mv $(BINARY)-$(RPMVERSION)-$(ITERATION).x86_64.rpm $(BINARY)_$(VERSION)-$(ITERATION)_amd64.deb release/ # Generating File Hashes - openssl dgst -sha256 release/* | tee release/$(BINARY)_checksums_$(VERSION)-$(ITERATION).txt + for i in release/*; do (openssl dgst -r -sha256 "$$i" | head -c64 ; echo) | tee "$$i.sha256.txt"; done # Delete all build assets. clean: @@ -74,6 +73,12 @@ $(BINARY).macos: # Building darwin binary. GOOS=darwin go build -o $(BINARY).macos -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/pkg/unifi-poller.Version=$(VERSION)" $(PACKAGE) +exe: $(BINARY).exe +windows: $(BINARY).exe +$(BINARY).exe: + # Building darwin binary. + GOOS=windows go build -o $(BINARY).exe -ldflags "-w -s -X github.com/davidnewhall/unifi-poller/pkg/unifi-poller.Version=$(VERSION)" $(PACKAGE) + # Packages rpm: clean $(BINARY)-$(RPMVERSION)-$(ITERATION).x86_64.rpm diff --git a/README.md b/README.md index f0a840ee..e0be9a5f 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,10 @@ device configuration. This controller can be installed on Windows, macOS and Lin Ubiquiti also provides a dedicated hardware device called a [CloudKey](https://www.ui.com/unifi/unifi-cloud-key/) that runs the controller software. -Unifi-Poller is a small application that runs on macOS, Linux or Docker. It -polls your controller every 30 seconds for metric data and stores that data in +Unifi-Poller is a small application that runs on Windows, macOS, Linux or Docker. +It polls your controller every 30 seconds for measurements and stores the data in an Influx Database. A small setup with 2 APs, 1 switch, 1 gateway and 40 clients -produces nearly 3000 fields (metrics). +produces over 3000 fields (metrics). This application requires your controller to be running all the time. If you run a Unifi Controller, there's no excuse not to install @@ -76,15 +76,16 @@ I'm totally open to add more configuration options if someone raises a need or c You can control this app with puppet, chef, saltstack, homebrew or a simple bash script if you needed to. It's available for macOS, Linux and Docker. It comes with a systemd service unit that allows you automatically start it up on most Linux -hosts. It probably works just fine on Windows too; -[let me know eh](https://github.com/davidnewhall/unifi-poller/wiki/Windows)? +hosts. It works just fine on [Windows](https://github.com/davidnewhall/unifi-poller/wiki/Windows) too. -The unifi data extraction is provided as an [external library](https://github.com/golift/unifi), +The unifi data extraction is provided as an [external library](https://godoc.org/github.com/golift/unifi), and you can import that code directly without futzing with this application. That means, if you wanted to do something like make telegraf collect your data instead of unifi-poller you can achieve that with a little bit of Go code. You could write -a small app that acts as a telegraf input plugin using the available -[unifi](https://github.com/golift/unifi) library to grab the data from your controller. +a small app that acts as a telegraf input plugin using the [unifi](https://github.com/golift/unifi) +library to grab the data from your controller. As a bonus, all of the code in unifi-poller is +[also a library](https://godoc.org/github.com/davidnewhall/unifi-poller/pkg/unifi-poller) +and can be used in other projects. # What now...