Skip to content

Commit 3582d06

Browse files
authored
feat(api,worker,contrib): add example of plugin in nodejs
Signed-off-by: Benjamin Coenen <[email protected]>
1 parent e7a896d commit 3582d06

File tree

17 files changed

+1802
-21
lines changed

17 files changed

+1802
-21
lines changed

contrib/grpcplugins/action/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ GITHASH := $(if ${GIT_HASH},${GIT_HASH},`git log -1 --format="%H"`)
55
BUILDTIME := `date "+%m/%d/%y-%H:%M:%S"`
66

77
TARGET_DIR = dist
8-
TARGET_NAME = $(filter-out $@,$(MAKECMDGOALS))
8+
TARGET_NAME = $(filter-out $@ examples,$(MAKECMDGOALS))
99

1010
define PLUGIN_MANIFEST_BINARY
1111
os: %os%
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
dist
2+
node_modules
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
.PHONY: clean
2+
3+
VERSION := $(if ${CDS_SEMVER},${CDS_SEMVER},snapshot)
4+
5+
TARGET_DIR = dist
6+
TARGET_NAME = nodejs
7+
8+
define PLUGIN_MANIFEST_BINARY
9+
os: %os%
10+
arch: %arch%
11+
cmd: node
12+
entrypoints:
13+
- index.js
14+
requirements:
15+
- name: node
16+
type: binary
17+
value: node
18+
endef
19+
export PLUGIN_MANIFEST_BINARY
20+
21+
TARGET_OS = $(if ${OS},${OS},windows darwin linux freebsd)
22+
TARGET_ARCH = $(if ${ARCH},${ARCH},amd64 arm 386)
23+
TARGET_TAR = plugin-$(TARGET_NAME).tar.gz
24+
25+
build:
26+
@mkdir -p $(TARGET_DIR)
27+
@cp $(TARGET_NAME).yml $(TARGET_DIR)/plugin.yml
28+
@npm install
29+
@tar -czvf $(TARGET_DIR)/$(TARGET_TAR) node_modules *.js *.json
30+
@for OS in $(TARGET_OS); do \
31+
for ARCH in $(TARGET_ARCH); do \
32+
echo "$$PLUGIN_MANIFEST_BINARY" > $(TARGET_DIR)/plugin-$$OS-$$ARCH.yml; \
33+
perl -pi -e s,%os%,$$OS,g $(TARGET_DIR)/plugin-$$OS-$$ARCH.yml; \
34+
perl -pi -e s,%arch%,$$ARCH,g $(TARGET_DIR)/plugin-$$OS-$$ARCH.yml; \
35+
done; \
36+
done;
37+
38+
publish:
39+
@echo "Updating plugin $(TARGET_NAME)..."
40+
cdsctl admin plugins import $(TARGET_DIR)/plugin.yml
41+
@for OS in $(TARGET_OS); do \
42+
for ARCH in $(TARGET_ARCH); do \
43+
echo "Updating plugin binary $(TARGET_NAME)-$$OS-$$ARCH"; \
44+
cdsctl admin plugins binary-add plugin-$(TARGET_NAME) $(TARGET_DIR)/plugin-$$OS-$$ARCH.yml $(TARGET_DIR)/$(TARGET_TAR); \
45+
done; \
46+
done
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
// GENERATED CODE -- DO NOT EDIT!
2+
3+
'use strict';
4+
var grpc = require('grpc');
5+
var actionplugin_pb = require('./actionplugin_pb.js');
6+
var google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');
7+
8+
function serialize_actionplugin_ActionPluginManifest(arg) {
9+
if (!(arg instanceof actionplugin_pb.ActionPluginManifest)) {
10+
throw new Error('Expected argument of type actionplugin.ActionPluginManifest');
11+
}
12+
return new Buffer(arg.serializeBinary());
13+
}
14+
15+
function deserialize_actionplugin_ActionPluginManifest(buffer_arg) {
16+
return actionplugin_pb.ActionPluginManifest.deserializeBinary(new Uint8Array(buffer_arg));
17+
}
18+
19+
function serialize_actionplugin_ActionQuery(arg) {
20+
if (!(arg instanceof actionplugin_pb.ActionQuery)) {
21+
throw new Error('Expected argument of type actionplugin.ActionQuery');
22+
}
23+
return new Buffer(arg.serializeBinary());
24+
}
25+
26+
function deserialize_actionplugin_ActionQuery(buffer_arg) {
27+
return actionplugin_pb.ActionQuery.deserializeBinary(new Uint8Array(buffer_arg));
28+
}
29+
30+
function serialize_actionplugin_ActionResult(arg) {
31+
if (!(arg instanceof actionplugin_pb.ActionResult)) {
32+
throw new Error('Expected argument of type actionplugin.ActionResult');
33+
}
34+
return new Buffer(arg.serializeBinary());
35+
}
36+
37+
function deserialize_actionplugin_ActionResult(buffer_arg) {
38+
return actionplugin_pb.ActionResult.deserializeBinary(new Uint8Array(buffer_arg));
39+
}
40+
41+
function serialize_actionplugin_WorkerHTTPPortQuery(arg) {
42+
if (!(arg instanceof actionplugin_pb.WorkerHTTPPortQuery)) {
43+
throw new Error('Expected argument of type actionplugin.WorkerHTTPPortQuery');
44+
}
45+
return new Buffer(arg.serializeBinary());
46+
}
47+
48+
function deserialize_actionplugin_WorkerHTTPPortQuery(buffer_arg) {
49+
return actionplugin_pb.WorkerHTTPPortQuery.deserializeBinary(new Uint8Array(buffer_arg));
50+
}
51+
52+
function serialize_google_protobuf_Empty(arg) {
53+
if (!(arg instanceof google_protobuf_empty_pb.Empty)) {
54+
throw new Error('Expected argument of type google.protobuf.Empty');
55+
}
56+
return new Buffer(arg.serializeBinary());
57+
}
58+
59+
function deserialize_google_protobuf_Empty(buffer_arg) {
60+
return google_protobuf_empty_pb.Empty.deserializeBinary(new Uint8Array(buffer_arg));
61+
}
62+
63+
64+
var ActionPluginService = exports.ActionPluginService = {
65+
manifest: {
66+
path: '/actionplugin.ActionPlugin/Manifest',
67+
requestStream: false,
68+
responseStream: false,
69+
requestType: google_protobuf_empty_pb.Empty,
70+
responseType: actionplugin_pb.ActionPluginManifest,
71+
requestSerialize: serialize_google_protobuf_Empty,
72+
requestDeserialize: deserialize_google_protobuf_Empty,
73+
responseSerialize: serialize_actionplugin_ActionPluginManifest,
74+
responseDeserialize: deserialize_actionplugin_ActionPluginManifest,
75+
},
76+
run: {
77+
path: '/actionplugin.ActionPlugin/Run',
78+
requestStream: false,
79+
responseStream: false,
80+
requestType: actionplugin_pb.ActionQuery,
81+
responseType: actionplugin_pb.ActionResult,
82+
requestSerialize: serialize_actionplugin_ActionQuery,
83+
requestDeserialize: deserialize_actionplugin_ActionQuery,
84+
responseSerialize: serialize_actionplugin_ActionResult,
85+
responseDeserialize: deserialize_actionplugin_ActionResult,
86+
},
87+
workerHTTPPort: {
88+
path: '/actionplugin.ActionPlugin/WorkerHTTPPort',
89+
requestStream: false,
90+
responseStream: false,
91+
requestType: actionplugin_pb.WorkerHTTPPortQuery,
92+
responseType: google_protobuf_empty_pb.Empty,
93+
requestSerialize: serialize_actionplugin_WorkerHTTPPortQuery,
94+
requestDeserialize: deserialize_actionplugin_WorkerHTTPPortQuery,
95+
responseSerialize: serialize_google_protobuf_Empty,
96+
responseDeserialize: deserialize_google_protobuf_Empty,
97+
},
98+
};
99+
100+
exports.ActionPluginClient = grpc.makeGenericClientConstructor(ActionPluginService);

0 commit comments

Comments
 (0)