From 8e8d96fbb4e9a84dd5d08c2196b429af28fab2b3 Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Wed, 9 Oct 2024 19:10:08 -0500 Subject: [PATCH] add readosc tool --- .github/workflows/check-readosc-build.yml | 25 +++++++++++++++++ .github/workflows/publish-readosc.yml | 24 +++++++++++++++++ apps/makeosc/package.json | 2 +- apps/readosc/.gitignore | 1 + apps/readosc/README.md | 20 ++++++++++++++ apps/readosc/package.json | 33 +++++++++++++++++++++++ apps/readosc/src/main.js | 20 ++++++++++++++ package-lock.json | 22 ++++++++++++++- 8 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/check-readosc-build.yml create mode 100644 .github/workflows/publish-readosc.yml create mode 100644 apps/readosc/.gitignore create mode 100644 apps/readosc/README.md create mode 100644 apps/readosc/package.json create mode 100755 apps/readosc/src/main.js diff --git a/.github/workflows/check-readosc-build.yml b/.github/workflows/check-readosc-build.yml new file mode 100644 index 0000000..811fba2 --- /dev/null +++ b/.github/workflows/check-readosc-build.yml @@ -0,0 +1,25 @@ +name: Check readosc builds +on: + pull_request: + branches: + - main + paths: + - 'apps/readosc/**' +jobs: + build-webui: + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + + - name: Set up Node.js + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + with: + node-version-file: '.nvmrc' + cache: 'npm' + cache-dependency-path: 'package-lock.json' + + - name: Install Node.js dependencies + run: npm ci --workspace readosc + + - run: npm run build --workspace readosc diff --git a/.github/workflows/publish-readosc.yml b/.github/workflows/publish-readosc.yml new file mode 100644 index 0000000..eddfce4 --- /dev/null +++ b/.github/workflows/publish-readosc.yml @@ -0,0 +1,24 @@ +name: Publish makeosc to npmjs +on: + push: + tags: + - 'makeosc/*' +jobs: + publish: + permissions: + id-token: write + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 + with: + node-version-file: '.nvmrc' + registry-url: 'https://registry.npmjs.org' + cache: 'npm' + cache-dependency-path: './package-lock.json' + - name: Install Node.js dependencies + run: npm ci --workspace=makeosc + - name: Publish to NPM + run: npm publish --provenance --access=public --workspace=makeosc + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/apps/makeosc/package.json b/apps/makeosc/package.json index 2a3e231..2dc4816 100644 --- a/apps/makeosc/package.json +++ b/apps/makeosc/package.json @@ -1,6 +1,6 @@ { "name": "makeosc", - "version": "0.0.1", + "version": "0.1.0", "description": "Simple NodeJS utility for generating osc buffers", "main": "dist/main.js", "bin": { diff --git a/apps/readosc/.gitignore b/apps/readosc/.gitignore new file mode 100644 index 0000000..53c37a1 --- /dev/null +++ b/apps/readosc/.gitignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/apps/readosc/README.md b/apps/readosc/README.md new file mode 100644 index 0000000..9467637 --- /dev/null +++ b/apps/readosc/README.md @@ -0,0 +1,20 @@ +![npm](https://img.shields.io/npm/v/readosc) + +# readosc + +Simple NodeJS script for parsing OSC bytes from stdin. + +## Usage + +``` +Usage: readosc [options] + +simple util to read osc packets from stdin + +Options: + -V, --version output the version number + -h, --help display help for command +``` + +- using npx `npx readosc@latest` +- install using `npm install -g readosc@latest` and run `readosc` diff --git a/apps/readosc/package.json b/apps/readosc/package.json new file mode 100644 index 0000000..a666884 --- /dev/null +++ b/apps/readosc/package.json @@ -0,0 +1,33 @@ +{ + "name": "readosc", + "version": "0.1.0", + "description": "Simple NodeJS utility for parsing osc buffers from stdin", + "main": "dist/main.js", + "bin": { + "readosc": "dist/main.js" + }, + "scripts": { + "prebuild": "rimraf dist", + "build": "esbuild src/main.js --bundle --platform=node --outfile=dist/main.js", + "prepack": "npm run build" + }, + "author": { + "name": "Joel Wetzell", + "email": "me@jwetzell.com", + "url": "https://jwetzell.com" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jwetzell/osc-js.git" + }, + "license": "MIT", + "dependencies": { + "@jwetzell/osc": "0.2.2", + "commander": "^11.0.0", + "slip": "^1.0.2" + }, + "devDependencies": { + "esbuild": "0.24.0", + "rimraf": "6.0.1" + } +} diff --git a/apps/readosc/src/main.js b/apps/readosc/src/main.js new file mode 100755 index 0000000..7e3643f --- /dev/null +++ b/apps/readosc/src/main.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const { program } = require('commander'); +const osc = require('@jwetzell/osc'); +const packageInfo = require('../package.json'); + +program.name(packageInfo.name); +program.version(packageInfo.version); +program.description('simple util to read osc packets from stdin'); +program.action(() => { + process.stdin.on('data', (data) => { + try { + const message = osc.messageFromBuffer(data); + console.log(JSON.stringify(message)); + } catch (error) { + console.error({ error: error.toString() }); + } + }); +}); +program.parse(); diff --git a/package-lock.json b/package-lock.json index 11a775d..05c1bd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ } }, "apps/makeosc": { - "version": "0.0.1", + "version": "0.1.0", "license": "MIT", "dependencies": { "@jwetzell/osc": "0.2.2", @@ -34,6 +34,22 @@ "rimraf": "6.0.1" } }, + "apps/readosc": { + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@jwetzell/osc": "0.2.2", + "commander": "^11.0.0", + "slip": "^1.0.2" + }, + "bin": { + "readosc": "dist/main.js" + }, + "devDependencies": { + "esbuild": "0.24.0", + "rimraf": "6.0.1" + } + }, "apps/sendosc": { "version": "1.0.1", "license": "MIT", @@ -2843,6 +2859,10 @@ "license": "MIT", "peer": true }, + "node_modules/readosc": { + "resolved": "apps/readosc", + "link": true + }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", "dev": true,