source: Dev/trunk/src/client/util/docscripts/parsefile.php

Last change on this file was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 2.1 KB
Line 
1<?php
2
3//      Simple single-file doc validation utility, using our php-based `jsdoc` parser.
4//      To be used as a post-commit hook?
5//
6//      to use:
7//              php -q parsefile.php dojox/data/AndOrReadStore.js
8//
9//      exits normally (status 0) if OK, with status 255 if failed, other values are from PHP untrapped.
10//
11//      add --debug to last argument to see output data, eg:
12//
13//              php -q parsefile.php dijit/_Widget.js --debug
14//
15//      scan all files prior to running generate/makeCix (considerably faster to detect fatal parser-breaking errors)
16//
17//              php -q parsefile.php --all
18
19include_once('lib/parser2/dojo2.inc');
20$allfiles = dojo_get_files();
21
22function doc_passes($ns, $file, $debug){
23        try{
24                $ret = doc_test($ns, $file, $debug);
25                return $ret;
26        }catch (Exception $e){
27                return false;
28        }
29}
30
31function doc_test($ns, $file, $debug){
32        // the testing of a single file. this is where the actual testing goes.
33       
34        try{
35                $ret = true;
36                $data = dojo_get_contents($ns, $file);
37                // test other things. like we're expecting at the _very_ least a $data['#provides'] key?
38                if(empty($data['#provides'])){
39                        if($debug){
40                                print "Warning: no provide() determined. [" . $ns . "/" . $file . "]\n";
41                        }
42                        $ret = false;   
43                }else{
44                        if(count($data['#provides']) > 1){
45                                if($debug){
46                                        print "Warning: Multiple provides() found?\n";
47                                        $ret = false;
48                                }
49                        }
50                }
51               
52                if(count($data) == 0){
53                        if($debug){ print "Error: No data found. [" . $ns . "/" . $file . "]"; }
54                        $ret = false;
55                }else{
56                   
57                }
58               
59                return $ret;
60        }catch (Exception $e){
61                print "Error: Exception trapped processing [" . $ns . "/" . $file . "]\nException:\n";
62                print $e;
63                return false;
64        }
65}
66
67if($argc){
68       
69        $argfile = $argv[1];
70        $debug = in_array("--debug", $argv);
71        if($argfile == "--all"){
72
73                $debug = true;
74                $haserror = false;
75                foreach($allfiles as $set){
76                        list($ns, $file) = $set;
77                        if(!doc_passes($ns, $file, $debug)){
78                                $haserror = true;
79                        }
80                }
81
82                if($haserror){
83                        die(255);
84                }
85
86        }else{
87
88                $parts = explode("/", $argfile);
89                $ns = array_shift($parts);
90                $file = implode("/", $parts);
91                if(!doc_passes($ns, $file, $debug)){
92                        die(255);
93                }
94
95        }
96
97}
Note: See TracBrowser for help on using the repository browser.