From 4207e8e373661e3d2d9ee9a58b2fb4788645068b Mon Sep 17 00:00:00 2001 From: willclarktech Date: Thu, 3 Dec 2020 12:25:47 +0000 Subject: [PATCH] cosmwasm-stargate: Add proto scripts --- .../cosmwasm-stargate/scripts/define-proto.sh | 16 ++++++++++ .../cosmwasm-stargate/scripts/get-proto.sh | 31 +++++++++++++++++++ .../scripts/predefine-proto.sh | 29 +++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100755 packages/cosmwasm-stargate/scripts/define-proto.sh create mode 100755 packages/cosmwasm-stargate/scripts/get-proto.sh create mode 100755 packages/cosmwasm-stargate/scripts/predefine-proto.sh diff --git a/packages/cosmwasm-stargate/scripts/define-proto.sh b/packages/cosmwasm-stargate/scripts/define-proto.sh new file mode 100755 index 00000000..ac077ff0 --- /dev/null +++ b/packages/cosmwasm-stargate/scripts/define-proto.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -o errexit -o nounset -o pipefail +command -v shellcheck >/dev/null && shellcheck "$0" + +TMP_DIR="./tmp" +JS_SOURCE_FILE="$TMP_DIR/codecimpl.js" +DEFINITIONS_FILE="$TMP_DIR/codecimpl.d.ts" +OUTPUT_DIR="./src/codec/generated/" + +yarn pbts "$JS_SOURCE_FILE" -o "$DEFINITIONS_FILE" +# Remove comments after using them for the .d.ts +# Note "When input files are specified on the command line, tsconfig.json files are ignored." (https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) +yarn tsc --removeComments --target es2017 --module commonjs --outDir "$OUTPUT_DIR" --allowJs "$JS_SOURCE_FILE" + +cp "$DEFINITIONS_FILE" "$OUTPUT_DIR" +rm "$DEFINITIONS_FILE" "$JS_SOURCE_FILE" diff --git a/packages/cosmwasm-stargate/scripts/get-proto.sh b/packages/cosmwasm-stargate/scripts/get-proto.sh new file mode 100755 index 00000000..c12a45c6 --- /dev/null +++ b/packages/cosmwasm-stargate/scripts/get-proto.sh @@ -0,0 +1,31 @@ +#!/bin/bash +set -o errexit -o nounset -o pipefail +command -v shellcheck >/dev/null && shellcheck "$0" + +PROTO_DIR="./proto" + +COSMOS_DIR="$PROTO_DIR/cosmos" +COSMOS_SDK_DIR="$COSMOS_DIR/cosmos-sdk" +COSMOS_SDK_ZIP_FILE="$COSMOS_DIR/tmp.zip" +COSMOS_REF=${COSMOS_REF:-"master"} +COSMOS_SUFFIX=${COSMOS_REF} +[[ $COSMOS_SUFFIX =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-.+)?$ ]] && COSMOS_SUFFIX=${COSMOS_SUFFIX#v} + +COSMWASM_DIR="$PROTO_DIR/cosmwasm" +WASMD_DIR="$COSMWASM_DIR/wasmd" +WASMD_ZIP_FILE="$COSMWASM_DIR/tmp.zip" +WASM_REF=${WASM_REF:-"master"} +WASM_SUFFIX=${WASM_REF} +[[ $WASM_SUFFIX =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-.+)?$ ]] && WASM_SUFFIX=${WASM_SUFFIX#v} + +mkdir -p "$COSMOS_DIR" +wget -qO "$COSMOS_SDK_ZIP_FILE" "https://github.com/cosmos/cosmos-sdk/archive/$COSMOS_REF.zip" +unzip "$COSMOS_SDK_ZIP_FILE" "*.proto" -d "$COSMOS_DIR" +mv "$COSMOS_SDK_DIR-$COSMOS_SUFFIX" "$COSMOS_SDK_DIR" +rm "$COSMOS_SDK_ZIP_FILE" + +mkdir -p "$COSMWASM_DIR" +wget -qO "$WASMD_ZIP_FILE" "https://github.com/cosmwasm/wasmd/archive/$WASM_REF.zip" +unzip "$WASMD_ZIP_FILE" "*.proto" -d "$COSMWASM_DIR" +mv "$WASMD_DIR-$WASM_SUFFIX" "$WASMD_DIR" +rm "$WASMD_ZIP_FILE" diff --git a/packages/cosmwasm-stargate/scripts/predefine-proto.sh b/packages/cosmwasm-stargate/scripts/predefine-proto.sh new file mode 100755 index 00000000..35547ca0 --- /dev/null +++ b/packages/cosmwasm-stargate/scripts/predefine-proto.sh @@ -0,0 +1,29 @@ +#!/bin/bash +set -o errexit -o nounset -o pipefail +command -v shellcheck >/dev/null && shellcheck "$0" + +GENERATED_DIR="./tmp" +ROOT_PROTO_DIR="./proto/cosmwasm/wasmd" +WASM_PROTO_DIR="$ROOT_PROTO_DIR/x/wasm" + +mkdir -p "$GENERATED_DIR" +# Can't use --sparse for some reason. Seems related to https://github.com/protobufjs/protobuf.js/issues/1165 +yarn pbjs \ + -t static-module \ + --es6 \ + -w commonjs \ + -o "$GENERATED_DIR/codecimpl.js" \ + --no-beautify \ + --no-delimited \ + --no-verify \ + --no-convert \ + --force-long \ + "$WASM_PROTO_DIR/internal/types/msg.proto" \ + "$WASM_PROTO_DIR/internal/types/query.proto" \ + "$WASM_PROTO_DIR/internal/types/types.proto" \ + "./proto/cosmos/cosmos-sdk/proto/cosmos/base/v1beta1/coin.proto" \ + "./proto/cosmos/cosmos-sdk/proto/cosmos/base/query/v1beta1/pagination.proto" + +# Work around https://github.com/protobufjs/protobuf.js/issues/1477 +# shellcheck disable=SC2016 +sed -i "" -e 's/^const \$root =.*$/const \$root = {};/' "$GENERATED_DIR/codecimpl.js"