summaryrefslogtreecommitdiff
path: root/sandbox/docbook/scripts/validate_docbook.py
blob: 1698a475cde6e3847b0bf0bde89ee12137f66290 (plain)
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
import sys, os, subprocess, glob

class ValidateDocbook():

    def __init__(self):
        jing_dir = os.environ.get('JING_DIR')
        if jing_dir == None:
            raise IOError('You need to set the variable "JING_DIR"')
        jing_jar = os.path.join(jing_dir, 'bin', 'jing.jar')
        if not os.path.isfile(jing_jar):
            raise IOError('You need download the jing.jar')
        self.jing_jar = jing_jar
        valid_home = os.environ.get('VALIDATE_HOME')
        if valid_home == None:
            raise IOError('You need to set the variable "VALIDATE_HOME"')
        docbook_rng = os.path.join(valid_home, 'relax', 'docbook.rng')
        if not os.path.isfile(docbook_rng):
            msg = 'cannot find "{0}"'.format(docbook_rng)
            msg += '\nYou need download docbook.rng'
            raise IOError(msg)
        self.docbook_rng = docbook_rng

    def is_valid(self, in_files):
        command_list = ['java', '-jar', self.jing_jar, self.docbook_rng]
        if isinstance(in_files, list):
            for f in in_files:
                command_list.append(f)
        else:
            command_list.append(in_files)
        exit_status = subprocess.call(command_list)
        if exit_status:
            return False
        return True

if __name__ == '__main__':
    in_files = sys.argv[1:]
    valid_obj = ValidateDocbook()
    valid = valid_obj.is_valid(in_files = in_files)