3
0
corteza/codegen.sh

235 lines
8.8 KiB
Bash
Executable File

#!/bin/bash
set -e
if [ -f ./build ]; then
find ./build -name gen-* -delete
fi
if [ -f ./.env ]; then
source .env
fi;
_PWD=$PWD
function yellow {
echo -e "\033[33m$@\033[39m"
}
function green {
echo -e "\033[32m$@\033[39m"
}
function gofmt {
yellow "> go fmt ./..."
go fmt ./...
green "OK"
}
function types {
yellow "> types"
if [ ! -f "build/gen-type-set" ]; then
CGO_ENABLED=0 go build -o ./build/gen-type-set codegen/v2/type-set.go
fi
if [ ! -f "build/gen-type-set-test" ]; then
CGO_ENABLED=0 go build -o ./build/gen-type-set-test codegen/v2/type-set-test.go
fi
./build/gen-type-set --types Namespace --output compose/types/namespace.gen.go
./build/gen-type-set --types Attachment --output compose/types/attachment.gen.go
./build/gen-type-set --types Module --output compose/types/module.gen.go
./build/gen-type-set --types Page --output compose/types/page.gen.go
./build/gen-type-set --types Chart --output compose/types/chart.gen.go
./build/gen-type-set --types Record --output compose/types/record.gen.go
./build/gen-type-set --types ModuleField --output compose/types/module_field.gen.go
./build/gen-type-set-test --types Namespace --output compose/types/namespace.gen_test.go
./build/gen-type-set-test --types Attachment --output compose/types/attachment.gen_test.go
./build/gen-type-set-test --types Module --output compose/types/module.gen_test.go
./build/gen-type-set-test --types Page --output compose/types/page.gen_test.go
./build/gen-type-set-test --types Chart --output compose/types/chart.gen_test.go
./build/gen-type-set-test --types Record --output compose/types/record.gen_test.go
./build/gen-type-set-test --types ModuleField --output compose/types/module_field.gen_test.go
./build/gen-type-set --with-primary-key=false --types RecordValue --output compose/types/record_value.gen.go
./build/gen-type-set-test --with-primary-key=false --types RecordValue --output compose/types/record_value.gen_test.go
./build/gen-type-set --types MessageAttachment --output messaging/types/attachment.gen.go
./build/gen-type-set --types Mention --output messaging/types/mention.gen.go
./build/gen-type-set --types MessageFlag --output messaging/types/message_flag.gen.go
./build/gen-type-set --types Message --output messaging/types/message.gen.go
./build/gen-type-set --types Channel --output messaging/types/channel.gen.go
./build/gen-type-set-test --types MessageAttachment --output messaging/types/attachment.gen_test.go
./build/gen-type-set-test --types Mention --output messaging/types/mention.gen_test.go
./build/gen-type-set-test --types MessageFlag --output messaging/types/message_flag.gen_test.go
./build/gen-type-set-test --types Message --output messaging/types/message.gen_test.go
./build/gen-type-set-test --types Channel --output messaging/types/channel.gen_test.go
./build/gen-type-set --with-primary-key=false --types ChannelMember --output messaging/types/channel_member.gen.go
./build/gen-type-set --with-primary-key=false --types Command --output messaging/types/command.gen.go
./build/gen-type-set --with-primary-key=false --types CommandParam --output messaging/types/command_param.gen.go
./build/gen-type-set --with-primary-key=false --types Unread --output messaging/types/unread.gen.go
./build/gen-type-set-test --with-primary-key=false --types ChannelMember --output messaging/types/channel_member.gen_test.go
./build/gen-type-set-test --with-primary-key=false --types Command --output messaging/types/command.gen_test.go
./build/gen-type-set-test --with-primary-key=false --types CommandParam --output messaging/types/command_param.gen_test.go
./build/gen-type-set-test --with-primary-key=false --types Unread --output messaging/types/unread.gen_test.go
./build/gen-type-set --types User --output system/types/user.gen.go
./build/gen-type-set --types Application --output system/types/application.gen.go
./build/gen-type-set --types Role --output system/types/role.gen.go
./build/gen-type-set --types Organisation --output system/types/organisation.gen.go
./build/gen-type-set --types Credentials --output system/types/credentials.gen.go
./build/gen-type-set --types Reminder --output system/types/reminder.gen.go
./build/gen-type-set --types Attachment --output system/types/attachment.gen.go
./build/gen-type-set-test --types User --output system/types/user.gen_test.go
./build/gen-type-set-test --types Application --output system/types/application.gen_test.go
./build/gen-type-set-test --types Role --output system/types/role.gen_test.go
./build/gen-type-set-test --types Organisation --output system/types/organisation.gen_test.go
./build/gen-type-set-test --types Credentials --output system/types/credentials.gen_test.go
./build/gen-type-set-test --types Reminder --output system/types/reminder.gen_test.go
./build/gen-type-set-test --types Attachment --output system/types/attachment.gen_test.go
./build/gen-type-set --types Value --output pkg/settings/types.gen.go --with-primary-key=false --package settings
./build/gen-type-set-test --types Value --output pkg/settings/types.gen_test.go --with-primary-key=false --package settings
./build/gen-type-set --types Rule --output pkg/permissions/rule.gen.go --with-primary-key=false --package permissions
./build/gen-type-set --types Resource --output pkg/permissions/resource.gen.go --with-primary-key=false --package permissions
./build/gen-type-set-test --types Rule --output pkg/permissions/rule.gen_test.go --with-primary-key=false --package permissions
./build/gen-type-set-test --types Resource --output pkg/permissions/resource.gen_test.go --with-primary-key=false --package permissions
./build/gen-type-set --types Script --output pkg/corredor/types.gen.go --with-primary-key=false --package corredor
./build/gen-type-set-test --types Script --output pkg/corredor/types.gen_test.go --with-primary-key=false --package corredor
./build/gen-type-set --types Action --output pkg/actionlog/types.gen.go --with-primary-key=false --package actionlog
./build/gen-type-set-test --types Action --output pkg/actionlog/types.gen_test.go --with-primary-key=false --package actionlog
green "OK"
}
function database {
yellow "> database"
FOLDERS=$(find . -type d -wholename '*/schema/mysql')
for FOLDER in $FOLDERS; do
FOLDER=$(dirname $(dirname $FOLDER))
FOLDER=${FOLDER:2}
echo $FOLDER
cd $FOLDER && $GOPATH/bin/statik -p mysql -m -Z -f -src=schema/mysql && cd $_PWD
done
green "OK"
}
function provision {
yellow "> provision files"
for FOLDER in system compose messaging; do
$GOPATH/bin/statik -p $FOLDER -m -Z -f -src="./provision/$FOLDER/src" -dest "./provision"
done
green "OK"
}
function events {
if [ ! -f "build/event-gen" ]; then
CGO_ENABLED=0 go build -o ./build/event-gen ./codegen/v2/events
fi
for SERVICE in system compose messaging; do
yellow "> event files for ${SERVICE}"
./build/event-gen --service ${SERVICE}
done
green "OK"
}
function specs {
yellow "> specs"
if [ ! -f "build/gen-spec" ]; then
CGO_ENABLED=0 go build -o ./build/gen-spec codegen/v2/spec.go
fi
_PWD=$PWD
SPECS=$(find $PWD -name 'spec.json' | xargs -n1 dirname)
for SPEC in $SPECS; do
yellow "> spec $SPEC"
cd $SPEC && rm -rf spec && ../../build/gen-spec && cd $_PWD
green "OK"
done
for SPEC in $SPECS; do
SRC=$(basename $SPEC)
if [ -d "codegen/$SRC" ]; then
yellow "> README $SRC"
codegen/codegen.php $SRC
rsync -a codegen/common/ $SRC/
green "OK"
fi
done
}
function proto {
yellow "> proto"
# Where should we look for the files
PROTOBUF_PATH="codegen/corteza-protobuf"
CORTEZA_PROTOBUF_PATH=${CORTEZA_PROTOBUF_PATH:-"${PROTOBUF_PATH}"}
# Download protobufs to the primary location
BRANCH=${BRANCH:-"develop"}
ZIP="${BRANCH}.zip"
URL=${URL:-"https://github.com/cortezaproject/corteza-protobuf/archive/${ZIP}"}
rm -rf "${PROTOBUF_PATH}"
curl -s --location "${URL}" > "codegen/${ZIP}"
unzip -qq -o -d "codegen/" "codegen/${ZIP}"
mv -f "codegen/corteza-protobuf-${BRANCH}" "${PROTOBUF_PATH}"
DIR=./pkg/corredor
mkdir -p ${DIR}
yellow " ${CORTEZA_PROTOBUF_PATH} >> ${DIR}"
PATH=$PATH:$GOPATH/bin protoc \
--proto_path ${CORTEZA_PROTOBUF_PATH} \
--go_out="plugins=grpc:./${DIR}" \
service-corredor.proto
yellow " ${CORTEZA_PROTOBUF_PATH} >> system/proto"
PATH=$PATH:$GOPATH/bin protoc \
--proto_path ${CORTEZA_PROTOBUF_PATH}/system \
--go_out=plugins=grpc:system/proto \
user.proto role.proto
green "OK"
}
case ${1:-"all"} in
types)
types
;;
database)
database
;;
provision)
provision
;;
specs)
specs
;;
proto)
proto
;;
events)
events
;;
all)
types
database
provision
specs
proto
events
esac
# Always finish with fmt
gofmt