bf070c33b5
The ts-proto lib has the huge advantage of producing code the "Typescript" way and not the "Java" way. In particular, for "oneof" types in protobuf, it is generating "ADT" that can be used to check if we forgot or not to deal with a type.
70 lines
2.2 KiB
YAML
70 lines
2.2 KiB
YAML
name: Push @workadventure/iframe-api-typings to NPM
|
|
on:
|
|
release:
|
|
types: [created]
|
|
push:
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
# Setup .npmrc file to publish to npm
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: '14.x'
|
|
registry-url: 'https://registry.npmjs.org'
|
|
|
|
- name: Replace version number
|
|
run: 'sed -i "s#VERSION_PLACEHOLDER#${GITHUB_REF/refs\/tags\//}#g" package.json'
|
|
working-directory: "front/packages/iframe-api-typings"
|
|
|
|
- name: Debug package.json
|
|
run: cat package.json
|
|
working-directory: "front/packages/iframe-api-typings"
|
|
|
|
- name: Install Protoc
|
|
uses: arduino/setup-protoc@v1
|
|
with:
|
|
version: '3.x'
|
|
|
|
- name: "Install dependencies"
|
|
run: yarn install
|
|
working-directory: "front"
|
|
|
|
- name: "Install messages dependencies"
|
|
run: yarn install
|
|
working-directory: "messages"
|
|
|
|
- name: "Build proto messages"
|
|
run: yarn run ts-proto && yarn run copy-to-front-ts-proto && yarn run json-copy-to-front
|
|
working-directory: "messages"
|
|
|
|
- name: "Create index.html"
|
|
run: ./templater.sh
|
|
working-directory: "front"
|
|
|
|
- name: "Build"
|
|
run: yarn run build-typings
|
|
env:
|
|
PUSHER_URL: "//localhost:8080"
|
|
ADMIN_URL: "//localhost:80"
|
|
working-directory: "front"
|
|
|
|
# We build the front to generate the typings of iframe_api, then we copy those typings in a separate package.
|
|
- name: Copy typings to package dir
|
|
run: cp front/dist/src/iframe_api.d.ts front/packages/iframe-api-typings/iframe_api.d.ts
|
|
|
|
- name: Copy typings to package dir (2)
|
|
run: cp -R front/dist/src/Api front/packages/iframe-api-typings/Api
|
|
|
|
- name: Install dependencies in package
|
|
run: yarn install
|
|
working-directory: "front/packages/iframe-api-typings"
|
|
|
|
- name: Publish package
|
|
run: yarn publish
|
|
working-directory: "front/packages/iframe-api-typings"
|
|
env:
|
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
if: ${{ github.event_name == 'release' }}
|