فهرست منبع

Update check-doc to allow only listing, (for IDE that require functions for markup langage)
Add option for extra documentation file inc_scrtf and inc_atcf (for people who have their customs documented in other file, wich is probably best to avoid conflicts)

lighta 11 سال پیش
والد
کامیت
ea925a05b1
1فایلهای تغییر یافته به همراه101 افزوده شده و 50 حذف شده
  1. 101 50
      tools/check-doc.pl

+ 101 - 50
tools/check-doc.pl

@@ -7,23 +7,29 @@ use File::Basename;
 use Getopt::Long;
 
 my $sHelp	= 0;
-my $sCmd = $1;
 my $sAtcf = "../doc/atcommands.txt";
 my $sSctf = "../doc/script_commands.txt";
 my $sLeftOverChk      = 0;
+my $sCmd = "chk";
+my $sValidCmd = "ls|chk";
 my $sTarget	= "All";
 my $sValidTarget = "All|Script|Atc";
+my $sInc_atcf = "../doc/atcommands2.txt";
+my $sInc_scrtf = "../doc/script_commands2.txt";
 
 my($filename, $dir, $suffix) = fileparse($0);
 chdir $dir; #put ourself like was called in tool folder
 GetArgs();
-Main($sTarget);
+Main($sCmd,$sTarget);
 
 sub GetArgs {
     GetOptions(
+    'cmd=s' => \$sCmd,	 # wich command to run
     'atcf=s' => \$sAtcf, #atc doc file
     'scriptf=s' => \$sSctf, #script doc file
-    'target=s'	=> \$sTarget,	 #Target (wich setup to run)
+    'inc_atcf=s' => \$sInc_atcf, #include script doc file (for customs doc)
+    'inc_scrtf=s' => \$sInc_scrtf, #include script doc file (for customs doc)
+    'target=s'	=> \$sTarget,	 #Target (wich files to run-cmd into)
     'leftover=i' => \$sLeftOverChk, #should we chk if all doc are linked to a src ?
     'help!' => \$sHelp,
     ) or $sHelp=1; #display help if invalid option	
@@ -31,9 +37,12 @@ sub GetArgs {
     if( $sHelp ) {
 	print "Incorect option specified, available option are:\n"
 	    ."\t --atcf filename => file (specify atcommand doc to use)\n"
+	    ."\t --inc_atcf filename => include file (specify atcommand doc to use)\n"
 	    ."\t --scriptf filename => file (specify script doc to use)\n"
+	    ."\t --inc_scrtf filename => include file (specify script doc to use)\n"
 	    ."\t --leftover=0|1 => should we run reverse chk for leftover in documentation ?\n"
-	    ."\t --target => target (specify wich check to run [$sValidTarget])\n";
+	    ."\t --target => target (specify wich check to run [$sValidTarget])\n"
+	    ."\t --cmd => cmd (specify wich command to run [(default)$sValidCmd])\n";
 	exit;
     }
     unless($sTarget =~ /$sValidTarget/i){
@@ -41,18 +50,31 @@ sub GetArgs {
 	    ."\t --target => target (specify wich check to run [(default)$sValidTarget])\n";
 		exit;
     }
+    unless($sCmd =~ /$sValidCmd/i){
+    	print "Incorect command specified, available command are:\n"
+	    ."\t --cmd => cmd (specify wich command to run [(default)$sValidCmd])\n";
+		exit;
+    }
 }
 
 
-sub Main { my ($sCmd) = @_;
-	if($sCmd=~/both|all/i){ #both is keep as backard compatibility here cf check-doc.sh
-		$sCmd = "script|atc";
+sub Main { my ($sCmd,$sTarget) = @_;
+	if($sTarget=~/both|all/i){ #both is keep as backard compatibility here cf check-doc.sh
+		$sTarget = "script|atc";
 	}
-	if($sCmd=~/script/i){ #find which script commands are missing from doc/script_commands.txt
-		Script_Chk();
+	if($sTarget=~/script/i){ #find which script commands are missing from doc/script_commands.txt
+		my $raSct_cmd = Script_GetCmd();
+		if($sCmd =~ /ls/i) {
+			print "The list of script-command found are = \n[ @$raSct_cmd ] \n\n";
+		}
+		if($sCmd =~ /chk/i) { Script_Chk($raSct_cmd); }
 	}
-	if($sCmd=~/atc/i){ #find which atcommands are missing from doc/atcommands.txt
-		Atc_Chk();
+	if($sTarget=~/atc/i){ #find which atcommands are missing from doc/atcommands.txt
+		my $raAct_cmd = Atc_GetCmd();
+		if($sCmd =~ /ls/i) {
+			print "The list of atcommand found are = \n[ @$raAct_cmd ] \n\n";
+		}
+		if($sCmd =~ /chk/i) { Atc_Chk($raAct_cmd); }
 	}
 }
 
@@ -70,13 +92,14 @@ sub Chk { my($raA,$raB) = @_;
 	return \@aMissing;
 }
 
-sub Script_Chk {
+sub Script_GetCmd {
 	my @aSct_src = ("../src/map/script.c","../src/custom/script_def.inc");
 	my @aDef_sct = ();
-	my @aDoc_sct = ();
-	my $raMiss_sct;
 	foreach my $sSct_srcf (@aSct_src){
-		open FILE_SRC, "<$sSct_srcf" || die "couldn't open file $sSct_srcf \n";
+		unless(open FILE_SRC, "<$sSct_srcf") { 
+			print "couldn't open file $sSct_srcf \n";
+			next;
+		}
 		while(<FILE_SRC>){
 			next if($_ =~ /^#/); #ignoe include, define or macro
 			if($_ =~ /BUILDIN_DEF|BUILDIN_DEF2/){
@@ -95,24 +118,38 @@ sub Script_Chk {
 		}
 		close FILE_SRC;
 	}
-	open FILE_DOC, "$sSctf" || die "couldn't open file $sSctf \n";
-	while(<FILE_DOC>){
-		next if($_ =~ /^\*\*|^\*\s|^\s+/); #discard **, * foo, foo
-		next if(/^\s+/);
-		if($_ =~ /^\*/){
-			my @line = split(' ',$_);
-			@line = split('\(',$line[0]);
-			@line = split('\<',$line[0]);
-			$line[0] =~ s/\(|\{|\*|\r|\s|\;|\)|\"|\,//g; #todo please harmonize command definition for easier parse
-			
-			next if($line[0] eq "Name" || $line[0] eq "" || $line[0] eq "function" 
-			|| $line[0] eq "if" || $line[0] eq "while" || $line[0] eq "do"  || $line[0] eq "for" ); #exception list
-			
-			push(@aDoc_sct,$line[0]);
+	return \@aDef_sct;
+}
+
+sub Script_Chk { my ($raDef_sct) = @_;
+	my @aSct_docf = ($sSctf,$sInc_scrtf);
+	my @aDoc_sct = ();
+	my $raMiss_sct;
+
+	foreach my $sSct_docf (@aSct_docf){
+		unless(open FILE_DOC, "$sSct_docf"){
+			print "couldn't open file $sSct_docf \n";
+			next;
+		}
+		while(<FILE_DOC>){
+			next if($_ =~ /^\*\*|^\*\s|^\s+/); #discard **, * foo, foo
+			next if(/^\s+/);
+			if($_ =~ /^\*/){
+				my @line = split(' ',$_);
+				@line = split('\(',$line[0]);
+				@line = split('\<',$line[0]);
+				$line[0] =~ s/\(|\{|\*|\r|\s|\;|\)|\"|\,//g; #todo please harmonize command definition for easier parse
+				
+				next if($line[0] eq "Name" || $line[0] eq "" || $line[0] eq "function" 
+				|| $line[0] eq "if" || $line[0] eq "while" || $line[0] eq "do"  || $line[0] eq "for" ); #exception list
+				
+				push(@aDoc_sct,$line[0]);
+			}
 		}
+		close FILE_DOC;
 	}
-	close FILE_DOC;
-	$raMiss_sct = Chk(\@aDef_sct,\@aDoc_sct); #check missing documentation
+	
+	$raMiss_sct = Chk($raDef_sct,\@aDoc_sct); #check missing documentation
 	if(scalar(@$raMiss_sct)){
 		print "Missing script documentation for function :{\n";
 		foreach(@$raMiss_sct){
@@ -123,7 +160,7 @@ sub Script_Chk {
 	else { print "All script command in Src are documented, no issues found\n"; }
 	
 	if($sLeftOverChk){
-		my $raLeftover_sct = Chk(\@aDoc_sct,\@aDef_sct); #we just inverse the chk for leftover
+		my $raLeftover_sct = Chk(\@aDoc_sct,$raDef_sct); #we just inverse the chk for leftover
 		if(scalar(@$raLeftover_sct)){
 			print "Those script command was found in doc but no source associated, leftover ? :{\n";
 			foreach(@$raLeftover_sct){
@@ -135,15 +172,16 @@ sub Script_Chk {
 	}
 }
 
-sub Atc_Chk {
+sub Atc_GetCmd {
 	my @aAct_src = ("../src/map/atcommand.c","../src/custom/atcommand_def.inc");
 	my @aDef_act = ();
-	my @aDoc_act = ();
-	my $raMiss_act;
 	foreach my $sAct_srcf (@aAct_src){
-		open FILE_SRC, "<$sAct_srcf" || die "couldn't open file $sAct_srcf \n";
+		unless(open FILE_SRC, "<$sAct_srcf"){
+			print "couldn't open file $sAct_srcf \n";
+			next;
+		}
 		while(<FILE_SRC>){
-			next if($_ =~ /^#/); #ignoe include, define or macro
+			next if($_ =~ /^#/); #ignore include, define or macro
 			if($_ =~ /ACMD_DEF|ACMD_DEF2|ACMD_DEFR|ACMD_DEF2R/){
 				$_ =~ s/\s+$//; #Remove trailing spaces.
 				$_ =~ s/^\s+//; #Remove leading spaces.
@@ -162,21 +200,34 @@ sub Atc_Chk {
 		}
 		close FILE_SRC;
 	}
-	open FILE_DOC, "$sAtcf" || die "couldn't open file $sAtcf \n";
-	while(<FILE_DOC>){
-		next if($_ =~ /^\*\*|^\*\s|^\s+/); #discard **, * foo, foo
-		next if(/^\s+/);
-		if($_ =~ /^\@/){
-			my @line = split(' ',$_);
-			@line = split('\(',$line[0]);
-			@line = split('\<',$line[0]);
-			$line[0] =~ s/\(|\{|\@|\r|\s|\;|\)|\"|\,//g; #todo please harmonize command definition for easier parse
-			push(@aDoc_act,$line[0]);
+	return \@aDef_act;
+}
+
+sub Atc_Chk {  my ($raDef_act) = @_;
+	my @aAct_docf = ($sAtcf,$sInc_atcf);
+	my @aDoc_act = ();
+	my $raMiss_act;
+	
+	foreach my $sAct_docf (@aAct_docf){
+		unless(open FILE_DOC, "$sAct_docf"){
+			print "couldn't open file $sAct_docf \n";
+			next;
+		}
+		while(<FILE_DOC>){
+			next if($_ =~ /^\*\*|^\*\s|^\s+/); #discard **, * foo, foo
+			next if(/^\s+/);
+			if($_ =~ /^\@/){
+				my @line = split(' ',$_);
+				@line = split('\(',$line[0]);
+				@line = split('\<',$line[0]);
+				$line[0] =~ s/\(|\{|\@|\r|\s|\;|\)|\"|\,//g; #todo please harmonize command definition for easier parse
+				push(@aDoc_act,$line[0]);
+			}
 		}
+		close FILE_DOC;
 	}
-	close FILE_DOC;
 	
-	$raMiss_act = Chk(\@aDef_act,\@aDoc_act); #check missing documentation
+	$raMiss_act = Chk($raDef_act,\@aDoc_act); #check missing documentation
 	if(scalar(@$raMiss_act)){
 		print "Missing atcommand documentation for function :{\n";
 		foreach(@$raMiss_act){
@@ -187,7 +238,7 @@ sub Atc_Chk {
 	else { print "All atcommand in Src are documented, no issues found\n"; }
 	
 	if($sLeftOverChk){
-		my $raLeftover_sct = Chk(\@aDoc_act,\@aDef_act); #we just inverse the chk for leftover
+		my $raLeftover_sct = Chk(\@aDoc_act,$raDef_act); #we just inverse the chk for leftover
 		if(scalar(@$raLeftover_sct)){
 			print "Those atcommand command was found in doc but no source associated, leftover ? : {\n";
 			foreach(@$raLeftover_sct){