From b45204e54b7cb6d5eb67205700a8ca7f1793fcf5 Mon Sep 17 00:00:00 2001 From: Michael Mayer Date: Wed, 5 Sep 2018 20:26:03 +0200 Subject: [PATCH] Added Makefiles and migrated to go modules --- .travis.yml | 4 +- CHANGELOG.md | 3 +- Dockerfile | 20 +-- Gopkg.lock | 343 --------------------------------------------------- Gopkg.toml | 28 ----- Makefile | 25 ++++ README.md | 6 +- go.mod | 39 ++++++ go.sum | 63 ++++++++++ 9 files changed, 139 insertions(+), 392 deletions(-) delete mode 100644 Gopkg.lock delete mode 100644 Gopkg.toml create mode 100644 Makefile create mode 100644 go.mod create mode 100644 go.sum diff --git a/.travis.yml b/.travis.yml index 482783502..685ae7828 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,11 +5,11 @@ services: before_script: - docker-compose -f docker-compose.travis.yml up -d - - docker-compose exec photoprism /go/bin/dep ensure + - docker-compose exec photoprism /usr/local/go/bin/go build ./... - docker-compose exec photoprism /usr/local/go/bin/go run cmd/photoprism/photoprism.go migrate-db script: - - docker-compose exec photoprism /usr/local/go/bin/go test + - docker-compose exec photoprism /usr/local/go/bin/go test ./... after_script: - docker-compose -f docker-compose.travis.yml down \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 94763b3be..9311374b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,4 +4,5 @@ Changelog Pre-release ----------- -* 05/09/2018 Improved Docker configuration and pushed image to Docker Hub (https://hub.docker.com/r/photoprism/photoprism/) \ No newline at end of file +* 05/09/2018 Improved Docker configuration, pushed image to Docker Hub (https://hub.docker.com/r/photoprism/photoprism/), + added Makefile and migrated to go modules \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 539831d9d..b19e6a2ac 100644 --- a/Dockerfile +++ b/Dockerfile @@ -99,39 +99,27 @@ RUN set -eux; \ ENV GOPATH /go ENV GOBIN $GOPATH/bin ENV PATH $GOBIN:/usr/local/go/bin:$PATH -# ENV GO111MODULE on +ENV GO111MODULE on RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH" -# Install dependencies -RUN go get github.com/tensorflow/tensorflow/tensorflow/go \ - github.com/tensorflow/tensorflow/tensorflow/go/op \ - github.com/julienschmidt/httprouter - # Download InceptionV3 model RUN mkdir -p /model && \ wget "https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip" -O /model/inception.zip && \ unzip /model/inception.zip -d /model && \ chmod -R 777 /model -# Using dep for the moment... -RUN curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh -RUN mkdir -m 777 /go/pkg/dep - -# Create user -# RUN adduser --disabled-password --gecos '' photoprism -# USER photoprism - # Set up project directory WORKDIR "/go/src/github.com/photoprism/photoprism" COPY . . RUN cp config.example.yml ~/.photoprism -# Get dependencies and install -RUN dep ensure +# Build PhotoPrism +RUN go build ./... RUN go install cmd/photoprism/photoprism.go +# Expose HTTP port EXPOSE 80 # Start PhotoPrism server diff --git a/Gopkg.lock b/Gopkg.lock deleted file mode 100644 index 1461b32f6..000000000 --- a/Gopkg.lock +++ /dev/null @@ -1,343 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:8b95956b70e181b19025c7ba3578fdfd8efbec4ce916490700488afb9218972c" - name = "cloud.google.com/go" - packages = ["civil"] - pruneopts = "" - revision = "64a2037ec6be8a4b0c1d1f706ed35b428b989239" - version = "v0.26.0" - -[[projects]] - branch = "master" - digest = "1:31d8d99992991e1498c669ccff1090b195ac5c5084c8ffdb2c746aed432ff7d3" - name = "github.com/araddon/dateparse" - packages = ["."] - pruneopts = "" - revision = "cfd92a431d0efe36a1b81ca25d15b98aae4dbdb6" - -[[projects]] - branch = "master" - digest = "1:445872e4dcdd2820291be6f6d7b06d69f3847c39f31850196d99c3b55f50c503" - name = "github.com/bamiaux/rez" - packages = ["."] - pruneopts = "" - revision = "29f4463c688b986c11f166b12734f69b58b5555f" - -[[projects]] - branch = "master" - digest = "1:35e720ea6905b542e60541b7850936472e8f12eb9ca1fea94f99079fe632f007" - name = "github.com/brett-lempereur/ish" - packages = ["."] - pruneopts = "" - revision = "bbdc45bcf55de61b38b4108871199a117aecd1be" - -[[projects]] - digest = "1:56c130d885a4aacae1dd9c7b71cfe39912c7ebc1ff7d2b46083c8812996dc43b" - name = "github.com/davecgh/go-spew" - packages = ["spew"] - pruneopts = "" - revision = "346938d642f2ec3594ed81d874461961cd0faa76" - version = "v1.1.0" - -[[projects]] - branch = "master" - digest = "1:59d26e030b4edadff17e264d382f0631eac378de47073c9aa0da2b73e243f682" - name = "github.com/denisenkom/go-mssqldb" - packages = [ - ".", - "internal/cp", - ] - pruneopts = "" - revision = "242fa5aa1b45aeb9fcdfeee88822982e3f548e22" - -[[projects]] - digest = "1:ebcfd06c38a94af7f307d3ed0600e06b6da0ca9106f77e7ee4d79a33c8518529" - name = "github.com/disintegration/imaging" - packages = ["."] - pruneopts = "" - revision = "bbcee2f5c9d5e94ca42c8b50ec847fec64a6c134" - version = "v1.4.2" - -[[projects]] - digest = "1:7b4b8c901568da024c49be7ff5e20fdecef629b60679c803041093823fb8d081" - name = "github.com/djherbis/times" - packages = ["."] - pruneopts = "" - revision = "95292e44976d1217cf3611dc7c8d9466877d3ed5" - version = "v1.0.1" - -[[projects]] - branch = "master" - digest = "1:1120f960f5c334f0f94bad29eefaf73d52d226893369693686148f66c1993f15" - name = "github.com/gin-contrib/sse" - packages = ["."] - pruneopts = "" - revision = "22d885f9ecc78bf4ee5d72b937e4bbcdc58e8cae" - -[[projects]] - digest = "1:748df8eda48a48d6d05ebb848a6cf966f846fa4e6179f8731385d04d7a287fc1" - name = "github.com/gin-gonic/gin" - packages = [ - ".", - "binding", - "json", - "render", - ] - pruneopts = "" - revision = "b869fe1415e4b9eb52f247441830d502aece2d4d" - version = "v1.3.0" - -[[projects]] - digest = "1:c07de423ca37dc2765396d6971599ab652a339538084b9b58c9f7fc533b28525" - name = "github.com/go-sql-driver/mysql" - packages = ["."] - pruneopts = "" - revision = "d523deb1b23d913de5bdada721a6071e71283618" - version = "v1.4.0" - -[[projects]] - digest = "1:f958a1c137db276e52f0b50efee41a1a389dcdded59a69711f3e872757dab34b" - name = "github.com/golang/protobuf" - packages = ["proto"] - pruneopts = "" - revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265" - version = "v1.1.0" - -[[projects]] - digest = "1:d269638dbd514822446c3c818b6389c880058af79ec54d97731818b34fe66921" - name = "github.com/jinzhu/gorm" - packages = [ - ".", - "dialects/mssql", - "dialects/mysql", - "dialects/postgres", - "dialects/sqlite", - ] - pruneopts = "" - revision = "6ed508ec6a4ecb3531899a69cbc746ccf65a4166" - version = "v1.9.1" - -[[projects]] - branch = "master" - digest = "1:d9a7385b84d8187fd94e0357045c6fa1147ca94caa56fdd539336c7c102fc728" - name = "github.com/jinzhu/inflection" - packages = ["."] - pruneopts = "" - revision = "04140366298a54a039076d798123ffa108fff46c" - -[[projects]] - digest = "1:b79fc583e4dc7055ed86742e22164ac41bf8c0940722dbcb600f1a3ace1a8cb5" - name = "github.com/json-iterator/go" - packages = ["."] - pruneopts = "" - revision = "1624edc4454b8682399def8740d46db5e4362ba4" - version = "1.1.5" - -[[projects]] - branch = "master" - digest = "1:72ac8b303addf8e2ba29c3fab8feb6630d05b272ae07f9f60b281ad9ee97b61f" - name = "github.com/kylelemons/go-gypsy" - packages = ["yaml"] - pruneopts = "" - revision = "08cad365cd28a7fba23bb1e57aa43c5e18ad8bb8" - -[[projects]] - branch = "master" - digest = "1:09792d732b079867772cdbabdf7dc54ef9f9d04c998a9ce6226657151fccbb94" - name = "github.com/lib/pq" - packages = [ - ".", - "hstore", - "oid", - ] - pruneopts = "" - revision = "90697d60dd844d5ef6ff15135d0203f65d2f53b8" - -[[projects]] - digest = "1:78229b46ddb7434f881390029bd1af7661294af31f6802e0e1bedaad4ab0af3c" - name = "github.com/mattn/go-isatty" - packages = ["."] - pruneopts = "" - revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39" - version = "v0.0.3" - -[[projects]] - digest = "1:bc03901fc8f0965ccba8bc453eae21a9b04f95999eab664c7de6dc7290f4e8f4" - name = "github.com/mattn/go-sqlite3" - packages = ["."] - pruneopts = "" - revision = "25ecb14adfc7543176f7d85291ec7dba82c6f7e4" - version = "v1.9.0" - -[[projects]] - digest = "1:0c0ff2a89c1bb0d01887e1dac043ad7efbf3ec77482ef058ac423d13497e16fd" - name = "github.com/modern-go/concurrent" - packages = ["."] - pruneopts = "" - revision = "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94" - version = "1.0.3" - -[[projects]] - digest = "1:e32bdbdb7c377a07a9a46378290059822efdce5c8d96fe71940d87cb4f918855" - name = "github.com/modern-go/reflect2" - packages = ["."] - pruneopts = "" - revision = "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd" - version = "1.0.1" - -[[projects]] - digest = "1:7365acd48986e205ccb8652cc746f09c8b7876030d53710ea6ef7d0bd0dcd7ca" - name = "github.com/pkg/errors" - packages = ["."] - pruneopts = "" - revision = "645ef00459ed84a119197bfb8d8205042c6df63d" - version = "v0.8.0" - -[[projects]] - digest = "1:256484dbbcd271f9ecebc6795b2df8cad4c458dd0f5fd82a8c2fa0c29f233411" - name = "github.com/pmezard/go-difflib" - packages = ["difflib"] - pruneopts = "" - revision = "792786c7400a136282c1664665ae0a8db921c6c2" - version = "v1.0.0" - -[[projects]] - branch = "go1" - digest = "1:6121942039481ed09e319a5aef3b7468b341d4c7d4a664a9f6e66eca535416cf" - name = "github.com/rwcarlsen/goexif" - packages = [ - "exif", - "mknote", - "tiff", - ] - pruneopts = "" - revision = "8d986c03457a2057c7b0fb0a48113f7dd48f9619" - -[[projects]] - digest = "1:26a7745eb5573df3e4a288dfb8be79090c3e96aa741693838c6c9af85396b176" - name = "github.com/steakknife/hamming" - packages = ["."] - pruneopts = "" - revision = "5ac3f73b8842df21423978fbbeb5166670f6f73e" - version = "0.2.3" - -[[projects]] - digest = "1:c587772fb8ad29ad4db67575dad25ba17a51f072ff18a22b4f0257a4d9c24f75" - name = "github.com/stretchr/testify" - packages = ["assert"] - pruneopts = "" - revision = "f35b8ab0b5a2cef36673838d662e249dd9c94686" - version = "v1.2.2" - -[[projects]] - digest = "1:59a17c3323333602195b838058ac02843f709c8a295cda559f1c28d7e05bda7a" - name = "github.com/tensorflow/tensorflow" - packages = [ - "tensorflow/go", - "tensorflow/go/op", - ] - pruneopts = "" - revision = "656e7a2b347c3c6eb76a6c130ed4b1def567b6c1" - version = "v1.10.0" - -[[projects]] - digest = "1:2e7f653483e51243b6cd6de60ce39bde0d6927d10a3c24295ab0f82cb1efeae2" - name = "github.com/ugorji/go" - packages = ["codec"] - pruneopts = "" - revision = "b4c50a2b199d93b13dc15e78929cfb23bfdf21ab" - version = "v1.1.1" - -[[projects]] - digest = "1:e85837cb04b78f61688c6eba93ea9d14f60d611e2aaf8319999b1a60d2dafbfa" - name = "github.com/urfave/cli" - packages = ["."] - pruneopts = "" - revision = "cfb38830724cc34fedffe9a2a29fb54fa9169cd1" - version = "v1.20.0" - -[[projects]] - branch = "master" - digest = "1:4cae11053a5fc8e7b08228fcc14d161d3e60b64ba508a8b216937da472690991" - name = "golang.org/x/crypto" - packages = ["md4"] - pruneopts = "" - revision = "de0752318171da717af4ce24d0a2e8626afaeb11" - -[[projects]] - branch = "master" - digest = "1:0960a9f676f505c50b45b2db87151ef60991c6f4764083b02acfabf09bcdc5cc" - name = "golang.org/x/image" - packages = [ - "bmp", - "riff", - "tiff", - "tiff/lzw", - "vp8", - "vp8l", - "webp", - ] - pruneopts = "" - revision = "c73c2afc3b812cdd6385de5a50616511c4a3d458" - -[[projects]] - branch = "master" - digest = "1:b779cc85de245422bf70d8a21e6afcf3c0591eca64dc507feb9f054f64b21ab9" - name = "golang.org/x/sys" - packages = ["unix"] - pruneopts = "" - revision = "4e1fef5609515ec7a2cee7b5de30ba6d9b438cbf" - -[[projects]] - digest = "1:c1771ca6060335f9768dff6558108bc5ef6c58506821ad43377ee23ff059e472" - name = "google.golang.org/appengine" - packages = ["cloudsql"] - pruneopts = "" - revision = "b1f26356af11148e710935ed1ac8a7f5702c7612" - version = "v1.1.0" - -[[projects]] - digest = "1:dd549e360e5a8f982a28c2bcbe667307ceffe538ed9afc7c965524f1ac285b3f" - name = "gopkg.in/go-playground/validator.v8" - packages = ["."] - pruneopts = "" - revision = "5f1438d3fca68893a817e4a66806cea46a9e4ebf" - version = "v8.18.2" - -[[projects]] - digest = "1:f0620375dd1f6251d9973b5f2596228cc8042e887cd7f827e4220bc1ce8c30e2" - name = "gopkg.in/yaml.v2" - packages = ["."] - pruneopts = "" - revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183" - version = "v2.2.1" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/araddon/dateparse", - "github.com/brett-lempereur/ish", - "github.com/disintegration/imaging", - "github.com/djherbis/times", - "github.com/gin-gonic/gin", - "github.com/gin-gonic/gin/binding", - "github.com/jinzhu/gorm", - "github.com/jinzhu/gorm/dialects/mssql", - "github.com/jinzhu/gorm/dialects/mysql", - "github.com/jinzhu/gorm/dialects/postgres", - "github.com/jinzhu/gorm/dialects/sqlite", - "github.com/kylelemons/go-gypsy/yaml", - "github.com/pkg/errors", - "github.com/rwcarlsen/goexif/exif", - "github.com/rwcarlsen/goexif/mknote", - "github.com/steakknife/hamming", - "github.com/stretchr/testify/assert", - "github.com/tensorflow/tensorflow/tensorflow/go", - "github.com/tensorflow/tensorflow/tensorflow/go/op", - "github.com/urfave/cli", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml deleted file mode 100644 index e448ca51a..000000000 --- a/Gopkg.toml +++ /dev/null @@ -1,28 +0,0 @@ -# Gopkg.toml example -# -# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md -# for detailed Gopkg.toml documentation. -# -# required = ["github.com/user/thing/cmd/thing"] -# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] -# -# [[constraint]] -# name = "github.com/user/project" -# version = "1.0.0" -# -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# -# [[override]] -# name = "github.com/x/y" -# version = "2.4.0" - -[[constraint]] - branch = "master" - name = "github.com/kylelemons/go-gypsy" - -[[constraint]] - name = "github.com/urfave/cli" - version = "1.20.0" \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..c2d2de66f --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +export GO111MODULE=on +GOCMD=go +GOINSTALL=$(GOCMD) install +GOBUILD=$(GOCMD) build +GORUN=$(GOCMD) run +GOCLEAN=$(GOCMD) clean +GOTEST=$(GOCMD) test +GOGET=$(GOCMD) get +BINARY_NAME=photoprism + +all: deps test build +install: + $(GOINSTALL) cmd/photoprism/photoprism.go +build: + $(GOBUILD) cmd/photoprism/photoprism.go -o $(BINARY_NAME) -v +test: + $(GOTEST) -v ./... +clean: + $(GOCLEAN) + rm -f $(BINARY_NAME) +image: + docker build . --tag photoprism/photoprism + docker push photoprism/photoprism +deps: + $(GOBUILD) -v ./... \ No newline at end of file diff --git a/README.md b/README.md index 51bba4755..c6c076066 100644 --- a/README.md +++ b/README.md @@ -56,12 +56,14 @@ docker-compose up ``` docker-compose exec photoprism bash -dep ensure -go test +go build ./... +go test ./... go run cmd/photoprism/photoprism.go migrate-db go run cmd/photoprism/photoprism.go start ``` +This project uses modules and requires Go 1.11 or later. See https://github.com/golang/go/wiki/Modules for more information. + Concept ------- diff --git a/go.mod b/go.mod new file mode 100644 index 000000000..511e7377d --- /dev/null +++ b/go.mod @@ -0,0 +1,39 @@ +module github.com/photoprism/photoprism + +require ( + cloud.google.com/go v0.26.0 + github.com/araddon/dateparse v0.0.0-20180729174819-cfd92a431d0e + github.com/bamiaux/rez v0.0.0-20170731184118-29f4463c688b + github.com/brett-lempereur/ish v0.0.0-20161214150457-bbdc45bcf55d + github.com/davecgh/go-spew v1.1.0 + github.com/denisenkom/go-mssqldb v0.0.0-20180707235734-242fa5aa1b45 + github.com/disintegration/imaging v1.4.2 + github.com/djherbis/times v1.0.1 + github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7 + github.com/gin-gonic/gin v1.3.0 + github.com/go-sql-driver/mysql v1.4.0 + github.com/golang/protobuf v1.1.0 + github.com/jinzhu/gorm v1.9.1 + github.com/jinzhu/inflection v0.0.0-20180308033659-04140366298a + github.com/json-iterator/go v1.1.5 + github.com/kylelemons/go-gypsy v0.0.0-20160905020020-08cad365cd28 + github.com/lib/pq v0.0.0-20180523175426-90697d60dd84 + github.com/mattn/go-isatty v0.0.3 + github.com/mattn/go-sqlite3 v1.9.0 + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd + github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 + github.com/pkg/errors v0.8.0 + github.com/pmezard/go-difflib v1.0.0 + github.com/rwcarlsen/goexif v0.0.0-20180518182100-8d986c03457a + github.com/steakknife/hamming v0.0.0-20161012051909-5ac3f73b8842 + github.com/stretchr/testify v1.2.2 + github.com/tensorflow/tensorflow v1.10.0 + github.com/ugorji/go v1.1.1 + github.com/urfave/cli v1.20.0 + golang.org/x/crypto v0.0.0-20180808211826-de0752318171 + golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81 + golang.org/x/sys v0.0.0-20180814072032-4e1fef560951 + google.golang.org/appengine v1.1.0 + gopkg.in/go-playground/validator.v8 v8.18.2 + gopkg.in/yaml.v2 v2.2.1 +) diff --git a/go.sum b/go.sum new file mode 100644 index 000000000..d39e2dc37 --- /dev/null +++ b/go.sum @@ -0,0 +1,63 @@ +cloud.google.com/go v0.26.0 h1:e0WKqKTd5BnrG8aKH3J3h+QvEIQtSUcf2n5UZ5ZgLtQ= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/araddon/dateparse v0.0.0-20180729174819-cfd92a431d0e h1:s05JG2GwtJMHaPcXDpo4V35TFgyYZzNsmBlSkHPEbeg= +github.com/araddon/dateparse v0.0.0-20180729174819-cfd92a431d0e/go.mod h1:SLqhdZcd+dF3TEVL2RMoob5bBP5R1P1qkox+HtCBgGI= +github.com/bamiaux/rez v0.0.0-20170731184118-29f4463c688b h1:5Ci5wpOL75rYF6RQGRoqhEAU6xLJ6n/D4SckXX1yB74= +github.com/bamiaux/rez v0.0.0-20170731184118-29f4463c688b/go.mod h1:obBQGGIFbbv9KWg92Qu9UHeD94JXmHD1jovY/z6I3O8= +github.com/brett-lempereur/ish v0.0.0-20161214150457-bbdc45bcf55d h1:oCP9o9IOvgi0A1biE1EkI/m+pViqJoCQjU/bAopLpBo= +github.com/brett-lempereur/ish v0.0.0-20161214150457-bbdc45bcf55d/go.mod h1:sGi2C1jLbZM77czzwYX70vIkYV8Smll6xG93m96IZYw= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisenkom/go-mssqldb v0.0.0-20180707235734-242fa5aa1b45 h1:UW8VerkZA1zCt3uWhQ2wbMae76OLn7s7Utz8wyKtJUk= +github.com/denisenkom/go-mssqldb v0.0.0-20180707235734-242fa5aa1b45/go.mod h1:xN/JuLBIz4bjkxNmByTiV1IbhfnYb6oo99phBn4Eqhc= +github.com/disintegration/imaging v1.4.2 h1:BSVxoYQ2NfLdvIGCDD8GHgBV5K0FCEsc0d/6FxQII3I= +github.com/disintegration/imaging v1.4.2/go.mod h1:9B/deIUIrliYkyMTuXJd6OUFLcrZ2tf+3Qlwnaf/CjU= +github.com/djherbis/times v1.0.1 h1:nVRrVOTFd2r0C7wCQdIDz/fqt8yO0EEzr5f6aXfXiS0= +github.com/djherbis/times v1.0.1/go.mod h1:CGMZlo255K5r4Yw0b9RRfFQpM2y7uOmxg4jm9HsaVf8= +github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7 h1:AzN37oI0cOS+cougNAV9szl6CVoj2RYwzS3DpUQNtlY= +github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= +github.com/gin-gonic/gin v1.3.0 h1:kCmZyPklC0gVdL728E6Aj20uYBJV93nj/TkwBTKhFbs= +github.com/gin-gonic/gin v1.3.0/go.mod h1:7cKuhb5qV2ggCFctp2fJQ+ErvciLZrIeoOSOm6mUr7Y= +github.com/go-sql-driver/mysql v1.4.0 h1:7LxgVwFb2hIQtMm87NdgAVfXjnt4OePseqT1tKx+opk= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/golang/protobuf v1.1.0 h1:0iH4Ffd/meGoXqF2lSAhZHt8X+cPgkfn/cb6Cce5Vpc= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/jinzhu/gorm v1.9.1 h1:lDSDtsCt5AGGSKTs8AHlSDbbgif4G4+CKJ8ETBDVHTA= +github.com/jinzhu/gorm v1.9.1/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= +github.com/jinzhu/inflection v0.0.0-20180308033659-04140366298a h1:eeaG9XMUvRBYXJi4pg1ZKM7nxc5AfXfojeLLW7O5J3k= +github.com/jinzhu/inflection v0.0.0-20180308033659-04140366298a/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/kylelemons/go-gypsy v0.0.0-20160905020020-08cad365cd28 h1:SzHLOWB819X9aUXh2ct6krDIoIujoTsj5J1rDMjkRyo= +github.com/kylelemons/go-gypsy v0.0.0-20160905020020-08cad365cd28/go.mod h1:T/T7jsxVqf9k/zYOqbgNAsANsjxTd1Yq3htjDhQ1H0c= +github.com/lib/pq v0.0.0-20180523175426-90697d60dd84 h1:it29sI2IM490luSc3RAhp5WuCYnc6RtbfLVAB7nmC5M= +github.com/lib/pq v0.0.0-20180523175426-90697d60dd84/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/mattn/go-isatty v0.0.3 h1:ns/ykhmWi7G9O+8a448SecJU3nSMBXJfqQkl0upE1jI= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-sqlite3 v1.9.0 h1:pDRiWfl+++eC2FEFRy6jXmQlvp4Yh3z1MJKg4UeYM/4= +github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rwcarlsen/goexif v0.0.0-20180518182100-8d986c03457a h1:ZDZdsnbMuRSoVbq1gR47o005lfn2OwODNCr23zh9gSk= +github.com/rwcarlsen/goexif v0.0.0-20180518182100-8d986c03457a/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= +github.com/steakknife/hamming v0.0.0-20161012051909-5ac3f73b8842 h1:Xk8V2cXXyb8xE/JOy2d8+0byqbKS1pEhVaeENndbaME= +github.com/steakknife/hamming v0.0.0-20161012051909-5ac3f73b8842/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/tensorflow/tensorflow v1.10.0 h1:TVlKz+s8FPTwEBI98rhB2MR+8S46bK1Rp4bcIFCd7VQ= +github.com/tensorflow/tensorflow v1.10.0/go.mod h1:itOSERT4trABok4UOoG+X4BoKds9F3rIsySdn+Lvu90= +github.com/ugorji/go v1.1.1 h1:gmervu+jDMvXTbcHQ0pd2wee85nEoE0BsVyEuzkfK8w= +github.com/ugorji/go v1.1.1/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= +github.com/urfave/cli v1.20.0 h1:fDqGv3UG/4jbVl/QkFwEdddtEDjh/5Ov6X+0B/3bPaw= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +golang.org/x/crypto v0.0.0-20180808211826-de0752318171 h1:vYogbvSFj2YXcjQxFHu/rASSOt9sLytpCaSkiwQ135I= +golang.org/x/crypto v0.0.0-20180808211826-de0752318171/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81 h1:00VmoueYNlNz/aHIilyyQz/MHSqGoWJzpFv/HW8xpzI= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/sys v0.0.0-20180814072032-4e1fef560951/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/go-playground/validator.v8 v8.18.2 h1:lFB4DoMU6B626w8ny76MV7VX6W2VHct2GVOI3xgiMrQ= +gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= +gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=