66 lines
1.7 KiB
Bash
Executable file
66 lines
1.7 KiB
Bash
Executable file
#!/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
|
|
|
|
# See schema/generator_import.go for instructions on updating the dependency
|
|
PKG="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
|
|
GOPATH="${PWD}/Godeps/_workspace" 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}
|