Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

integrate client-nodejs with bazel build system #16

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 17 additions & 4 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,10 @@ antlr_dependencies()
####################################

# Load GRPC dependencies
load("//dependencies/compilers:dependencies.bzl", "grpc_dependencies", "python_dependencies")
load("//dependencies/compilers:dependencies.bzl", "grpc_dependencies", "python_dependencies", "node_dependencies")
grpc_dependencies()
python_dependencies()
node_dependencies()

## Python PIP dependencies
load("@io_bazel_rules_python//python:pip.bzl", "pip_repositories", "pip3_import")
Expand All @@ -63,6 +64,19 @@ pip_install()
load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", com_github_grpc_grpc_bazel_grpc_deps = "grpc_deps")
com_github_grpc_grpc_bazel_grpc_deps()

# Node deps
load("@org_pubref_rules_node//node:rules.bzl", "node_repositories", "yarn_modules")
node_repositories()

yarn_modules(
name = "grpc_node_modules",
deps = {
"google-protobuf": "3.6.1",
"grpc": "1.15.1",
"jest": "^23.4.0"
},
)

# Load GRPC Java dependencies
load("@org_pubref_rules_proto//java:deps.bzl", "java_grpc_compile")
java_grpc_compile()
Expand All @@ -72,10 +86,9 @@ load("@org_pubref_rules_proto//python:deps.bzl", "python_grpc_compile")
python_grpc_compile()

# Load GRPC Node.js dependencies
load("@org_pubref_rules_proto//node:deps.bzl", "node_grpc_compile")
load("@org_pubref_rules_proto//node:deps.bzl", "node_grpc_compile", "node_grpc_library")
node_grpc_compile()


node_grpc_library()



Expand Down
132 changes: 131 additions & 1 deletion client-nodejs/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,134 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
#

load("@org_pubref_rules_proto//node:library.bzl", "node_grpc_library")
load("@org_pubref_rules_node//node:rules.bzl", "node_module", "node_binary", "node_test")


sh_binary(
name = "generate_protos",
srcs = ["generate_protos.sh"]
)

sh_binary(
name = "generate_js",
srcs = ["generate_js.sh"]
)


genrule(
name = "keyspace_proto_gen",
srcs = [
"//protocol/keyspace:Keyspace.proto"
],
cmd = "$(location :generate_protos) $< $@",
outs = [
"Keyspace.proto",
],
tools = [":generate_protos"]
)

genrule(
name = "concept_proto_gen",
srcs = [
"//protocol/session:Concept.proto"
],
cmd = "$(location :generate_protos) $< $@",
outs = [
"Concept.proto",
],
tools = [":generate_protos"]
)

genrule(
name = "answer_proto_gen",
srcs = [
"//protocol/session:Answer.proto"
],
cmd = "$(location :generate_protos) $< $@",
outs = [
"Answer.proto",
],
tools = [":generate_protos"]
)

genrule(
name = "session_proto_gen",
srcs = [
"//protocol/session:Session.proto"
],
cmd = "$(location :generate_protos) $< $@",
outs = [
"Session.proto",
],
tools = [":generate_protos"]
)

proto_library(
name = "generated_protos",
srcs = [
":keyspace_proto_gen",
":concept_proto_gen",
":answer_proto_gen",
":session_proto_gen",
]
)

node_grpc_library(
name = "generated_node_lib",
deps = [
":generated_protos"
],
strip_prefix = "client-nodejs",
)


genrule(
name = "generated_node_lib_transformed",
srcs = [":generated_node_lib"],
cmd = "$(location :generate_js) $(SRCS) --outs $(OUTS)",
outs = [
"src/service/Session/autogenerated/Session_pb.js",
"src/service/Session/autogenerated/Session_grpc_pb.js",
"src/service/Session/autogenerated/Answer_pb.js",
"src/service/Session/autogenerated/Answer_grpc_pb.js",
"src/service/Session/autogenerated/Concept_pb.js",
"src/service/Session/autogenerated/Concept_grpc_pb.js",
"src/service/Keyspace/autogenerated/Keyspace_pb.js",
"src/service/Keyspace/autogenerated/Keyspace_grpc_pb.js",
],
tools = [":generate_js"]
)


node_module(
name="grakn",
srcs = glob([
"src/*.js",
"src/service/Keyspace/KeyspaceService.js",
"src/service/Session/*.js",
"src/service/Session/util/*.js",
"src/service/Session/concept/*.js",
]) + glob([
"tests/support/GraknTestEnvironment.js",
"tests/service/keyspace/*.test.js",
"tests/service/session/transaction/*.test.js",
]) + [":generated_node_lib_transformed"] ,
deps = ["@grpc_node_modules//:_all_"]
)


node_binary(
name = "grakn_dummy_binary",
deps = [":grakn"],
main = "src/Grakn.js"
)


sh_test(
name = "jest_tests",
srcs = ["run_jest_tests.sh"],
data = [":grakn_dummy_binary_deploy.tar.gz"]
)
26 changes: 26 additions & 0 deletions client-nodejs/generate_js.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/usr/bin/env bash

WRITE_TO_OUTS=0
INS=()
OUTS=()
array=()
commandline_args=("$@")

for var in "$@"; do
if [[ $var = "--outs" ]]; then
WRITE_TO_OUTS=1
elif [[ WRITE_TO_OUTS -eq 0 ]]; then
INS+=($var)
elif [[ WRITE_TO_OUTS -eq 1 ]]; then
OUTS+=($var)
fi
done


for outfile in "${OUTS[@]}"; do
for infile in "${INS[@]}"; do
if [[ "$(basename $infile)" = "$(basename $outfile)" ]]; then
cat $infile >> $outfile
fi
done
done
4 changes: 4 additions & 0 deletions client-nodejs/generate_protos.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env bash

sed -i.bak -e 's@protocol/session/@@g' $1
mv $1 $2
4 changes: 2 additions & 2 deletions client-nodejs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
"scripts": {
"test": "./node_modules/jest/bin/jest.js",
"build": "rm -rf dist/ && yarn run compileGrpc && BABEL_ENV=production babel src -d dist",
"compileSession": "grpc_tools_node_protoc --proto_path=../client-protocol/proto/ --js_out=import_style=commonjs,binary:./src/service/Session/autogenerated --grpc_out=./src/service/Session/autogenerated ../client-protocol/proto/Session.proto ../client-protocol/proto/Concept.proto ../client-protocol/proto/Answer.proto",
"compileKeyspace": "grpc_tools_node_protoc --proto_path=../client-protocol/proto/ --js_out=import_style=commonjs,binary:./src/service/Keyspace/autogenerated --grpc_out=./src/service/Keyspace/autogenerated ../client-protocol/proto/Keyspace.proto",
"compileSession": "grpc_tools_node_protoc --proto_path=../protocol/proto/ --js_out=import_style=commonjs,binary:./src/service/Session/autogenerated --grpc_out=./src/service/Session/autogenerated ../protocol/proto/Session.proto ../protocol/proto/Concept.proto ../protocol/proto/Answer.proto",
"compileKeyspace": "grpc_tools_node_protoc --proto_path=../protocol/proto/ --js_out=import_style=commonjs,binary:./src/service/Keyspace/autogenerated --grpc_out=./src/service/Keyspace/autogenerated ../protocol/proto/Keyspace.proto",
"compileGrpc": "mkdir -p ./src/service/Session/autogenerated && yarn run compileSession && mkdir -p ./src/service/Keyspace/autogenerated && yarn run compileKeyspace",
"pretest": "yarn run compileGrpc",
"preversion": "yarn build && TEST_ENV=dist yarn test",
Expand Down
18 changes: 18 additions & 0 deletions client-nodejs/run_jest_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/usr/bin/env bash

set -x
ORIG_DIR=$(pwd)

echo "Preparing module for testing"
cd client-nodejs/ &> /dev/null
tar xvf grakn_dummy_binary_deploy.tar.gz &> /dev/null
cd grakn_dummy_binary_bundle/grakn_dummy_binary_files/ &> /dev/null
mv node_modules/client-nodejs/grakn/ . &> /dev/null
cd grakn &> /dev/null

echo "Running test suite"
../node ../node_modules/jest/bin/jest.js || exit 1

echo "Cleaning"
cd $ORIG_DIR &> /dev/null
rm -rf ./grakn_dummy_binary_bundle/ &> /dev/null
15 changes: 11 additions & 4 deletions dependencies/compilers/dependencies.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,16 @@ def antlr_dependencies():
)

def grpc_dependencies():

native.git_repository(
name = "com_github_grpc_grpc",
remote = "https://github.com/grpc/grpc",
tag = "v1.15.1"
remote = "https://github.com/graknlabs/grpc",
commit = "da829a5ac902ab99eef14e6aad1d8e0cd173ec64"
)

native.git_repository(
name = "org_pubref_rules_proto",
remote = "https://github.com/graknlabs/rules_proto",
commit = "9fd93eb7a81e4d6082d2236ba492e13338080945",
commit = "7ee52188c0193eeb7d6cdda22789fd24763d715d",
)

def python_dependencies():
Expand All @@ -45,3 +44,11 @@ def python_dependencies():
commit = "abd475a72ae6a098cc9f859eb435dddd992bc884",
sha256 = "fe468b9396ef5c933679e1a5d846f777d0ea4731927df2149e5a01b328afd9b6"
)


def node_dependencies():
native.git_repository(
name = "org_pubref_rules_node",
remote = "https://github.com/pubref/rules_node.git",
commit = "1c60708c599e6ebd5213f0987207a1d854f13e23",
)