У меня есть набор типов protobuf, и я хочу сгенерировать код reasonML для сериализации. На данный момент я обнаружил, что ocaml-protoc не устанавливается в моей системе. Используя докер,
FROM ocaml/opam:alpine
RUN opam remote add dev git://github.com/mirage/mirage-dev
RUN opam depext -i mirage
RUN opam depext conf-m4.1
RUN yes | opam install ocaml-protoc
затем запустите команду:
docker run \
--mount type=bind,source=$(PWD)/../src/proto,target=/home/opam/ocaml \
--mount type=bind,source="$(PWD)"/../../proto,target=/home/opam/proto \
-ti eb1b1ed36a35 \
ocaml-protoc -ml_out=/home/opam/ocaml /home/opam/proto/chat.proto > /dev/null"
Мне удалось собрать набор файлов ml / mli. Однако эти файлы зависят от некоторых неустановленных библиотек, таких как Pbrt
. Отрывок:
let rec decode_friend_event_etype d =
match Pbrt.Decoder.int_as_varint d with
| 0 -> (Chat_types.Arrival:Chat_types.friend_event_etype)
| 1 -> (Chat_types.Departure:Chat_types.friend_event_etype)
| _ -> Pbrt.Decoder.malformed_variant "friend_event_etype"
--------------^
Есть ли чистый способ решить эту проблему без установки собственных библиотек? Все, что включено, должно быть предоставлено исходным кодом, чтобы bucklescript мог скомпилировать его в JS.
Решение, которое приходит на ум, если бы оно было доступно, заключалось бы в генерации общих зависимостей (таких как Pbrt) вместе с реализациями прототипов. Кто-нибудь нашел способ решить эту проблему?