Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F92347022
doc-build.sh
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Tue, Nov 19, 14:15
Size
3 KB
Mime Type
text/x-shellscript
Expires
Thu, Nov 21, 14:15 (2 d)
Engine
blob
Format
Raw Data
Handle
22425740
Attached To
R2664 SHRINE MedCo Fork
doc-build.sh
View Options
#!/usr/bin/env bash
if
[[
$DEBUG
!
=
""
]]
;
then
set
-x
fi
set
-o errexit
set
-o pipefail
if
!
[
-x node_modules/.bin/marked-man
]
;
then
ps
=
0
if
[
-f .building_marked-man
]
;
then
pid
=
$(
cat .building_marked-man
)
ps
=
$(
ps -p
$pid
| grep
$pid
| wc -l
)
||
true
fi
if
[
-f .building_marked-man
]
&&
[
$ps
!
=
0
]
;
then
while
[
-f .building_marked-man
]
;
do
sleep 1
done
else
# a race to see which make process will be the one to install marked-man
echo
$$
> .building_marked-man
sleep 1
if
[
$(
cat .building_marked-man
)
==
$$
]
;
then
make node_modules/.bin/marked-man
rm .building_marked-man
else
while
[
-f .building_marked-man
]
;
do
sleep 1
done
fi
fi
fi
if
!
[
-x node_modules/.bin/marked
]
;
then
ps
=
0
if
[
-f .building_marked
]
;
then
pid
=
$(
cat .building_marked
)
ps
=
$(
ps -p
$pid
| grep
$pid
| wc -l
)
||
true
fi
if
[
-f .building_marked
]
&&
[
$ps
!
=
0
]
;
then
while
[
-f .building_marked
]
;
do
sleep 1
done
else
# a race to see which make process will be the one to install marked
echo
$$
> .building_marked
sleep 1
if
[
$(
cat .building_marked
)
==
$$
]
;
then
make node_modules/.bin/marked
rm .building_marked
else
while
[
-f .building_marked
]
;
do
sleep 1
done
fi
fi
fi
src
=
$1
dest
=
$2
name
=
$(
basename
${
src
%.*
})
date
=
$(
date -u +
'%Y-%m-%d %H:%M:%S'
)
version
=
$(
node cli.js -v
)
mkdir -p
$(
dirname
$dest
)
html_replace_tokens
()
{
local
url
=
$1
sed
"s|@NAME@|$name|g"
\
| sed
"s|@DATE@|$date|g"
\
| sed
"s|@URL@|$url|g"
\
| sed
"s|@VERSION@|$version|g"
\
| perl -p -e
's/<h1([^>]*)>([^\(]*\([0-9]\)) -- (.*?)<\/h1>/<h1>\2<\/h1> <p>\3<\/p>/g'
\
| perl -p -e
's/npm-npm/npm/g'
\
| perl -p -e
's/([^"-])(npm-)?README(?!\.html)(\(1\))?/\1<a href="..\/..\/doc\/README.html">README<\/a>/g'
\
| perl -p -e
's/<title><a href="[^"]+README.html">README<\/a><\/title>/<title>README<\/title>/g'
\
| perl -p -e
's/([^"-])([^\(> ]+)(\(1\))/\1<a href="..\/cli\/\2.html">\2\3<\/a>/g'
\
| perl -p -e
's/([^"-])([^\(> ]+)(\(3\))/\1<a href="..\/api\/\2.html">\2\3<\/a>/g'
\
| perl -p -e
's/([^"-])([^\(> ]+)(\(5\))/\1<a href="..\/files\/\2.html">\2\3<\/a>/g'
\
| perl -p -e
's/([^"-])([^\(> ]+)(\(7\))/\1<a href="..\/misc\/\2.html">\2\3<\/a>/g'
\
| perl -p -e
's/\([1357]\)<\/a><\/h1>/<\/a><\/h1>/g'
\
|
(
if
[
$(
basename
$(
dirname
$dest
))
==
"doc"
]
;
then
perl -p -e
's/ href="\.\.\// href="/g'
else
cat
fi
)
}
man_replace_tokens
()
{
sed
"s|@VERSION@|$version|g"
\
| perl -p -e
's/(npm\\-)?([a-zA-Z\\\.\-]*)\(1\)/npm help \2/g'
\
| perl -p -e
's/(npm\\-)?([a-zA-Z\\\.\-]*)\(([57])\)/npm help \3 \2/g'
\
| perl -p -e
's/(npm\\-)?([a-zA-Z\\\.\-]*)\(3\)/npm apihelp \2/g'
\
| perl -p -e
's/npm\(1\)/npm help npm/g'
\
| perl -p -e
's/npm\(3\)/npm apihelp npm/g'
}
case
$dest
in
*.
[
1357
])
./node_modules/.bin/marked-man --roff
$src
\
| man_replace_tokens >
$dest
exit
$?
;;
*.html
)
url
=
${
dest
/html\//
}
(
cat html/dochead.html
&&
\
cat
$src
| ./node_modules/.bin/marked
&&
cat html/docfoot.html
)
\
| html_replace_tokens
$url
\
>
$dest
exit
$?
;;
*
)
echo
"Invalid destination type: $dest"
>&2
exit
1
;;
esac
Event Timeline
Log In to Comment