aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2012-03-01 17:54:41 -0800
committerfriendica <info@friendica.com>2012-03-01 17:54:41 -0800
commita5256b7996bca6515becac8c2d5d0c56b31119ea (patch)
treeb499e77cd4faf8157c2e048fb8242bc2ca2720cc
parentbd2c8c92f1b30d8f811bd4aab0fe3a2c5496ec61 (diff)
parentdd9432903ddb3e12381881da44fb84afff832d52 (diff)
downloadvolse-hubzilla-a5256b7996bca6515becac8c2d5d0c56b31119ea.tar.gz
volse-hubzilla-a5256b7996bca6515becac8c2d5d0c56b31119ea.tar.bz2
volse-hubzilla-a5256b7996bca6515becac8c2d5d0c56b31119ea.zip
Merge pull request #54 from campino/master
Build documentation This looks good. It may take me some time to get up to speed - and I'm not sure I have all the utilities available via my hosting provider.
-rwxr-xr-x.gitignore8
-rw-r--r--build.xml38
-rwxr-xr-xinclude/acl_selectors.php7
-rwxr-xr-xlibrary/phpsec/Net/SSH1.php4
-rwxr-xr-xutil/db_update.php6
-rw-r--r--util/docblox_errorchecker.php145
6 files changed, 205 insertions, 3 deletions
diff --git a/.gitignore b/.gitignore
index 3dfb8a903..6302bc1c8 100755
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,11 @@ home.html
addon
*~
+#ignore documentation, it should be newly built
+doc/api
+
+#ignore config files from eclipse, we don't want IDE files in our repository
+.project
+.buildpath
+.externalToolBuilders
+.settings
diff --git a/build.xml b/build.xml
new file mode 100644
index 000000000..83c530026
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="friendica" default="test">
+
+ <!-- =================================== -->
+ <!-- Target: test -->
+ <!-- this target runs all test files -->
+ <!-- =================================== -->
+
+ <target name="test">
+ <!-- there are no tests by now, so, nothing to do -->
+ </target>
+
+ <!-- ===================================================== -->
+ <!-- Target: clean-doc -->
+ <!-- this target removes documentation from a previous run -->
+ <!-- ===================================================== -->
+ <target name="doc-clean">
+ <echo msg="Removing old documentation..." />
+ <delete dir="./doc/api/" />
+ <echo msg="Generate documentation directory..." />
+ <mkdir dir="./doc/api/" />
+ </target>
+
+ <!-- ====================================== -->
+ <!-- Target: doc -->
+ <!-- this target builds all documentation -->
+ <!-- ====================================== -->
+ <target name="doc" depends="doc-clean">
+ <echo msg="Building documentation..." />
+ <docblox title="Friendica API" destdir="./doc/api">
+ <fileset dir=".">
+ <include name="**/*.php" />
+ </fileset>
+ </docblox>
+ </target>
+
+</project>
diff --git a/include/acl_selectors.php b/include/acl_selectors.php
index 6070b7db2..67d8cebde 100755
--- a/include/acl_selectors.php
+++ b/include/acl_selectors.php
@@ -1,6 +1,11 @@
<?php
+/**
+ *
+ */
-
+/**
+ * @package acl_selectors
+ */
function group_select($selname,$selclass,$preselected = false,$size = 4) {
$a = get_app();
diff --git a/library/phpsec/Net/SSH1.php b/library/phpsec/Net/SSH1.php
index 6986a8450..7220ee402 100755
--- a/library/phpsec/Net/SSH1.php
+++ b/library/phpsec/Net/SSH1.php
@@ -730,8 +730,8 @@ class Net_SSH1 {
/**
* Reads the output of an interactive shell.
*
- * Requires PHP 4.3.0 or later due to the use of the stream_select() function. If you see stuff like
- * "", you're seeing ANSI escape codes. According to
+ * Requires PHP 4.3.0 or later due to the use of the stream_select() function. If you see crap,
+ * you're seeing ANSI escape codes. According to
* {@link http://support.microsoft.com/kb/101875 How to Enable ANSI.SYS in a Command Window}, "Windows NT
* does not support ANSI escape sequences in Win32 Console applications", so if you're a Windows user,
* there's not going to be much recourse.
diff --git a/util/db_update.php b/util/db_update.php
index 1da2a9909..a6177324a 100755
--- a/util/db_update.php
+++ b/util/db_update.php
@@ -1,5 +1,11 @@
<?php
+/**
+* @package util
+*/
+/*
+* require boot.php
+*/
require_once("boot.php");
$a = new App;
diff --git a/util/docblox_errorchecker.php b/util/docblox_errorchecker.php
new file mode 100644
index 000000000..af4c76444
--- /dev/null
+++ b/util/docblox_errorchecker.php
@@ -0,0 +1,145 @@
+<?php
+/**
+ * When I installed docblox, I had the experience that it does not generate any output at all.
+ * This script may be used to find that kind of problems with the documentation build process.
+ * If docblox generates output, use another approach for debugging.
+ *
+ * Basically, docblox takes a list of files to build documentation from. This script assumes there is a file or set of files
+ * breaking the build when it is included in that list. It tries to calculate the smallest list containing these files.
+ * Unfortunatly, the original problem is NP-complete, so what the script does is a best guess only.
+ *
+ * So it starts with a list of all files in the project.
+ * If that list can't be build, it cuts it in two parts and tries both parts independently. If only one of them breaks,
+ * it takes that one and tries the same independently. If both break, it assumes this is the smallest set. This assumption
+ * is not necessarily true. Maybe the smallest set consists of two files and both of them were in different parts when
+ * the list was divided, but by now it is my best guess. To make this assumption better, the list is shuffled after every step.
+ *
+ * After that, the script tries to remove a file from the list. It tests if the list breaks and if so, it
+ * assumes that the file it removed belongs to the set of errorneous files.
+ * This is done for all files, so, in the end removing one file leads to a working doc build.
+ *
+ * @package util
+ * @author Alexander Kampmann
+ */
+
+/**
+ * This function generates a comma seperated list of file names.
+ *
+ * @package util
+ *
+ * @param array $fileset Set of file names
+ *
+ * @return string comma-seperated list of the file names
+ */
+function namesList($fileset) {
+ $fsparam="";
+ foreach($fileset as $file) {
+ $fsparam=$fsparam.",".$file;
+ }
+ return $fsparam;
+};
+
+/**
+ * This functions runs phpdoc on the provided list of files
+ * @package util
+ *
+ * @param array $fileset Set of filenames
+ *
+ * @return bool true, if that set can be built
+ */
+function runs($fileset) {
+ $fsParam=namesList($fileset);
+ exec('docblox -t phpdoc_out -f '.$fsParam);
+ if(file_exists("phpdoc_out/index.html")) {
+ echo "\n Subset ".$fsParam." is okay. \n";
+ exec('rm -r phpdoc_out');
+ return true;
+ } else {
+ echo "\n Subset ".$fsParam." failed. \n";
+ return false;
+ }
+};
+
+/**
+ * This functions cuts down a fileset by removing files until it finally works.
+ * it was meant to be recursive, but php's maximum stack size is to small. So it just simulates recursion.
+ *
+ * In that version, it does not necessarily generate the smallest set, because it may not alter the elements order enough.
+ *
+ * @package util
+ *
+ * @param array $fileset set of filenames
+ * @param int $ps number of files in subsets
+ *
+ * @return array a part of $fileset, that crashes
+ */
+function reduce($fileset, $ps) {
+ //split array...
+ $parts=array_chunk($fileset, $ps);
+ //filter working subsets...
+ $parts=array_filter($parts, "runs");
+ //melt remaining parts together
+ if(is_array($parts)) {
+ return array_reduce($parts, "array_merge", array());
+ }
+ return array();
+};
+
+//return from util folder to frindica base dir
+$dir='..';
+
+//stack for dirs to search
+$dirstack=array();
+//list of source files
+$filelist=array();
+
+//loop over all files in $dir
+while($dh=opendir($dir)) {
+ while($file=readdir($dh)) {
+ if(is_dir($dir."/".$file)) {
+ //add to directory stack
+ if($file!=".." && $file!=".") {
+ array_push($dirstack, $dir."/".$file);
+ echo "dir ".$dir."/".$file."\n";
+ }
+ } else {
+ //test if it is a source file and add to filelist
+ if(substr($file, strlen($file)-4)==".php") {
+ array_push($filelist, $dir."/".$file);
+ echo $dir."/".$file."\n";
+ }
+ }
+ }
+ //look at the next dir
+ $dir=array_pop($dirstack);
+}
+
+//check the entire set
+if(runs($filelist)) {
+ echo "I can not detect a problem. \n";
+ exit;
+}
+
+//check half of the set and discard if that half is okay
+$res=$filelist;
+$i=0;
+do {
+ $i=count($res);
+ echo $i."/".count($fileset)." elements remaining. \n";
+ $res=reduce($res, count($res)/2);
+ shuffle($res);
+} while(count($res)<$i);
+
+//check one file after another
+$needed=array();
+
+while(count($res)!=0) {
+ $file=array_pop($res);
+
+ if(runs(array_merge($res, $needed))) {
+ echo "needs: ".$file." and file count ".count($needed);
+ array_push($needed, $file);
+ }
+}
+
+echo "\nSmallest Set is: ".namesList($needed)." with ".count($needed)." files. ";