Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 770ee003e7 | |||
| a5675b1442 | |||
| a927ccc732 | |||
| 817c338745 | |||
| af3c82518c | |||
| 9511db8ee9 | |||
| fc92331238 | |||
| a4e6386fd1 |
@@ -78,17 +78,24 @@ jobs:
|
|||||||
ZIP_ROOT="/tmp/go_upload"
|
ZIP_ROOT="/tmp/go_upload"
|
||||||
FULL_PATH="$ZIP_ROOT/$MOD_NAME@$VERSION"
|
FULL_PATH="$ZIP_ROOT/$MOD_NAME@$VERSION"
|
||||||
|
|
||||||
|
# 1. Prepare
|
||||||
cd gen/go
|
cd gen/go
|
||||||
go mod init $MOD_NAME
|
|
||||||
go mod tidy
|
# 2. Initialize the module
|
||||||
|
go mod init "$MOD_NAME"
|
||||||
|
|
||||||
|
# 3. Create the structure
|
||||||
mkdir -p "$FULL_PATH"
|
mkdir -p "$FULL_PATH"
|
||||||
cp -r . "$FULL_PATH/"
|
|
||||||
|
# 4. Copy the CONTENTS of models to the root of the module
|
||||||
pushd "$ZIP_ROOT"
|
# This flattens the structure so the .go files are next to go.mod
|
||||||
zip -r "$GITHUB_WORKSPACE/module.zip" .
|
cp -r models/* "$FULL_PATH/"
|
||||||
popd
|
cp go.mod "$FULL_PATH/"
|
||||||
|
|
||||||
|
# 5. Zip and Upload
|
||||||
|
cd "$ZIP_ROOT"
|
||||||
|
zip -r -D "$GITHUB_WORKSPACE/module.zip" .
|
||||||
|
|
||||||
curl -f --user "owlbot:${{ secrets.PACKAGE_PUSH }}" \
|
curl -f --user "owlbot:${{ secrets.PACKAGE_PUSH }}" \
|
||||||
--upload-file "$GITHUB_WORKSPACE/module.zip" \
|
--upload-file "$GITHUB_WORKSPACE/module.zip" \
|
||||||
"${{ github.server_url }}/api/packages/owlboard/go/upload?version=$VERSION"
|
"${{ github.server_url }}/api/packages/owlboard/go/upload?version=$VERSION"
|
||||||
32
schemas/data-ingress/message-envelope.json
Normal file
32
schemas/data-ingress/message-envelope.json
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"$id": "https://schema.owlboard.info/data-ingress/message-envelope.schema.json",
|
||||||
|
"$schema": "https://json-schema.org/draft-07/schema#",
|
||||||
|
"title": "MessageEnvelope",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"service_name": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Name of the service submitting the update"
|
||||||
|
},
|
||||||
|
"service_id": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "ID of the service sending the message - usually a hostname"
|
||||||
|
},
|
||||||
|
"data_type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["file"],
|
||||||
|
"description": "The type of data contained in this message object"
|
||||||
|
},
|
||||||
|
"sent_timestamp": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Unix timestamp representing the time the message was sent"
|
||||||
|
},
|
||||||
|
"data_kind": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["pis", "timetable", "knowledgebase"],
|
||||||
|
"description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": ["service_name", "service_id", "data_type", "sent_timestamp"],
|
||||||
|
"additionalProperties": true
|
||||||
|
}
|
||||||
@@ -8,23 +8,27 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Name of the service submitting the update"
|
"description": "Name of the service submitting the update"
|
||||||
},
|
},
|
||||||
"update_type": {
|
"service_id": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "ID of the service sending the message - usually a hostname"
|
||||||
|
},
|
||||||
|
"data_type": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": ["file"],
|
"enum": ["file"],
|
||||||
"description": "The method of update application"
|
"description": "The type of data contained in this message object"
|
||||||
},
|
},
|
||||||
"sent_timestamp": {
|
"sent_timestamp": {
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"description": "Unix timestamp representing the time the message was sent"
|
"description": "Unix timestamp representing the time the message was sent"
|
||||||
},
|
},
|
||||||
|
"data_kind": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["pis", "timetable", "knowledgebase"],
|
||||||
|
"description": "The data type contained in the file. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
|
||||||
|
},
|
||||||
"payload": {
|
"payload": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"kind": {
|
|
||||||
"type": "string",
|
|
||||||
"enum": ["pis"],
|
|
||||||
"description": "The type of data provided in the update"
|
|
||||||
},
|
|
||||||
"version": {
|
"version": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "The version string from the package source"
|
"description": "The version string from the package source"
|
||||||
@@ -34,9 +38,10 @@
|
|||||||
"description": "The full path to the file, including protocol (eg. s3://) where appropriate"
|
"description": "The full path to the file, including protocol (eg. s3://) where appropriate"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["kind", "version", "filepath"]
|
"required": ["version", "filepath"],
|
||||||
|
"additionalProperties": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["service_name", "update_type", "payload"],
|
"required": ["service_name", "service_id", "data_type", "sent_timestamp", "data_kind", "payload"],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
}
|
}
|
||||||
@@ -18,7 +18,7 @@ for file in $FILES; do
|
|||||||
npx --yes json-schema-to-typescript "$file" > "gen/ts/${clean_name}.ts"
|
npx --yes json-schema-to-typescript "$file" > "gen/ts/${clean_name}.ts"
|
||||||
|
|
||||||
# Generate Go
|
# Generate Go
|
||||||
go-jsonschema -p models "$file" > "gen/go/models/${clean_name}.go"
|
go-jsonschema -p contracts "$file" > "gen/go/models/${clean_name}.go"
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "✅ Generated single TS package in gen/ts"
|
echo "✅ Generated single TS package in gen/ts"
|
||||||
|
|||||||
Reference in New Issue
Block a user