]> Creatis software - bbtk.git/blobdiff - kernel/appli/bbRegeneratePackageDoc/bbRegeneratePackageDoc.cpp
Feature #1774
[bbtk.git] / kernel / appli / bbRegeneratePackageDoc / bbRegeneratePackageDoc.cpp
index c2e403fb3459bd865c8180616d47449dd60b9b39..0f74c0ec8503332d5a2a4e6f11288af33c37b04d 100644 (file)
@@ -1,3 +1,30 @@
+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ #                        pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ #  This software is governed by the CeCILL-B license under French law and
+ #  abiding by the rules of distribution of free software. You can  use,
+ #  modify and/ or redistribute the software under the terms of the CeCILL-B
+ #  license as circulated by CEA, CNRS and INRIA at the following URL
+ #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ #  or in the file LICENSE.txt.
+ #
+ #  As a counterpart to the access to the source code and  rights to copy,
+ #  modify and redistribute granted by the license, users are provided only
+ #  with a limited warranty  and the software's author,  the holder of the
+ #  economic rights,  and the successive licensors  have only  limited
+ #  liability.
+ #
+ #  The fact that you are presently reading this means that you have had
+ #  knowledge of the CeCILL-B license and that you accept its terms.
+ # ------------------------------------------------------------------------ */
+
+
 
 #include <bbtkWx.h>
 #include <bbtkInterpreter.h>
 //==========================================================================
 void RegenerateDoc ( bbtk::Package::Pointer p, std::string& doc_path )
 {
-       std::string pack_name(p->GetName());
-       std::string pack_path = doc_path + pack_name;
-       // Creating directory
-       if ( ! bbtk::Utilities::FileExists(pack_path) )
-       {
-               std::string command("mkdir \"" +pack_path+ "\"");
-               system( command.c_str() );
-       }
-       std::string pack_index(pack_path);
-       pack_index += bbtk::ConfigurationFile::GetInstance().Get_file_separator();
-       pack_index += "index.html";
+       
+  std::string pack_name(p->GetName());
+  std::string pack_path = doc_path + pack_name;
+  // Creating directory
+  if ( ! bbtk::Utilities::FileExists(pack_path) )
+    {
+      std::string command("mkdir \"" +pack_path+ "\"");
+      system( command.c_str() );
+    }
+  std::string pack_index(pack_path);
+  pack_index += bbtk::ConfigurationFile::GetInstance().Get_file_separator();
+  pack_index += "index.html";
+  
+  std::cout << "* Generating doc for package '"<<pack_name<<"' in "
+           << pack_index << std::endl;
+  
+  p->SetDocURL(pack_index);
+  p->SetDocRelativeURL("index.html");
+       
+       
+  p->CreateHtmlPage(pack_index,"bbtk",pack_name,"","",0,0,true); //true);
+       
+       
+}
+
 
-       std::cout << "* Generating doc for '"<<pack_name<<"' in "
-                         << pack_index << std::endl;
-                       
-       p->SetDocURL(pack_index);
-       p->SetDocRelativeURL("index.html");
-       p->CreateHtmlPage(pack_index,"bbtk",pack_name,"","",0,0,false); //true);
+void Usage()
+{
+  std::cout << "usage : bbRegeneratePackageDoc [<package name>|-a] [-q|-v]" 
+           << std::endl
+           << "        -a : All packages"<<std::endl
+           << "        -q : Quiet"<<std::endl
+           << "        -v : Verbose"<<std::endl;
 }
 
 //==========================================================================
 int main(int argc, char **argv)
 {
-       std::string pack("*");
-       if (argc==1)
-       {
-               /*
-               // TO DO : make a Wx app
-          wxString name = wxGetTextFromUser(_T("Enter package name (* for all)"),
-                            _T("Regenerate package doc"),
-                            _T(""));
-          if (name.IsEmpty()) return 0;
-          pack = bbtk::wx2std(name);
-       */
-       }
-       else if (argc==2) 
-       {
-               pack = std::string(argv[1]);
-       }
-       else 
+  std::string pack("-a");
+  if (argc==2) 
+    {
+      pack = std::string(argv[1]);
+    }
+  else if (argc==3)
+    {
+      pack = std::string(argv[1]);
+      std::string param(argv[2]);
+      if (param=="-q") bbtk::MessageManager::SetMessageLevel("max",0);
+      else if (param=="-v") bbtk::MessageManager::SetMessageLevel("all",9);
+      else 
        {
-               std::cout << "usage : bbRegeneratePackageDoc [package-name]" << std::endl;
-               return 0;
+         Usage();
+         return 0;
        }
-
-       try
+    }
+  else 
+    {
+      Usage();
+      return 0;
+    }
+  try
     {
                std::string doc_path = bbtk::ConfigurationFile::GetInstance().Get_doc_path();
-               doc_path += bbtk::ConfigurationFile::GetInstance().Get_file_separator();
-               doc_path += "bbdoc";
-               doc_path += bbtk::ConfigurationFile::GetInstance().Get_file_separator();
+      doc_path += bbtk::ConfigurationFile::GetInstance().Get_file_separator();
+      doc_path += "bbdoc";
+      doc_path += bbtk::ConfigurationFile::GetInstance().Get_file_separator();
+      bbtk::Interpreter::Pointer I = bbtk::Interpreter::New();
+      I->SetCommandLine(true);
+      I->SetThrow(false);
+//std::cout<<"JCP bbRegeneratePackageDoc.cpp  I->InterpretLine( exec freeze_no_error);"<<std::endl;
+         I->InterpretLine( "exec freeze_no_error");
+      if (pack != "-a") 
+       {
 
-               bbtk::Interpreter::Pointer I = bbtk::Interpreter::New();
-               I->SetCommandLine(true);
-               I->SetThrow(false);
-               I->InterpretLine( "exec freeze");
                I->InterpretLine( "include "+pack);
-               if (pack != "*") 
-               {
-                       I->InterpretLine( "include "+pack+"-appli");
-                       RegenerateDoc(I->GetExecuter()->GetFactory()->GetPackage(pack),doc_path);
-               }
-               else
-               {
-                       bbtk::Factory::PackageMapType::const_iterator i;
-                       for (i  = I->GetExecuter()->GetFactory()->GetPackageMap().begin();
-                               i != I->GetExecuter()->GetFactory()->GetPackageMap().end();
-                               ++i)
-                       {
-                               RegenerateDoc(i->second,doc_path);
-                       }
-               }
+               I->InterpretLine( "include "+pack+"-appli");
+               bbtk::Package::Pointer p = I->GetExecuter()->GetFactory()->GetPackage(pack);
+//std::cout<<"JCP bbRegeneratePackageDoc.cpp RegenerateDoc(I->GetExecuter()->GetFactory()->GetPackage(pack),doc_path);"<<std::endl;
+               RegenerateDoc(I->GetExecuter()->GetFactory()->GetPackage(pack),doc_path);
        }
-       catch (bbtk::Exception e)
+      else
        {
-               std::cout << "* ERROR : "<<e.GetErrorMessage()<<std::endl;
-               return 1;
+//std::cout<<"JCP bbRegeneratePackageDoc.cpp I->InterpretLine( include );"<<std::endl;
+               I->InterpretLine( "include *");
+               bbtk::Factory::PackageMapType::const_iterator i;
+         for (i  = I->GetExecuter()->GetFactory()->GetPackageMap().begin();
+              i != I->GetExecuter()->GetFactory()->GetPackageMap().end();
+              ++i)
+           {
+//std::cout<<" if (i->second->GetName()==user) continue;"<<std::endl;
+             if (i->second->GetName()=="user") continue;
+             RegenerateDoc(i->second,doc_path);
+           }
        }
+    }
+  catch (bbtk::Exception e)
+    {
+      std::cout << "* ERROR : "<<e.GetErrorMessage()<<std::endl;
+      return 1;
+    }
+    // JGRR & CM : this kills this never-ending process when it's supposed to! 
+    std::cout << "bbRegeneratePackageDoc has finished normally. It will be aborted on purpose."<< std::endl; 
+    abort();
+    // EO JGRR CM
        return 0;
 }
 //==========================================================================