metanorma-cli 1.2.13.1 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/05-020r26.rxl +75 -0
- data/05-020r26.xml.zip +0 -0
- data/Gemfile.lock +336 -0
- data/README.adoc +31 -0
- data/a +3 -0
- data/a.json +33 -0
- data/a.rb +13 -0
- data/a.rxl +45 -0
- data/b +85 -0
- data/csd-tofix 2.zip +0 -0
- data/csd-tofix.zip +0 -0
- data/exe/metanorma.old +178 -0
- data/extract/sourcecode/sourcecode-0000.txt +5 -0
- data/files.zip +0 -0
- data/lib/metanorma/cli.rb +3 -16
- data/lib/metanorma/cli/command.rb +35 -7
- data/lib/metanorma/cli/compiler.rb +6 -1
- data/lib/metanorma/cli/setup.rb +26 -12
- data/lib/metanorma/cli/version.rb +1 -1
- data/metanorma-cli.gemspec +20 -19
- data/relaton/cache/version +1 -0
- data/rice.rxl +51 -0
- data/sourcecode/0 +5 -0
- data/test.rxl +52 -0
- data/tmp/my-custom-csd/Gemfile +4 -0
- data/tmp/my-custom-csd/Makefile +144 -0
- data/tmp/my-custom-csd/Makefile.win +116 -0
- data/tmp/my-custom-csd/appveyor.yml +29 -0
- data/tmp/my-custom-csd/metanorma.yml +4 -0
- data/tmp/my-document/Gemfile +4 -0
- data/tmp/my-document/Makefile +144 -0
- data/tmp/my-document/Makefile.win +116 -0
- data/tmp/my-document/appveyor.yml +29 -0
- data/tmp/my-document/metanorma.yml +4 -0
- data/tmp/my-local-document/Gemfile +4 -0
- data/tmp/my-local-document/Makefile +144 -0
- data/tmp/my-local-document/Makefile.win +116 -0
- data/tmp/my-local-document/appveyor.yml +29 -0
- data/tmp/my-local-document/metanorma.yml +4 -0
- metadata +88 -41
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            version: '{build}'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            environment:
         | 
| 4 | 
            +
              matrix:
         | 
| 5 | 
            +
                - RUBY_VERSION: 25
         | 
| 6 | 
            +
                - RUBY_VERSION: 24
         | 
| 7 | 
            +
                - RUBY_VERSION: _trunk
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            matrix:
         | 
| 10 | 
            +
              allow_failures:
         | 
| 11 | 
            +
                - RUBY_VERSION: _trunk
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            install:
         | 
| 14 | 
            +
              - ps: . { iwr -useb https://raw.githubusercontent.com/metanorma/metanorma-build-scripts/master/appveyor.ps1 } | iex
         | 
| 15 | 
            +
              - refreshenv
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            build_script:
         | 
| 18 | 
            +
              - set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
         | 
| 19 | 
            +
              - bundle update
         | 
| 20 | 
            +
              - bundle install
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            before_test:
         | 
| 23 | 
            +
              - ruby -v
         | 
| 24 | 
            +
              - gem -v
         | 
| 25 | 
            +
              - bundle -v
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            test_script:
         | 
| 28 | 
            +
              - plantuml -testdot
         | 
| 29 | 
            +
              - make -f Makefile.win clean all publish SHELL=cmd
         | 
| @@ -0,0 +1,144 @@ | |
| 1 | 
            +
            #!make
         | 
| 2 | 
            +
            SHELL := /bin/bash
         | 
| 3 | 
            +
            # Ensure the xml2rfc cache directory exists locally
         | 
| 4 | 
            +
            IGNORE := $(shell mkdir -p $(HOME)/.cache/xml2rfc)
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            SRC := $(shell yq r metanorma.yml metanorma.source.files | cut -c 3-999)
         | 
| 7 | 
            +
            ifeq ($(SRC),ll)
         | 
| 8 | 
            +
            SRC := $(filter-out README.adoc, $(wildcard *.adoc))
         | 
| 9 | 
            +
            endif
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            FORMAT_MARKER := mn-output-
         | 
| 12 | 
            +
            FORMATS := $(shell grep "$(FORMAT_MARKER)" $(SRC) | cut -f 2 -d ' ' | tr ',' '\n' | sort | uniq | tr '\n' ' ')
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            XML  := $(patsubst %.adoc,%.xml,$(SRC))
         | 
| 15 | 
            +
            XMLRFC3  := $(patsubst %.adoc,%.v3.xml,$(SRC))
         | 
| 16 | 
            +
            HTML := $(patsubst %.adoc,%.html,$(SRC))
         | 
| 17 | 
            +
            DOC  := $(patsubst %.adoc,%.doc,$(SRC))
         | 
| 18 | 
            +
            PDF  := $(patsubst %.adoc,%.pdf,$(SRC))
         | 
| 19 | 
            +
            TXT  := $(patsubst %.adoc,%.txt,$(SRC))
         | 
| 20 | 
            +
            NITS := $(patsubst %.adoc,%.nits,$(wildcard draft-*.adoc))
         | 
| 21 | 
            +
            WSD  := $(wildcard models/*.wsd)
         | 
| 22 | 
            +
            XMI	 := $(patsubst models/%,xmi/%,$(patsubst %.wsd,%.xmi,$(WSD)))
         | 
| 23 | 
            +
            PNG	 := $(patsubst models/%,images/%,$(patsubst %.wsd,%.png,$(WSD)))
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            COMPILE_CMD_LOCAL := bundle exec metanorma $$FILENAME
         | 
| 26 | 
            +
            COMPILE_CMD_DOCKER := docker run -v "$$(pwd)":/metanorma/ ribose/metanorma "metanorma $$FILENAME"
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            ifdef METANORMA_DOCKER
         | 
| 29 | 
            +
              COMPILE_CMD := echo "Compiling via docker..."; $(COMPILE_CMD_DOCKER)
         | 
| 30 | 
            +
            else
         | 
| 31 | 
            +
              COMPILE_CMD := echo "Compiling locally..."; $(COMPILE_CMD_LOCAL)
         | 
| 32 | 
            +
            endif
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            _OUT_FILES := $(foreach FORMAT,$(FORMATS),$(shell echo $(FORMAT) | tr '[:lower:]' '[:upper:]'))
         | 
| 35 | 
            +
            OUT_FILES  := $(foreach F,$(_OUT_FILES),$($F))
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            all: images $(OUT_FILES)
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            %.v3.xml %.xml %.html %.doc %.pdf %.txt:	%.adoc | bundle
         | 
| 40 | 
            +
            	FILENAME=$^; \
         | 
| 41 | 
            +
            	${COMPILE_CMD}
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            draft-%.nits:	draft-%.txt
         | 
| 44 | 
            +
            	VERSIONED_NAME=`grep :name: draft-$*.adoc | cut -f 2 -d ' '`; \
         | 
| 45 | 
            +
            	cp $^ $${VERSIONED_NAME}.txt && \
         | 
| 46 | 
            +
            	idnits --verbose $${VERSIONED_NAME}.txt > $@ && \
         | 
| 47 | 
            +
            	cp $@ $${VERSIONED_NAME}.nits && \
         | 
| 48 | 
            +
            	cat $${VERSIONED_NAME}.nits
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            %.nits:
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            nits: $(NITS)
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            images: $(PNG)
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            images/%.png: models/%.wsd
         | 
| 57 | 
            +
            	plantuml -tpng -o ../images/ $<
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            xmi: $(XMI)
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            xmi/%.xmi: models/%.wsd
         | 
| 62 | 
            +
            	plantuml -xmi:star -o ../xmi/ $<
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            define FORMAT_TASKS
         | 
| 65 | 
            +
            OUT_FILES-$(FORMAT) := $($(shell echo $(FORMAT) | tr '[:lower:]' '[:upper:]'))
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            open-$(FORMAT):
         | 
| 68 | 
            +
            	open $$(OUT_FILES-$(FORMAT))
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            clean-$(FORMAT):
         | 
| 71 | 
            +
            	rm -f $$(OUT_FILES-$(FORMAT))
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            $(FORMAT): clean-$(FORMAT) $$(OUT_FILES-$(FORMAT))
         | 
| 74 | 
            +
             | 
| 75 | 
            +
            .PHONY: clean-$(FORMAT)
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            endef
         | 
| 78 | 
            +
             | 
| 79 | 
            +
            $(foreach FORMAT,$(FORMATS),$(eval $(FORMAT_TASKS)))
         | 
| 80 | 
            +
             | 
| 81 | 
            +
            open: open-html
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            clean:
         | 
| 84 | 
            +
            	rm -f $(OUT_FILES) && rm -rf published
         | 
| 85 | 
            +
             | 
| 86 | 
            +
            bundle:
         | 
| 87 | 
            +
            	if [ "x" == "${METANORMA_DOCKER}x" ]; then bundle; fi
         | 
| 88 | 
            +
             | 
| 89 | 
            +
            .PHONY: bundle all open clean
         | 
| 90 | 
            +
             | 
| 91 | 
            +
            #
         | 
| 92 | 
            +
            # Watch-related jobs
         | 
| 93 | 
            +
            #
         | 
| 94 | 
            +
             | 
| 95 | 
            +
            .PHONY: watch serve watch-serve
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            NODE_BINS          := onchange live-serve run-p
         | 
| 98 | 
            +
            NODE_BIN_DIR       := node_modules/.bin
         | 
| 99 | 
            +
            NODE_PACKAGE_PATHS := $(foreach PACKAGE_NAME,$(NODE_BINS),$(NODE_BIN_DIR)/$(PACKAGE_NAME))
         | 
| 100 | 
            +
             | 
| 101 | 
            +
            $(NODE_PACKAGE_PATHS): package.json
         | 
| 102 | 
            +
            	npm i
         | 
| 103 | 
            +
             | 
| 104 | 
            +
            watch: $(NODE_BIN_DIR)/onchange
         | 
| 105 | 
            +
            	$(MAKE) all
         | 
| 106 | 
            +
            	$< $(ALL_SRC) -- $(MAKE) all
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            define WATCH_TASKS
         | 
| 109 | 
            +
            watch-$(FORMAT): $(NODE_BIN_DIR)/onchange
         | 
| 110 | 
            +
            	$(MAKE) $(FORMAT)
         | 
| 111 | 
            +
            	$$< $$(SRC_$(FORMAT)) -- $(MAKE) $(FORMAT)
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            .PHONY: watch-$(FORMAT)
         | 
| 114 | 
            +
            endef
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            $(foreach FORMAT,$(FORMATS),$(eval $(WATCH_TASKS)))
         | 
| 117 | 
            +
             | 
| 118 | 
            +
            serve: $(NODE_BIN_DIR)/live-server revealjs-css reveal.js images
         | 
| 119 | 
            +
            	export PORT=$${PORT:-8123} ; \
         | 
| 120 | 
            +
            	port=$${PORT} ; \
         | 
| 121 | 
            +
            	for html in $(HTML); do \
         | 
| 122 | 
            +
            		$< --entry-file=$$html --port=$${port} --ignore="*.html,*.xml,Makefile,Gemfile.*,package.*.json" --wait=1000 & \
         | 
| 123 | 
            +
            		port=$$(( port++ )) ;\
         | 
| 124 | 
            +
            	done
         | 
| 125 | 
            +
             | 
| 126 | 
            +
            watch-serve: $(NODE_BIN_DIR)/run-p
         | 
| 127 | 
            +
            	$< watch serve
         | 
| 128 | 
            +
             | 
| 129 | 
            +
            #
         | 
| 130 | 
            +
            # Deploy jobs
         | 
| 131 | 
            +
            #
         | 
| 132 | 
            +
             | 
| 133 | 
            +
            publish:
         | 
| 134 | 
            +
            	$(MAKE) published
         | 
| 135 | 
            +
             | 
| 136 | 
            +
            published:
         | 
| 137 | 
            +
            	mkdir -p $@ && \
         | 
| 138 | 
            +
            	export GLOBIGNORE=$(SRC); \
         | 
| 139 | 
            +
            	cp -a $(addsuffix .*,$(basename $(SRC))) $@/; \
         | 
| 140 | 
            +
            	unset GLOBIGNORE; \
         | 
| 141 | 
            +
            	cp $(firstword $(HTML)) $@/index.html
         | 
| 142 | 
            +
             | 
| 143 | 
            +
            .PHONY: publish
         | 
| 144 | 
            +
             | 
| @@ -0,0 +1,116 @@ | |
| 1 | 
            +
            #!make
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            FORMAT_MARKER := mn-output-
         | 
| 4 | 
            +
            FORMATS := $(shell grep "$(FORMAT_MARKER)" *.adoc | cut -f 2 -d ' ' | tr ',' '\n' | sort | uniq | tr '\n' ' ')
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            SRC  := $(filter-out README.adoc, $(wildcard *.adoc))
         | 
| 7 | 
            +
            XML  := $(patsubst %.adoc,%.xml,$(SRC))
         | 
| 8 | 
            +
            HTML := $(patsubst %.adoc,%.html,$(SRC))
         | 
| 9 | 
            +
            DOC  := $(patsubst %.adoc,%.doc,$(SRC))
         | 
| 10 | 
            +
            PDF  := $(patsubst %.adoc,%.pdf,$(SRC))
         | 
| 11 | 
            +
            WSD  := $(wildcard models/*.wsd)
         | 
| 12 | 
            +
            XMI	 := $(patsubst models/%,xmi/%,$(patsubst %.wsd,%.xmi,$(WSD)))
         | 
| 13 | 
            +
            PNG	 := $(patsubst models/%,images/%,$(patsubst %.wsd,%.png,$(WSD)))
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            HOST_SHARE_DIR=$(USERPROFILE)\$(shell for %%I in (.) do echo %%~nxI)
         | 
| 16 | 
            +
            COMPILE_CMD_LOCAL := bundle exec metanorma $(SRC)
         | 
| 17 | 
            +
            COMPILE_CMD_DOCKER := docker run --rm -it -v $(CURDIR):/metanorma/ ribose/metanorma "metanorma $(SRC)"
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            ifdef METANORMA_DOCKER
         | 
| 20 | 
            +
              COMPILE_CMD := echo "Compiling via docker..." & $(COMPILE_CMD_DOCKER)
         | 
| 21 | 
            +
            else
         | 
| 22 | 
            +
              COMPILE_CMD := echo "Compiling locally..." & $(COMPILE_CMD_LOCAL)
         | 
| 23 | 
            +
            endif
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            _OUT_FILES := $(foreach FORMAT,$(FORMATS),$(shell echo $(FORMAT) | tr '[:lower:]' '[:upper:]'))
         | 
| 26 | 
            +
            OUT_FILES  := $(foreach F,$(_OUT_FILES),$($F))
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            all: $(OUT_FILES)
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            %.xml %.html %.doc %.pdf:	%.adoc | bundle
         | 
| 31 | 
            +
            	${COMPILE_CMD}
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            images: $(PNG)
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            images/%.png: models/%.wsd
         | 
| 36 | 
            +
            	plantuml -tpng -o ../images/ $<
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            xmi: $(XMI)
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            xmi/%.xmi: models/%.wsd
         | 
| 41 | 
            +
            	plantuml -xmi:star -o ../xmi/ $<
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            define FORMAT_TASKS
         | 
| 44 | 
            +
            OUT_FILES-$(FORMAT) := $($(shell echo $(FORMAT) | tr '[:lower:]' '[:upper:]'))
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            open-$(FORMAT):
         | 
| 47 | 
            +
            	$$(OUT_FILES-$(FORMAT))
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            clean-$(FORMAT):
         | 
| 50 | 
            +
            	rm $$(OUT_FILES-$(FORMAT))
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            $(FORMAT): clean-$(FORMAT) $$(OUT_FILES-$(FORMAT))
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            .PHONY: clean-$(FORMAT)
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            endef
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            $(foreach FORMAT,$(FORMATS),$(eval $(FORMAT_TASKS)))
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            open: open-html
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            clean:
         | 
| 63 | 
            +
            	rm -rf $(OUT_FILES)
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            bundle:
         | 
| 66 | 
            +
            	IF "" == "${METANORMA_DOCKER}" bundle
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            .PHONY: bundle all open clean
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            #
         | 
| 71 | 
            +
            # Watch-related jobs
         | 
| 72 | 
            +
            #
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            .PHONY: watch serve watch-serve
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            NODE_BINS          := onchange live-serve run-p
         | 
| 77 | 
            +
            NODE_BIN_DIR       := node_modules/.bin
         | 
| 78 | 
            +
            NODE_PACKAGE_PATHS := $(foreach PACKAGE_NAME,$(NODE_BINS),$(NODE_BIN_DIR)/$(PACKAGE_NAME))
         | 
| 79 | 
            +
             | 
| 80 | 
            +
            $(NODE_PACKAGE_PATHS): package.json
         | 
| 81 | 
            +
            	npm i
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            watch: $(NODE_BIN_DIR)/onchange
         | 
| 84 | 
            +
            	make all
         | 
| 85 | 
            +
            	$< $(ALL_SRC) -- make all
         | 
| 86 | 
            +
             | 
| 87 | 
            +
            define WATCH_TASKS
         | 
| 88 | 
            +
            watch-$(FORMAT): $(NODE_BIN_DIR)/onchange
         | 
| 89 | 
            +
            	make $(FORMAT)
         | 
| 90 | 
            +
            	$$< $$(SRC_$(FORMAT)) -- make $(FORMAT)
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            .PHONY: watch-$(FORMAT)
         | 
| 93 | 
            +
            endef
         | 
| 94 | 
            +
             | 
| 95 | 
            +
            $(foreach FORMAT,$(FORMATS),$(eval $(WATCH_TASKS)))
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            serve: $(NODE_BIN_DIR)/live-server revealjs-css reveal.js images
         | 
| 98 | 
            +
            	set PORT=$${PORT:-8123} & \
         | 
| 99 | 
            +
            	set port=$${PORT} & \
         | 
| 100 | 
            +
            	for /r %%html in $(HTML) do ( \
         | 
| 101 | 
            +
            		$< --entry-file=%%html --port=%port% --ignore="*.html,*.xml,Makefile,Gemfile.*,package.*.json" --wait=1000 & \
         | 
| 102 | 
            +
            		set /A port=%port%+1 \
         | 
| 103 | 
            +
            	)
         | 
| 104 | 
            +
             | 
| 105 | 
            +
            watch-serve: $(NODE_BIN_DIR)/run-p
         | 
| 106 | 
            +
            	$< watch serve
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            #
         | 
| 109 | 
            +
            # Deploy jobs
         | 
| 110 | 
            +
            #
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            publish:
         | 
| 113 | 
            +
            	mkdir -p published
         | 
| 114 | 
            +
            	xcopy $(basename $(SRC)).* published
         | 
| 115 | 
            +
            	copy $(firstword $(HTML)) published\index.html
         | 
| 116 | 
            +
            	IF EXIST "images" xcopy /E images published
         | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            version: '{build}'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            environment:
         | 
| 4 | 
            +
              matrix:
         | 
| 5 | 
            +
                - RUBY_VERSION: 25
         | 
| 6 | 
            +
                - RUBY_VERSION: 24
         | 
| 7 | 
            +
                - RUBY_VERSION: _trunk
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            matrix:
         | 
| 10 | 
            +
              allow_failures:
         | 
| 11 | 
            +
                - RUBY_VERSION: _trunk
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            install:
         | 
| 14 | 
            +
              - ps: . { iwr -useb https://raw.githubusercontent.com/metanorma/metanorma-build-scripts/master/appveyor.ps1 } | iex
         | 
| 15 | 
            +
              - refreshenv
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            build_script:
         | 
| 18 | 
            +
              - set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
         | 
| 19 | 
            +
              - bundle update
         | 
| 20 | 
            +
              - bundle install
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            before_test:
         | 
| 23 | 
            +
              - ruby -v
         | 
| 24 | 
            +
              - gem -v
         | 
| 25 | 
            +
              - bundle -v
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            test_script:
         | 
| 28 | 
            +
              - plantuml -testdot
         | 
| 29 | 
            +
              - make -f Makefile.win clean all publish SHELL=cmd
         | 
| @@ -0,0 +1,144 @@ | |
| 1 | 
            +
            #!make
         | 
| 2 | 
            +
            SHELL := /bin/bash
         | 
| 3 | 
            +
            # Ensure the xml2rfc cache directory exists locally
         | 
| 4 | 
            +
            IGNORE := $(shell mkdir -p $(HOME)/.cache/xml2rfc)
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            SRC := $(shell yq r metanorma.yml metanorma.source.files | cut -c 3-999)
         | 
| 7 | 
            +
            ifeq ($(SRC),ll)
         | 
| 8 | 
            +
            SRC := $(filter-out README.adoc, $(wildcard *.adoc))
         | 
| 9 | 
            +
            endif
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            FORMAT_MARKER := mn-output-
         | 
| 12 | 
            +
            FORMATS := $(shell grep "$(FORMAT_MARKER)" $(SRC) | cut -f 2 -d ' ' | tr ',' '\n' | sort | uniq | tr '\n' ' ')
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            XML  := $(patsubst %.adoc,%.xml,$(SRC))
         | 
| 15 | 
            +
            XMLRFC3  := $(patsubst %.adoc,%.v3.xml,$(SRC))
         | 
| 16 | 
            +
            HTML := $(patsubst %.adoc,%.html,$(SRC))
         | 
| 17 | 
            +
            DOC  := $(patsubst %.adoc,%.doc,$(SRC))
         | 
| 18 | 
            +
            PDF  := $(patsubst %.adoc,%.pdf,$(SRC))
         | 
| 19 | 
            +
            TXT  := $(patsubst %.adoc,%.txt,$(SRC))
         | 
| 20 | 
            +
            NITS := $(patsubst %.adoc,%.nits,$(wildcard draft-*.adoc))
         | 
| 21 | 
            +
            WSD  := $(wildcard models/*.wsd)
         | 
| 22 | 
            +
            XMI	 := $(patsubst models/%,xmi/%,$(patsubst %.wsd,%.xmi,$(WSD)))
         | 
| 23 | 
            +
            PNG	 := $(patsubst models/%,images/%,$(patsubst %.wsd,%.png,$(WSD)))
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            COMPILE_CMD_LOCAL := bundle exec metanorma $$FILENAME
         | 
| 26 | 
            +
            COMPILE_CMD_DOCKER := docker run -v "$$(pwd)":/metanorma/ ribose/metanorma "metanorma $$FILENAME"
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            ifdef METANORMA_DOCKER
         | 
| 29 | 
            +
              COMPILE_CMD := echo "Compiling via docker..."; $(COMPILE_CMD_DOCKER)
         | 
| 30 | 
            +
            else
         | 
| 31 | 
            +
              COMPILE_CMD := echo "Compiling locally..."; $(COMPILE_CMD_LOCAL)
         | 
| 32 | 
            +
            endif
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            _OUT_FILES := $(foreach FORMAT,$(FORMATS),$(shell echo $(FORMAT) | tr '[:lower:]' '[:upper:]'))
         | 
| 35 | 
            +
            OUT_FILES  := $(foreach F,$(_OUT_FILES),$($F))
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            all: images $(OUT_FILES)
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            %.v3.xml %.xml %.html %.doc %.pdf %.txt:	%.adoc | bundle
         | 
| 40 | 
            +
            	FILENAME=$^; \
         | 
| 41 | 
            +
            	${COMPILE_CMD}
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            draft-%.nits:	draft-%.txt
         | 
| 44 | 
            +
            	VERSIONED_NAME=`grep :name: draft-$*.adoc | cut -f 2 -d ' '`; \
         | 
| 45 | 
            +
            	cp $^ $${VERSIONED_NAME}.txt && \
         | 
| 46 | 
            +
            	idnits --verbose $${VERSIONED_NAME}.txt > $@ && \
         | 
| 47 | 
            +
            	cp $@ $${VERSIONED_NAME}.nits && \
         | 
| 48 | 
            +
            	cat $${VERSIONED_NAME}.nits
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            %.nits:
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            nits: $(NITS)
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            images: $(PNG)
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            images/%.png: models/%.wsd
         | 
| 57 | 
            +
            	plantuml -tpng -o ../images/ $<
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            xmi: $(XMI)
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            xmi/%.xmi: models/%.wsd
         | 
| 62 | 
            +
            	plantuml -xmi:star -o ../xmi/ $<
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            define FORMAT_TASKS
         | 
| 65 | 
            +
            OUT_FILES-$(FORMAT) := $($(shell echo $(FORMAT) | tr '[:lower:]' '[:upper:]'))
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            open-$(FORMAT):
         | 
| 68 | 
            +
            	open $$(OUT_FILES-$(FORMAT))
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            clean-$(FORMAT):
         | 
| 71 | 
            +
            	rm -f $$(OUT_FILES-$(FORMAT))
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            $(FORMAT): clean-$(FORMAT) $$(OUT_FILES-$(FORMAT))
         | 
| 74 | 
            +
             | 
| 75 | 
            +
            .PHONY: clean-$(FORMAT)
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            endef
         | 
| 78 | 
            +
             | 
| 79 | 
            +
            $(foreach FORMAT,$(FORMATS),$(eval $(FORMAT_TASKS)))
         | 
| 80 | 
            +
             | 
| 81 | 
            +
            open: open-html
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            clean:
         | 
| 84 | 
            +
            	rm -f $(OUT_FILES) && rm -rf published
         | 
| 85 | 
            +
             | 
| 86 | 
            +
            bundle:
         | 
| 87 | 
            +
            	if [ "x" == "${METANORMA_DOCKER}x" ]; then bundle; fi
         | 
| 88 | 
            +
             | 
| 89 | 
            +
            .PHONY: bundle all open clean
         | 
| 90 | 
            +
             | 
| 91 | 
            +
            #
         | 
| 92 | 
            +
            # Watch-related jobs
         | 
| 93 | 
            +
            #
         | 
| 94 | 
            +
             | 
| 95 | 
            +
            .PHONY: watch serve watch-serve
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            NODE_BINS          := onchange live-serve run-p
         | 
| 98 | 
            +
            NODE_BIN_DIR       := node_modules/.bin
         | 
| 99 | 
            +
            NODE_PACKAGE_PATHS := $(foreach PACKAGE_NAME,$(NODE_BINS),$(NODE_BIN_DIR)/$(PACKAGE_NAME))
         | 
| 100 | 
            +
             | 
| 101 | 
            +
            $(NODE_PACKAGE_PATHS): package.json
         | 
| 102 | 
            +
            	npm i
         | 
| 103 | 
            +
             | 
| 104 | 
            +
            watch: $(NODE_BIN_DIR)/onchange
         | 
| 105 | 
            +
            	$(MAKE) all
         | 
| 106 | 
            +
            	$< $(ALL_SRC) -- $(MAKE) all
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            define WATCH_TASKS
         | 
| 109 | 
            +
            watch-$(FORMAT): $(NODE_BIN_DIR)/onchange
         | 
| 110 | 
            +
            	$(MAKE) $(FORMAT)
         | 
| 111 | 
            +
            	$$< $$(SRC_$(FORMAT)) -- $(MAKE) $(FORMAT)
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            .PHONY: watch-$(FORMAT)
         | 
| 114 | 
            +
            endef
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            $(foreach FORMAT,$(FORMATS),$(eval $(WATCH_TASKS)))
         | 
| 117 | 
            +
             | 
| 118 | 
            +
            serve: $(NODE_BIN_DIR)/live-server revealjs-css reveal.js images
         | 
| 119 | 
            +
            	export PORT=$${PORT:-8123} ; \
         | 
| 120 | 
            +
            	port=$${PORT} ; \
         | 
| 121 | 
            +
            	for html in $(HTML); do \
         | 
| 122 | 
            +
            		$< --entry-file=$$html --port=$${port} --ignore="*.html,*.xml,Makefile,Gemfile.*,package.*.json" --wait=1000 & \
         | 
| 123 | 
            +
            		port=$$(( port++ )) ;\
         | 
| 124 | 
            +
            	done
         | 
| 125 | 
            +
             | 
| 126 | 
            +
            watch-serve: $(NODE_BIN_DIR)/run-p
         | 
| 127 | 
            +
            	$< watch serve
         | 
| 128 | 
            +
             | 
| 129 | 
            +
            #
         | 
| 130 | 
            +
            # Deploy jobs
         | 
| 131 | 
            +
            #
         | 
| 132 | 
            +
             | 
| 133 | 
            +
            publish:
         | 
| 134 | 
            +
            	$(MAKE) published
         | 
| 135 | 
            +
             | 
| 136 | 
            +
            published:
         | 
| 137 | 
            +
            	mkdir -p $@ && \
         | 
| 138 | 
            +
            	export GLOBIGNORE=$(SRC); \
         | 
| 139 | 
            +
            	cp -a $(addsuffix .*,$(basename $(SRC))) $@/; \
         | 
| 140 | 
            +
            	unset GLOBIGNORE; \
         | 
| 141 | 
            +
            	cp $(firstword $(HTML)) $@/index.html
         | 
| 142 | 
            +
             | 
| 143 | 
            +
            .PHONY: publish
         | 
| 144 | 
            +
             |