Skip to content

Commit

Permalink
ogma-cli: Demo job for CI. Refs #136.
Browse files Browse the repository at this point in the history
This commit adds a CI Job that checks that Ogma can generate a ROS
monitoring package, and the package compiles correctly using the
dockerfile generated with the ROS package.
  • Loading branch information
ivanperez-keera committed May 21, 2024
1 parent d6ccecc commit d4cff67
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 0 deletions.
54 changes: 54 additions & 0 deletions .github/workflows/repo-ghc-8.6-cabal-2.4-ros.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: ros-ghc-8.6-cabal-2.4

# Trigger the workflow on push or pull request
on:
- pull_request
- push

jobs:
cabal:
name: ${{ matrix.os }} / ghc ${{ matrix.ghc }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
cabal: ["2.4"]
ghc:
- "8.6"

steps:

- uses: haskell-actions/setup@main
id: setup-haskell-cabal
name: Setup Haskell
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: ${{ matrix.cabal }}

- name: Prepare environment
run: |
echo "$HOME/.ghcup/bin" >> $GITHUB_PATH
echo "$HOME/.cabal/bin" >> $GITHUB_PATH
- uses: actions/checkout@v4

- name: Create sandbox
run: |
echo "$PWD/.cabal-sandbox/bin" >> $GITHUB_PATH
cabal v1-sandbox init
- name: Install dependencies
run: |
cabal v1-install alex happy
- name: Install ogma
run: |
cabal v1-install copilot ogma-**/ --constraint="copilot >= 3.19.1"
- name: Generate ROS app
run: |
ogma ros --app-target-dir demo --variable-db ogma-cli/examples/ros-copilot/vars-db --variable-file ogma-cli/examples/ros-copilot/variables --handlers-file ogma-cli/examples/ros-copilot/handlers
cabal v1-exec -- runhaskell ogma-cli/examples/ros-copilot/ROS.hs
find demo/
cd demo/
docker build .
20 changes: 20 additions & 0 deletions ogma-cli/examples/ros-copilot/ROS.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import Copilot.Compile.C99
import Copilot.Language
import Language.Copilot (reify)
import Prelude hiding (not, (>=))

inputSignal :: Stream Int64
inputSignal = extern "input_signal" Nothing

propTestCopilot :: Stream Bool
propTestCopilot = inputSignal >= 5

spec :: Spec
spec = do
trigger "handlerTestCopilot" (not propTestCopilot) []

main :: IO ()
main = reify spec >>= compileWith settings "monitor"
where
settings = mkDefaultCSettings
{ cSettingsOutputDirectory = "demo/copilot/src/" }
1 change: 1 addition & 0 deletions ogma-cli/examples/ros-copilot/handlers
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
handlerTestCopilot
1 change: 1 addition & 0 deletions ogma-cli/examples/ros-copilot/variables
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
input_signal
1 change: 1 addition & 0 deletions ogma-cli/examples/ros-copilot/vars-db
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
("input_signal","int64_t","/demo/topic","int64_t")

0 comments on commit d4cff67

Please sign in to comment.