#!/bin/bash -eu if [ $# -eq 0 ]; then SCHEMA='worker' else SCHEMA=$1 fi if [ $SCHEMA = "worker" ]; then IN="schema/workerschema/v1.json" OUT="schema/workerschema/v1-json.go" GEN="schema/workerschema/v1-gen.go" DOC="schema/workerschema/README.md" GOPKG="workerschema" elif [ $SCHEMA = 'admin' ]; then IN="schema/adminschema/v1.json" OUT="schema/adminschema/v1-json.go" GEN="schema/adminschema/v1-gen.go" DOC="schema/adminschema/README.md" GOPKG="adminschema" else echo "Usage: generator [worker|admin]" exit 1 fi GENDOC=bin/gendoc if [ ! -f $GENDOC ]; then echo "gendoc command line tool not found. please run build script at the top level of this repo" exit 1 fi $GENDOC --f $IN --o $DOC # Though google-api-go-generator is a main, dex vendors the app using the same # tool it uses to vendor third party packages. Hence, it can be found in the # "vendor" directory. # # This vendoring is currently done with godep, but may change if/when we move to # another tool. # # See schema/generator_import.go for instructions on updating the dependency. PKG="github.com/coreos/dex/vendor/google.golang.org/api/google-api-go-generator" # First, write the discovery document into a go file so it can be served statically by the API cat << EOF > "${OUT}" package $GOPKG // // This file is automatically generated by schema/generator // // **** DO NOT EDIT **** // EOF echo -n 'const DiscoveryJSON = `' >> ${OUT} cat ${IN} >> "${OUT}" echo -n '`' >> "${OUT}" # Now build google-api-go-generator - we vendor so this is consistently reproducible GEN_PATH="bin/google-api-go-generator" if [ ! -f ${GEN_PATH} ]; then go build -o ${GEN_PATH} ${PKG} fi # Build the bindings GOPATH=${PWD}/gopath ./bin/google-api-go-generator \ -googleapi_pkg "google.golang.org/api/googleapi" \ -api_json_file "${IN}" \ -output "${GEN}" # Finally, fix the import in the bindings to refer to the vendored google-api package goimports -w ${GEN}