Преглед на файлове

Upd build_doc

Fix small newline typo.
Add option argument in script.
Prevent rebuilding by default if git is unchanged.
see build_doc --help for available option
lighta преди 11 години
родител
ревизия
3132262791
променени са 2 файла, в които са добавени 136 реда и са изтрити 53 реда
  1. 1 1
      doxyconf
  2. 135 52
      tools/build_doc.pl

+ 1 - 1
doxyconf

@@ -31,7 +31,7 @@ PROJECT_NAME           = rAthena
 # This could be handy for archiving the generated documentation or 
 # if some version control system is used.
 
-PROJECT_NUMBER  = b2d1932
+PROJECT_NUMBER  = ec91269
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
 # base path where the generated documentation will be put. 

+ 135 - 52
tools/build_doc.pl

@@ -2,71 +2,154 @@
 # building documentation using doxygen and updation versionning number
 use strict;
 use File::Basename;
+use Getopt::Long;
 
+#prgm option
+my $sHelp	= 0;
 my $sDocFile = "doxyconf";
 my $outputdir = "doc/doxygen";
-my @line = ();
-my $repoversion;
-my $gitversion;
-my $doxyversion;
-my $chked;
+my $sForceBuild = 0;
+my $sIgnChk = "None";
+my $sValidTarget = "None|All|Doxygen|Git";
+my $sNoUpd = 0;
 
-my($filename, $dir, $suffix) = fileparse($0);
-chdir "../$dir"; #put ourself like was called in tools
+GetArgs();
+Main();
 
-#checking for doxygen
-open PIPE,"doxygen --version |" or die $!;
-@line = grep { /\d.\d.\d/ } <PIPE>;
-$doxyversion = $line[0];
-print "doxyversion = [ $doxyversion ]\n";
-if($doxyversion eq ""){
-	die "Please install doxygen to proceed";
+sub GetArgs {
+    GetOptions(
+    'doxyconf=s' => \$sDocFile, #specify the doxygen configuration file
+    'outdir=s' => \$outputdir, #specify in wich folder to build the documentation
+    'ignorechk=s'	=> \$sIgnChk,	 #Target (wich setup to run)
+    'forcebuild=i' => \$sForceBuild, #should we chk if all doc are linked to a src ?
+    'noupd=i' => \$sNoUpd, #prevent altering doxygen conf
+    'help!' => \$sHelp,
+    ) or $sHelp=1; #display help if invalid option	
+	
+    if( $sHelp ) {
+	print "Incorect option specified, available option are:\n"
+	    ."\t --doxyconf filename => specify wich doxygen configuration to use\n"
+	    ."\t --outdir path => specify in wich path to build doxygen documentation\n"
+	    ."\t --forcebuild=0|1 => should we force building of documentation even if same git detected ?\n"
+	    ."\t --noupd=0|1 => should we skip producing a new doxyconf for version ?\n"
+	    ."\t --ignorechk => target (specify wich check to ignore [$sValidTarget])\n";
+	exit;
+    }
+    if($sIgnChk && !($sIgnChk =~ /$sValidTarget/i)){
+    	print "Incorect ignorechk target specified, available target are:\n"
+	    ."\t --ignorechk => target (specify wich check to ignore [(default)$sValidTarget])\n";
+		exit;
+    }
 }
-close PIPE;
 
-#cheking for git cli
-open PIPE,"git --version |" or die $!;
-@line = grep { /\d.\d.\d.\d/ } <PIPE>;
-$gitversion = $line[0];
-$gitversion =~ s/[^\d.\d.\d.\d]//g;
-print "doxyversion = [ $gitversion ]\n";
-if($gitversion eq ""){
-	die "Please install git to proceed";
+sub Main {
+	my $repoversion;
+	my $sSkipBuild=0;
+	
+	my($filename, $dir, $suffix) = fileparse($0);
+	chdir $dir; #put ourself like was called in main
+	chdir "..";
+
+	DoxygenChk() unless($sIgnChk =~ /Doxygen|All/i);
+	GitChk() unless($sIgnChk =~ /Git|All/i);
+	$repoversion = GetRepoVersion();
+	
+	unless(-r "$outputdir"){
+		mkdir "$outputdir" or die "Can't create output directory for documentation (outdir=$outputdir)\n";
+	}
+	
+	$sSkipBuild = UpdDoxyConf($repoversion);
+	
+	if($sForceBuild || $sSkipBuild==0){
+		print "Building doc\n";
+		system("doxygen doxyconf");
+	}
 }
-close PIPE;
 
-open PIPE,"git rev-parse --short HEAD |" or die $!;
-@line = grep { /\w/ } <PIPE>;
-$repoversion = $line[0];
-print "Git hash is : $repoversion";
-close PIPE;
+sub DoxygenChk {
+	my $doxyversion;
+	my @line = ();
+	#checking for doxygen
+	open PIPE,"doxygen --version |" or die $!;
+	@line = grep { /\d.\d.\d/ } <PIPE>;
+	$doxyversion = $line[0];
+	chomp($doxyversion); #remove newline
+	print "doxyversion = [ $doxyversion ]\n";
+	if($doxyversion eq ""){
+		die "Please install doxygen to proceed";
+	}
+	close PIPE;
+	return $doxyversion;
+}
 
-unless(-r "$outputdir"){
-	mkdir "$outputdir" or die "Can't create output directory for documentation (outdir=$outputdir)\n";
+sub GitChk {
+	my $gitversion;
+	my @line = ();
+	
+	#cheking for git cli
+	open PIPE,"git --version |" or die $!;
+	@line = grep { /\d.\d.\d/ } <PIPE>;
+	$gitversion = $line[0];
+	$gitversion =~ s/[^\d.\d.\d]//g;
+	chomp($gitversion);
+	print "git = [ $gitversion ]\n";
+	if($gitversion eq ""){
+		die "Please install git to proceed";
+	}
+	close PIPE;
+	return $gitversion;
+}
+
+sub GetRepoVersion {
+	my $repoversion;
+	my @line = ();
+	
+	open PIPE,"git rev-parse --short HEAD |" or die $!;
+	@line = grep { /\w/ } <PIPE>;
+	$repoversion = $line[0];
+	chomp($repoversion);
+	print "Git hash is : $repoversion\n";
+	close PIPE;
+	return $repoversion;
 }
 
-die "$sDocFile doesn't seem to exist or coudldn't be read" unless(-r "$sDocFile");
-print "Updating doxygen file version (doxyconf=$sDocFile)\n";
-open FHIN,"$sDocFile" || die "couldn't openfile/create $sDocFile \n";
-open FHOUT,">doxyconf.tmp" || die "couldn't openfile/create doxyconf.tmp \n";
-while(<FHIN>){ 
-	if(($chked&1)==0 && $_ =~ /^PROJECT_NUMBER/) {
-		@line = split(" ",$_);
-		print FHOUT "PROJECT_NUMBER  = $repoversion";
-		print "Updated project number\n";
-		$chked &=1;
+sub UpdDoxyConf { my ($repoversion) = @_;
+	my $sSkipBuild=0;
+	my @line = ();
+	my $chked=0;
+	
+	die "$sDocFile doesn't seem to exist or coudldn't be read" unless(-r "$sDocFile");
+	
+	open FHIN,"$sDocFile" || die "couldn't openfile/create $sDocFile \n";
+	open FHOUT,">doxyconf.tmp" || die "couldn't openfile/create doxyconf.tmp \n";
+	while(<FHIN>){ 
+		if(($chked&1)==0 && $_ =~ /^PROJECT_NUMBER/) {
+			chomp($_);
+			@line = split('=',$_);
+			my $old_version = $line[1];
+			if($old_version == $repoversion) { $sSkipBuild=1; }
+			elsif($sNoUpd==0) { print "Updated project number\n"; }
+			print FHOUT "PROJECT_NUMBER  = $repoversion\n";
+			$chked &=1;
+		}
+		elsif(($chked&2)==0 && $_ =~ /^OUTPUT_DIRECTORY/){
+			print FHOUT "OUTPUT_DIRECTORY  = $outputdir\n";
+			print "Updated output dir\n" if($sNoUpd==0);
+			$chked &=2;
+		}
+		else { print FHOUT $_; }
 	}
-	elsif(($chked&2)==0 && $_ =~ /^OUTPUT_DIRECTORY/){
-		print FHOUT "OUTPUT_DIRECTORY  = $outputdir";
-		print "Updated output dir\n";
-		$chked &=2;
+	close FHIN;
+	close FHOUT;
+	
+	if($sNoUpd==0){
+		unlink $sDocFile;
+		rename "doxyconf.tmp", $sDocFile;
+		print "Updating doxygen file version (doxyconf=$sDocFile)\n";
 	}
-	else { print FHOUT $_; }
+	else { unlink "doxyconf.tmp"; }
+	
+	return $sSkipBuild;
 }
-close FHIN;
-close FHOUT;
-unlink $sDocFile;
-rename "doxyconf.tmp", $sDocFile;
 
-print "Building doc\n";
-system("doxygen doxyconf");
+