浏览代码

Base: Add new system-mode that just generates manpages

Ben Wiederhake 3 年之前
父节点
当前提交
2caad04d23
共有 3 个文件被更改,包括 63 次插入2 次删除
  1. 8 0
      Base/etc/SystemServer.ini
  2. 52 0
      Base/root/generate_manpages.sh
  3. 3 2
      Meta/lint-shell-scripts.sh

+ 8 - 0
Base/etc/SystemServer.ini

@@ -160,6 +160,14 @@ User=anon
 WorkingDirectory=/home/anon
 SystemModes=self-test
 
+[GenerateManpages@ttyS0]
+Executable=/root/generate_manpages.sh
+StdIO=/dev/ttyS0
+Environment=DO_SHUTDOWN_AFTER_GENERATE=1 TERM=xterm PATH=/bin
+User=root
+WorkingDirectory=/root/
+SystemModes=generate-manpages
+
 [SpiceAgent]
 KeepAlive=0
 

+ 52 - 0
Base/root/generate_manpages.sh

@@ -0,0 +1,52 @@
+#!/bin/Shell
+
+export ARGSPARSER_EMIT_MARKDOWN=1
+
+# Qemu likes to start us in the middle of a line, so:
+echo
+
+rm -rf generated_manpages || exit 1
+
+for i in ( \
+            (Eyes 1) \
+            (UserspaceEmulator 1) \
+            (TelnetServer 1) \
+            (WebServer 1) \
+            (config 1) \
+            (fortune 1) \
+            (grep 1) \
+            (gunzip 1) \
+            (gzip 1) \
+            (ifconfig 1) \
+            (lsof 1) \
+            (nc 1) \
+            (netstat 1) \
+            (nl 1) \
+            (ntpquery 1) \
+            (passwd 1) \
+            (profile 1) \
+            (readelf 1) \
+            (shot 1) \
+            (sql 1) \
+            (strace 1) \
+            (tail 1) \
+            (tr 1) \
+            (traceroute 1) \
+            (tree 1) \
+            (truncate 1) \
+            (usermod 8) \
+            (utmpupdate 1) \
+            (wc 1) \
+        ) {
+    filename="generated_manpages/man$i[1]/$i[0].md"
+    mkdir -p "generated_manpages/man$i[1]"
+    echo "Generating for $i[0] in $filename ..."
+    $i[0] --help > "$filename" || exit 1
+    echo -e "\n<!-- Auto-generated through ArgsParser -->"  >> "$filename" || exit 1
+}
+
+echo "Successful."
+
+if test $DO_SHUTDOWN_AFTER_GENERATE {
+    shutdown -n
+}

+ 3 - 2
Meta/lint-shell-scripts.sh

@@ -11,12 +11,13 @@ if [ "$#" -eq "0" ]; then
             '*.sh' \
             ':!:Ports' \
             ':!:Userland/Shell/Tests' \
-            ':!:Base/home/anon/tests'
+            ':!:Base/home/anon/tests' \
+            ':!:Base/root/generate_manpages.sh'
     )
 else
     files=()
     for file in "$@"; do
-        if [[ "${file}" == *".sh" ]]; then
+        if [[ "${file}" == *".sh" && "${file}" != "Base/root/generate_manpages.sh" ]]; then
             files+=("${file}")
         fi
     done