diff --git a/.bundle/config b/.bundle/config new file mode 100644 index 0000000..2369228 --- /dev/null +++ b/.bundle/config @@ -0,0 +1,2 @@ +--- +BUNDLE_PATH: "vendor/bundle" diff --git a/.github/workflows/build-rfc.yml b/.github/workflows/build-rfc.yml index 0d5c841..03ea7ff 100644 --- a/.github/workflows/build-rfc.yml +++ b/.github/workflows/build-rfc.yml @@ -15,23 +15,37 @@ jobs: - uses: actions/checkout@v4 - uses: actions/cache@v4 with: - path: | - $HOME/.local/share/gem - .refcache - key: webdav-push.mkd - - - name: Install packages - run: > - sudo apt-get install --no-install-recommends -y golang-go && - sudo gem install kramdown-rfc && - sudo pip3 install svgcheck xml2rfc --break-system-packages && - go install github.com/blampe/goat/cmd/goat@latest && echo ~/go/bin >> $GITHUB_PATH + path: .refcache + key: kramdown-refcache + + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: '3.x' + cache: 'pip' + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + ruby-version: '4.0' + + - name: Set up Node.js + uses: actions/setup-node@v6 + with: + node-version: 'latest' + cache: 'npm' + + - name: Install dependencies + run: | + pip install -r requirements.txt + npm ci && echo "$GITHUB_WORKSPACE/node_modules/.bin" >> "$GITHUB_PATH" - name: Prepare output directory run: mkdir build - name: Kramdown to XML - run: kramdown-rfc2629 webdav-push.mkd >build/draft-bitfire-webdav-push-00.xml + run: bundle exec kramdown-rfc2629 webdav-push.mkd >build/draft-bitfire-webdav-push-00.xml - name: XML to HTML run: (cd build; xml2rfc --html draft-bitfire-webdav-push-00.xml) diff --git a/.gitignore b/.gitignore index 46e8f5c..5a9cb16 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,15 @@ .idea/ .obsidian/ .refcache/ + build/ + +# Node.js +node_modules/ + +# Python +.venv/ + +# Ruby +vendor/bundle/ +Gemfile.lock diff --git a/.local/bin/goat b/.local/bin/goat new file mode 100755 index 0000000..184c605 Binary files /dev/null and b/.local/bin/goat differ diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..7e40018 --- /dev/null +++ b/Gemfile @@ -0,0 +1,2 @@ +source "https://rubygems.org" +gem "kramdown-rfc" diff --git a/build.sh b/build.sh index 6a89ae3..c5cefb6 100755 --- a/build.sh +++ b/build.sh @@ -1,6 +1,9 @@ #!/bin/sh + +export KRAMDOWN_DONT_VERIFY_HTTPS=1 + mkdir -p build -kramdown-rfc2629 -3 webdav-push.mkd >build/webdav-push.xml && (cd build; xml2rfc --html webdav-push.xml && xml2rfc --text webdav-push.xml) +bundle exec kramdown-rfc2629 -3 webdav-push.mkd >build/webdav-push.xml && (cd build; xml2rfc --html webdav-push.xml && xml2rfc --text webdav-push.xml) echo To view in a browser, run: xdg-open build/webdav-push.html diff --git a/content.mkd b/content.mkd index 7ac3191..828f05b 100644 --- a/content.mkd +++ b/content.mkd @@ -23,7 +23,7 @@ Typical use cases: ## Overview -~~~goat +~~~aasvg .--------------------. .--------------. .--------------------. | WebDAV-Push Server | | Push Service | | WebDAV-Push Client | '--------------------' '--------------' '--------------------' @@ -468,7 +468,7 @@ Message encryption ({{message-encryption}}) MUST be used. VAPID(((VAPID))) ({{va A server that supports the Web Push transport MUST list the `web-push` element(((web-push XML element))) in the `transports` property. -~~~goat +~~~aasvg .--------------------. .--------------. .--------------------. | | | Web Push | | | | WebDAV-Push Server | | Service | | WebDAV-Push Client | diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b3aabd2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,24 @@ +{ + "name": "webdav-push", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "aasvg": "^0.4.3" + } + }, + "node_modules/aasvg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/aasvg/-/aasvg-0.4.3.tgz", + "integrity": "sha512-n9I0JklitjU1xVtzQuaHJyUJpI38Q+xbxfeHr//eDHvqCVTOOs3tKN+bqeAfde5owZC/BIrBAg8yKaiB8lkJwA==", + "license": "BSD", + "bin": { + "aasvg": "main.js" + }, + "engines": { + "node": ">=10" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ca666cb --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "aasvg": "^0.4.3" + } +} diff --git a/prepare.sh b/prepare.sh new file mode 100755 index 0000000..4b4d3d3 --- /dev/null +++ b/prepare.sh @@ -0,0 +1,25 @@ +#!/bin/sh +set -e + +# This script installs all build dependencies locally: +# - Python dependencies in .venv/ +# - Ruby gems in vendor/bundle/ +# - Node.js dependencies in node_modules/ +# After running this, you can run build.sh + +# Python dependencies via venv +python3 -m venv .venv +. .venv/bin/activate +pip install -r requirements.txt +deactivate + +# Ruby dependencies via bundler (local install) +bundle config set path 'vendor/bundle' +bundle install + +# Node.js dependencies (aasvg) +npm install + +echo "Dependencies installed successfully." +echo "To use them, prepend to PATH before running build.sh:" +echo " PATH=\"$(pwd)/.venv/bin:$(pwd)/vendor/bundle/bin:$(pwd)/node_modules/.bin:\"$PATH ./build.sh" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e662659 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +svgcheck +xml2rfc diff --git a/webdav-push.mkd b/webdav-push.mkd index 2555d57..0b87a86 100644 --- a/webdav-push.mkd +++ b/webdav-push.mkd @@ -7,8 +7,9 @@ category: exp submissionType: independent ipr: none workgroup: Independent submission -keyword: WebDAV -keyword: push +keyword: + - WebDAV + - push stand_alone: yes pi: [toc, sortrefs, symrefs]