-
Notifications
You must be signed in to change notification settings - Fork 3
/
Makefile.common
116 lines (99 loc) · 3.33 KB
/
Makefile.common
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#Crazy makefile authored by Lou Berger <lberger@labn.net>
#Modified by Christian Hopps <chopps@chopps.org>
#The author makes no claim/restriction on use. It is provided "AS IS".
#This file is considered a hack and not production grade by the author
#Assumes the basename of draft xml file, e.g., <basename>.xml is set as
#DRAFT
SHELL = bash
WITHXML2RFC := $(shell which xml2rfc > /dev/null 2>&1 ; echo $$? )
ID_DIR = IDs
REVS := $(shell grep docName $(DRAFT).xml | tr '"\->' ' ' | \
strings | awk '{printf "%02d %02d",$$NF-1,$$NF}')
PREV_REV := $(word 1, $(REVS))
REV := $(word 2, $(REVS))
DRAFT_ROOT := $(DRAFT:%-$(REV)=%)
OLD = $(ID_DIR)/$(DRAFT_ROOT)-$(PREV_REV)
NEW = $(ID_DIR)/$(DRAFT_ROOT)-$(REV)
REPO := $(shell git remote get-url origin | sed 's/^.*github.com.//' | sed 's/.git$$//')
MASTER :=
TREES := $(MODELS:.yang=.tree)
%.txt: %.xml
@if [ $(WITHXML2RFC) == 0 ] ; then \
rm -f $@.prev; cp -pf $@ $@.prev > /dev/null 2>&1 ; \
xml2rfc $< -o $@ ; \
if [ -f $@.prev ] ; then diff $@.prev $@ || exit 0 ; fi ; \
fi
%.html: %.xml
@if [ $(WITHXML2RFC) == 0 ] ; then \
rm -f $@.prev; cp -pf $@ $@.prev > /dev/null 2>&1 ; \
xml2rfc --html $< -o $@ ; \
fi
%.raw: %.xml
@if [ $(WITHXML2RFC) == 0 ] ; then \
rm -f $@.prev; cp -pf $@ $@.prev > /dev/null 2>&1 ; \
xml2rfc --raw $< -o $@ ; \
fi
all: $(DRAFT).txt $(DRAFT).html $(DRAFT).raw
vars:
which xml2rfc
@echo WITHXML2RFC=$(WITHXML2RFC)
@echo DRAFT=$(DRAFT)
@echo DRAFT_ROOT=$(DRAFT_ROOT)
@echo REVS=$(REVS)
@echo PREV_REV=$(PREV_REV)
@echo REV=$(REV)
@echo OLD=$(OLD)
@echo REPO=$(REPO)
$(DRAFT)-diff.txt: $(DRAFT).txt
@echo "Generating diff of $(OLD).txt and $(DRAFT).txt > $@..."
if [ -f $(OLD).txt ] ; then \
sdiff --ignore-space-change --expand-tabs -w 168 $(OLD).txt $(DRAFT).txt | \
cut -c84-170 | sed 's/. *//' \
| grep -v '^ <$$' | grep -v '^<$$' > $@ ;\
fi
idnits: $(DRAFT).txt
@if [ ! -f idnits ] ; then \
rm -f $@ ;\
wget http://tools.ietf.org/tools/idnits/idnits ;\
chmod 755 idnits ;\
fi
./idnits $(DRAFT).txt > $@.out
@cat $@.out
@grep -q 'Summary: 0 error' $@.out
id: $(DRAFT).txt $(DRAFT).html
@if [ ! -e $(ID_DIR) ] ; then \
echo "Creating $(ID_DIR) directory" ;\
mkdir $(ID_DIR) ;\
git add $(ID_DIR) ;\
fi
@if [ -f "$(NEW).xml" ] ; then \
echo "" ;\
echo "$(NEW).xml already exists, not overwriting!" ;\
diff -sq $(DRAFT).xml $(NEW).xml ;\
echo "" ;\
else \
echo "Copying to $(NEW).{xml,txt,html}" ;\
echo "" ;\
cp -p $(DRAFT).xml $(NEW).xml ;\
cp -p $(DRAFT).txt $(NEW).txt ;\
cp -p $(DRAFT).html $(NEW).html ;\
git add $(NEW).xml $(NEW).txt $(NEW).html ;\
ls -lt $(DRAFT).* $(NEW).* ;\
fi
rmid:
@echo "Removing:"
@ls -l $(NEW).xml $(NEW).txt $(NEW).html
@echo -n "Hit <ctrl>-C to abort, or <CR> to continue: "
@read t
@rm -f $(NEW).xml $(NEW).txt $(NEW).html
@git rm $(NEW).xml $(NEW).txt $(NEW).html
diff: $(DRAFT).raw
@rm -f "$(DRAFT)-master.raw"
@wget "https://xml2rfc.tools.ietf.org/cgi-bin/xml2rfc.cgi?url=https://raw.githubusercontent.com/$(REPO)/master/$(DRAFT).xml&format=ascii&mode=unpg" -O $(DRAFT)-master.raw || true
@if [ -f "$(DRAFT)-master.raw" ] ; then \
echo "Generating diff against master:" ;\
diff -bw "$(DRAFT)-master.raw" $(DRAFT).raw || true ;\
fi
travis: idnits diff
cat $(DRAFT).txt
#end