mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.0 KiB
77 lines
2.0 KiB
#!/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 |
|
|
|
go run schema/jsonfmt.go $IN |
|
|
|
$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} |
|
|
|
gofmt -w schema/${GOPKG}
|
|
|