mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 22:58:20 +00:00

- Fixing the parts of the `make restdoc` and `make doc` process that were broken by the last Bro script re-organization - Generated documentation for Bro scripts derived from BiFs now use the original BiF source file as the "original source file" link - Renaming of the internal POLICYDEST definition and other misc places that refer to "policy" scripts; that terminology doesn't make total sense now - Added a documentation blacklist reminder test that will fail if there's scripts that are blacklisted from being documentated because they're still in progress - Some minor Bro script changes to fix small @load dependency errors Addresses #543
61 lines
2.5 KiB
Python
Executable file
61 lines
2.5 KiB
Python
Executable file
#! /usr/bin/env python
|
|
|
|
# This script automatically generates a reST documents that lists
|
|
# a collection of Bro scripts that are "grouped" together.
|
|
# The summary text (##! comments) of the script is embedded in the list
|
|
#
|
|
# 1st argument is the file containing list of groups
|
|
# 2nd argument is the directory containing ${group}_files lists of
|
|
# scripts that belong to the group and ${group}_doc_names lists of
|
|
# document names that can be supplied to a reST :doc: role
|
|
# 3rd argument is a directory in which write a ${group}.rst file (will
|
|
# append to existing file) that contains reST style references to
|
|
# script docs along with summary text contained in original script
|
|
|
|
import sys
|
|
import os
|
|
import string
|
|
|
|
group_list = sys.argv[1]
|
|
file_manifest_dir = sys.argv[2]
|
|
output_dir = sys.argv[3]
|
|
|
|
with open(group_list, 'r') as f_group_list:
|
|
for group in f_group_list.read().splitlines():
|
|
#print group
|
|
file_manifest = os.path.join(file_manifest_dir, group + "_files")
|
|
doc_manifest = os.path.join(file_manifest_dir, group + "_doc_names")
|
|
src_files = []
|
|
doc_names = []
|
|
|
|
with open(file_manifest, 'r') as f_file_manifest:
|
|
src_files = f_file_manifest.read().splitlines()
|
|
|
|
with open(doc_manifest, 'r') as f_doc_manifest:
|
|
doc_names = f_doc_manifest.read().splitlines()
|
|
|
|
for i in range(len(src_files)):
|
|
src_file = src_files[i]
|
|
#print "\t" + src_file
|
|
summary_comments = []
|
|
with open(src_file, 'r') as f_src_file:
|
|
for line in f_src_file:
|
|
sum_pos = string.find(line, "##!")
|
|
if sum_pos != -1:
|
|
summary_comments.append(line[(sum_pos+3):])
|
|
#print summary_comments
|
|
group_file = os.path.join(output_dir, group + ".rst")
|
|
if not os.path.exists(group_file):
|
|
if not os.path.exists(os.path.dirname(group_file)):
|
|
os.makedirs(os.path.dirname(group_file))
|
|
with open(group_file, 'w') as f_group_file:
|
|
title = "Package Index: %s\n" % os.path.dirname(group)
|
|
f_group_file.write(title);
|
|
for n in range(len(title)):
|
|
f_group_file.write("=")
|
|
f_group_file.write("\n");
|
|
|
|
with open(group_file, 'a') as f_group_file:
|
|
f_group_file.write("\n:doc:`/scripts/%s`\n" % doc_names[i])
|
|
for line in summary_comments:
|
|
f_group_file.write(" " + line)
|