FROM alpine:3.11 WORKDIR /z ENV ver_asmcrypto=2821dd1dedd1196c378f5854037dda5c869313f3 \ ver_markdownit=10.0.0 \ ver_showdown=1.9.1 \ ver_marked=1.0.0 \ ver_ogvjs=1.6.1 # download RUN apk add make g++ git bash npm patch wget tar pigz brotli gzip unzip \ && wget https://github.com/brion/ogv.js/releases/download/$ver_ogvjs/ogvjs-$ver_ogvjs.zip -O ogvjs.zip \ && wget https://github.com/asmcrypto/asmcrypto.js/archive/$ver_asmcrypto.tar.gz -O asmcrypto.tgz \ && wget https://github.com/markedjs/marked/archive/v$ver_marked.tar.gz -O marked.tgz \ && unzip ogvjs.zip \ && (tar -xf asmcrypto.tgz \ && cd asmcrypto.js-$ver_asmcrypto \ && npm install ) \ && (tar -xf marked.tgz \ && cd marked-$ver_marked \ && npm install \ && npm i grunt uglify-js -g ) \ && mkdir /z/dist # uncomment if you wanna test the abandoned markdown converters #ENV build_abandoned=1 RUN [ $build_abandoned ] || exit 0; \ git clone --depth 1 --branch $ver_showdown https://github.com/showdownjs/showdown/ \ && wget https://github.com/markdown-it/markdown-it/archive/$ver_markdownit.tar.gz -O markdownit.tgz \ && (cd showdown \ && npm install \ && npm i grunt -g ) \ && (tar -xf markdownit.tgz \ && cd markdown-it-$ver_markdownit \ && npm install ) # build asmcrypto RUN cd asmcrypto.js-$ver_asmcrypto \ && echo "export { Sha512 } from './hash/sha512/sha512';" > src/entry-export_all.ts \ && node -r esm build.js \ && mv asmcrypto.all.es5.js /z/dist/sha512.js # build ogvjs RUN cd ogvjs-$ver_ogvjs \ && cp -pv \ ogv.js \ ogv-worker-audio.js \ ogv-demuxer-ogg.js \ ogv-demuxer-ogg-wasm.js \ ogv-demuxer-ogg-wasm.wasm \ ogv-demuxer-webm.js \ ogv-demuxer-webm-wasm.js \ ogv-demuxer-webm-wasm.wasm \ ogv-decoder-audio-opus.js \ ogv-decoder-audio-opus-wasm.js \ ogv-decoder-audio-opus-wasm.wasm \ ogv-decoder-audio-vorbis.js \ ogv-decoder-audio-vorbis-wasm.js \ ogv-decoder-audio-vorbis-wasm.wasm \ dynamicaudio.swf \ /z/dist # build marked COPY marked.patch /z/ RUN cd marked-$ver_marked \ && patch -p1 < /z/marked.patch \ && npm run build \ && cp -pv marked.min.js /z/dist/marked.js \ && cp -pv lib/marked.js /z/dist/marked.full.js # && npm run test \ # build showdown (abandoned; disabled by default) COPY showdown.patch /z/ RUN [ $build_abandoned ] || exit 0; \ cd showdown \ && rm -rf bin dist \ # # remove ellipsis plugin \ && rm \ src/subParsers/ellipsis.js \ test/cases/ellipsis* \ # # remove html-to-md converter \ && rm \ test/node/testsuite.makemd.js \ test/node/showdown.Converter.makeMarkdown.js \ # # remove emojis \ && rm src/subParsers/emoji.js \ && awk '/^showdown.helper.emojis/ {o=1} !o; /^\}/ {o=0}' \ >f marked.patch; make && printf '%d ' $(wc -c <$f) $(gzip -d <$f | wc -c); echo