|
|
Go to the documentation of this file.
42 std::cerr << "" << std::endl;
43 std::cerr << "flxinstall: " << rMessage << ": ERROR." << std::endl;
44 std::cerr << "" << std::endl;
48 std::cerr << "" << std::endl;
49 std::cerr << "utility to create/install/remove faudes-lua-extension "<< std::endl;
50 std::cerr << std::endl << "usage: " << std::endl;
51 std::cerr << "flxinstall <advanced options> <mode> <input-file(s)> <output-file/path>" << std::endl;
52 std::cerr << "with <mode> as follows:" << std::endl;
53 std::cerr << " -c create extension (*.flx file) from input files" << std::endl;
54 std::cerr << " -i install extension (*.flx file) to libFAUDES installation" << std::endl;
55 std::cerr << " -r remove extensions from libFAUDES installation" << std::endl;
56 std::cerr << " -x extract extension (*.flx file) to output directory" << std::endl;
57 std::cerr << " -t extract and test extension (*.flx file) to output directory" << std::endl;
58 std::cerr << std::endl;
59 std::cerr << "advanced options for non-standard target layout" << std::endl;
60 std::cerr << " -tbin <path> location of binaries, default $target/bin" << std::endl;
70std::string mXmlSeparator = "<!-- ================================================================================ -->";
113int SysCall( const std::string& cmd, const std::string& args, bool errmsg = true) {
114 std::string cmdline=cmd;
119 std::replace(cmdline.begin(), cmdline.end(), '/', '\\');
125 int sysret=std::system(cmdline.c_str());
126 if((sysret!=0) && errmsg) {
127 std::cerr << "flxinstall: syscall [[" << cmdline << "]] failed" << std::endl;
137 std::cerr << "flxinstall: creating dir \"" << dir << "\"" << std::endl;
140 std::cerr << "flxinstall: error while creating directory \"" << dir << "\"" << std::endl;
148 std::set < std::string > res;
149 for(std::set < std::string >::iterator fit=src.begin(); fit!=src.end(); fit++) {
150 if(*fit== "") continue;
151 if((*fit).at(0)== '.') continue;
163void Lua2ref( const std::string& rLuaFile, const std::string& rRefFile= "") {
166 std::cerr << "flxinstall: ignoring lua script \"" << rLuaFile << "\"" << std::endl;
170 std::string dst=rRefFile;
175 std::cerr << "flxinstall: converting lua script \"" << rLuaFile << "\"" << std::endl;
178 std::cerr << "flxinstall: error while converting lua script \"" << rLuaFile << "\"" << std::endl;
188void Python2ref( const std::string& rPythonFile, const std::string& rRefFile= "") {
191 std::cerr << "flxinstall: ignoring python script \"" << rPythonFile << "\"" << std::endl;
195 std::string dst=rRefFile;
200 std::cerr << "flxinstall: converting python script \"" << rPythonFile << "\"" << std::endl;
203 std::cerr << "flxinstall: error while converting python script \"" << rPythonFile << "\"" << std::endl;
213void Gen2ref( const std::string& rGenFile, const std::string& rRefFile= "") {
214 std::cerr << "flxinstall: converting generator file \"" << rGenFile << "\"" << std::endl;
217 std::string dst=rRefFile;
237 tw. WriteCharacterData( "<object type=\"image/svg+xml\" name=\"graph\" data=\""+bas+ ".svg\">\n");
239 tw. WriteCharacterData( "<img src=\"$genfile.png\" title=\"Click on image to download SVG formated file.\" />\n");
253 std::cerr << "flxinstall: error while converting generator \"" << rGenFile << "\"" << std::endl;
304 rTr. ReadBegin( "LuaFunctionDefinition",btag);
310 rTw. WriteEnd( "LuaFunctionDefinition");
313 rTr. ReadEnd( "LuaFunctionDefinition");
334 rTr. Streamp()->seekg(0, std::ios::end);
335 std::streampos last = rTr. Streamp()->tellg();
336 rTr. Streamp()->seekg(0, std::ios::beg);
337 std::streampos first = rTr. Streamp()->tellg();
338 size=( long int) last-first;
339 buffer = new char[last-first];
340 rTr. Streamp()->read(buffer, last-first);
342 } catch (std::ios::failure&) {
343 std::cerr << "flxinstall: io error when reading \"" << rTr. FileName() << "\": ERROR." << std::endl;
347 std::string bufferstr;
348 bufferstr.assign(buffer,size);
358 if(buffer!=0) delete[] buffer;
370 rTr. Streamp()->seekg(0, std::ios::end);
371 std::streampos last = rTr. Streamp()->tellg();
372 rTr. Streamp()->seekg(0, std::ios::beg);
373 std::streampos first = rTr. Streamp()->tellg();
374 size=( long int) last-first;
375 buffer = new char[last-first];
376 rTr. Streamp()->read(buffer, last-first);
378 } catch (std::ios::failure&) {
379 std::cerr << "flxinstall: io error when reading \"" << rTr. FileName() << "\": ERROR." << std::endl;
394 if(buffer!=0) delete[] buffer;
406 rTr. Streamp()->seekg(0, std::ios::end);
407 std::streampos last = rTr. Streamp()->tellg();
408 rTr. Streamp()->seekg(0, std::ios::beg);
409 std::streampos first = rTr. Streamp()->tellg();
410 size=( long int) last-first;
411 buffer = new char[last-first];
412 rTr. Streamp()->read(buffer, last-first);
414 } catch (std::ios::failure&) {
415 std::cerr << "flxinstall: io error when reading \"" << rTr. FileName() << "\": ERROR." << std::endl;
430 if(buffer!=0) delete[] buffer;
457 std::cerr << "flxinstall: scanning full generator image \"" << pbas << ".*\"" << std::endl;
463 if(! ((ext== "png") || (ext== "svg") || (ext== "jpeg") || (ext== "jpg") )) continue;
465 std::cerr << "flxinstall: scanning image file \"" << *fit << "\"" << std::endl;
475 std::cerr << "flxinstall: scanning luafunction \"" << *fit << "\"" << std::endl;
478 tr. ReadBegin( "LuaFunctionDefinition",btag);
480 std::cerr << "flxinstall: name not specified " << tr. FileLine() << ": ERROR." << std::endl;
487 size_t pos=name.find( "::");
488 if(pos!=std::string::npos) {
489 space=name.substr(0,pos);
490 name=name.substr(pos+2);
494 std::cerr << "flxinstall: namespace must match extension name" << tr. FileLine() << ": ERROR." << std::endl;
499 tr. ReadEnd( "LuaFunctionDefinition");
509 std::cerr << "flxinstall: scanning reference page \"" << *fit << "\"" << std::endl;
514 std::cerr << "flxinstall: page not specified " << tr. FileLine() << ": ERROR." << std::endl;
518 std::cerr << "flxinstall: title not specified " << tr. FileLine() << std::endl;
523 std::cerr << "flxinstall: chapter must be \"Reference\" " << tr. FileLine() << ": ERROR." << std::endl;
532 std::cerr << "flxinstall: section name \"" << mExtensionName << "\" expected "
533 << tr. FileLine() << ": ERROR." << std::endl;
537 std::transform(page.begin(), page.end(), page.begin(), tolower);
539 std::string ppage=page;
540 std::size_t upos = ppage.find_first_of( "_");
541 std::size_t dpos = 0;
542 for(; dpos < ppage.size();dpos++)
543 if(!isdigit(ppage.at(dpos))) break;
544 if(upos!=std::string::npos)
546 if(upos+1<ppage.size())
547 ppage=ppage.substr(upos+1,ppage.size()-upos-1);
550 std::cerr << "flxinstall: double page label \"" << ppage << "\" "
551 << tr. FileLine() << ": ERROR." << std::endl;
559 std::cerr << "flxinstall: missing index page, will be generated on installation." << std::endl;
590 std::cerr << "flxinstall: appending reference page from \"" << *fit << "\"" << std::endl;
591 *ptw << "\n" << "\n";
595 *ptw-> Streamp() << "<!-- reference page from source \"" << *fit << "\" -->" << std::endl;
602 std::cerr << "flxinstall: appending lua function from \"" << *fit << "\"" << std::endl;
603 *ptw << "\n" << "\n";
607 *ptw-> Streamp() << "<!-- lua function from source \"" << *fit << "\" -->" << std::endl;
614 std::cerr << "flxinstall: appending image/binary file from \"" << *fit << "\"" << std::endl;
615 *ptw << "\n" << "\n";
619 *ptw-> Streamp() << "<!-- binary file from source \"" << *fit << "\" -->" << std::endl;
626 std::cerr << "flxinstall: appending full generator from \"" << pbas << ".*\"" << std::endl;
627 *ptw << "\n" << "\n";
631 *ptw-> Streamp() << "<!-- full generator image from source \"" << pbas << ".*\" -->" << std::endl;
645 std::cerr << "flxinstall: appending tutorial from \"" << *fit << "\"" << std::endl;
646 *ptw << "\n" << "\n";
650 *ptw-> Streamp() << "<!-- tutorial from source \"" << *fit << "\" -->" << std::endl;
656 if(ext== "" && bas== "data") {
659 if(datafiles.size()==0) continue;
660 std::cerr << "flxinstall: appending data files \"" << *fit << "\"" << std::endl;
661 *ptw << "\n" << "\n";
665 *ptw-> Streamp() << "<!-- data from source \"" << *fit << "\" -->" << std::endl;
666 std::set< std::string >::iterator dit;
667 for(dit=datafiles.begin();dit!=datafiles.end();dit++) {
675 *ptw << "\n" << "\n";
689 std::cerr << "flxinstall: cannot open libfaudes binary path \"" << mFaudesBin << "\": ERROR." << std::endl;
695 if(binfiles.find( "luafaudes.exe")!= binfiles.end()) {
698 if(binfiles.find( "luafaudes")!= binfiles.end()) {
702 std::cerr << "flxinstall: warning: cannot open luafaudes in \"" << mFaudesBin << "\"" << std::endl;
712 if(faudesfiles.empty()) {
713 std::cerr << "flxinstall: cannot open target directory \"" << mFaudesBase << "\": ERROR." << std::endl;
719 if(faudesfiles.find( "bin")!= faudesfiles.end())
724 std::cerr << "flxinstall: cannot open libfaudes binary path \"" << mFaudesBin << "\": ERROR." << std::endl;
730 if(faudesfiles.find( "tools")!= faudesfiles.end())
735 std::cerr << "flxinstall: cannot open libfaudes tools path in \"" << mFaudesTools << "\": ERROR." << std::endl;
741 if(binfiles.find( "ref2html.exe")!= binfiles.end()) {
744 if(binfiles.find( "ref2html")!= binfiles.end()) {
748 std::cerr << "flxinstall: cannot open ref2html tool in \"" << mFaudesBin << "\": ERROR." << std::endl;
760 if(faudesfiles.find( "doc")!= faudesfiles.end()) {
762 } else if(faudesfiles.find( "Doc")!= faudesfiles.end()) {
764 } else if(faudesfiles.find( "Documentation")!= faudesfiles.end()) {
770 std::cerr << "flxinstall: cannot open libfaudes documentation path at \"" << mFaudesDoc << "\": ERROR." << std::endl;
780 if(docfiles.find( "reference")!= docfiles.end()) {
782 } else if(docfiles.find( "Reference")!= docfiles.end()) {
786 std::cerr << "flxinstall: cannot open libfaudes reference path in " <<
793 if(docfiles.find( "luafaudes")!= docfiles.end()) {
795 } else if(docfiles.find( "Luafaudes")!= docfiles.end()) {
805 std::cerr << "flxinstall: cannot find converter \"lua2ref.lua\"" << std::endl;
816 std::cerr << "flxinstall: cannot find converter \"lua2ref.pl\"" << std::endl;
822 if(docfiles.find( "pythonmod")!= docfiles.end()) {
824 } else if(docfiles.find( "PythonMod")!= docfiles.end()) {
834 std::cerr << "flxinstall: cannot find converter \"py2ref.pl\"" << std::endl;
840 std::cerr << "flxinstall: cannot process lua tutorial sources: ERROR." << std::endl;
843 std::cerr << "flxinstall: using \"" << mFaudesBinLua2ref << "\" to convert lua tutorials," << std::endl;
846 std::cerr << "flxinstall: using \"" << mFaudesBinPy2ref << "\" to convert python tutorials," << std::endl;
850 if(docfiles.find( "images")!= docfiles.end()) {
853 std::cerr << "flxinstall: cannot open images in \"" << mFaudesDoc << "\": ERROR." << std::endl;
858 if(docfiles.find( "refsrc")!= docfiles.end()) {
861 std::cerr << "flxinstall: cannot open refsrc in \"" << mFaudesDoc << "\": ERROR." << std::endl;
868 std::cerr << "flxinstall: cannot open libfaudes.rti at \"" << mFaudesDocRti << "\": ERROR." << std::endl;
876 std::cerr << "flxinstall: cannot open navigation file \"" << mFaudesDocNav << "\": ERROR." << std::endl;
881 if(docfiles.find( "tmp_flx")== docfiles.end()) {
882 std::cerr << "flxinstall: creating temp dir \"" << mFaudesDocTemp << "\"" << std::endl;
900 std::cerr << "flxinstall: lua-extension must have a name attribute " << rTr. FileLine() << ": ERROR." << std::endl;
905 while(!rTr. Eos( "LuaExtension")) {
919 std::string title= "libFAUDES Reference";
922 std::string chapter= "Reference";
925 std::string section= "";
932 if(page== "" || section== "") {
933 std::cerr << "flxinstall: skipping undefined page at " << rTr. FileLine() << std::endl;
939 std::transform(section.begin(), section.end(), section.begin(), tolower);
940 std::transform(page.begin(), page.end(), page.begin(), tolower);
942 std::string ppage=page;
943 std::size_t upos = ppage.find_first_of( "_");
944 std::size_t dpos = 0;
945 for(; dpos < ppage.size();dpos++)
946 if(!isdigit(ppage.at(dpos))) break;
947 if(upos!=std::string::npos)
949 if(upos+1<ppage.size())
950 ppage=ppage.substr(upos+1,ppage.size()-upos-1);
952 std::string basename= section + "_" + ppage;
955 std::string dstfile= PrependPath(rDstDir,basename + ".fref");
956 std::cerr << "flxinstall: extracting reference page to \"" << dstfile << "\"" << std::endl;
973 std::cerr << "flxinstall: lua-extension must have a name attribute " << rTr. FileLine() << ": ERROR." << std::endl;
978 while(!rTr. Eos( "LuaExtension")) {
995 std::cerr << "flxinstall: image file must specify name " << rTr. FileLine() << std::endl;
1001 if(ext!= "png" && ext!= "svg" && ext!= "jpg" && ext!= "jpeg") {
1009 std::cerr << "flxinstall: skipping invalid image data " << rTr. FileLine() << std::endl;
1014 std::transform(name.begin(), name.end(), name.begin(), tolower);
1016 std::cerr << "flxinstall: extracting image to \"" << dstfile << "\"" << std::endl;
1021 fsout.exceptions(std::ios::badbit|std::ios::failbit);
1023 fsout.open(dstfile.c_str(), std::ios::out | std::ios::binary);
1027 catch (std::ios::failure&) {
1028 std::cerr << "flxinstall: file io error when writing \"" << dstfile << "\"" << std::endl;
1041 std::cerr << "flxinstall: lua-extension must have a name attribute " << rTr. FileLine() << ": ERROR." << std::endl;
1046 while(!rTr. Eos( "LuaExtension")) {
1063 std::cerr << "flxinstall: image file must specify name " << rTr. FileLine() << std::endl;
1077 std::cerr << "flxinstall: skipping invalid image data " << rTr. FileLine() << std::endl;
1082 std::transform(name.begin(), name.end(), name.begin(), tolower);
1084 std::cerr << "flxinstall: extracting image to \"" << dstfile << "\"" << std::endl;
1089 fsout.exceptions(std::ios::badbit|std::ios::failbit);
1091 fsout.open(dstfile.c_str(), std::ios::out | std::ios::binary);
1095 catch (std::ios::failure&) {
1096 std::cerr << "flxinstall: file io error when writing \"" << dstfile << "\"" << std::endl;
1116 std::cerr << "flxinstall: lua-extension must have a name attribute " << rTr. FileLine() << ": ERROR." << std::endl;
1121 while(!rTr. Eos( "LuaExtension")) {
1139 size_t pos=name.find( "::");
1140 if(pos!=std::string::npos) {
1141 space=name.substr(0,pos);
1142 name=name.substr(pos+2);
1147 std::cerr << "flxinstall: skipping undefined lua function at " << rTr. FileLine() << std::endl;
1148 rTr. ReadBegin( "LuaFunctionDefinition",btag);
1149 rTr. ReadEnd( "LuafunctionDefinition");
1164 std::cerr << "flxinstall: extracting lua function \"" << name << "\"" << std::endl;
1167 *rTw. Streamp() << "<!-- lua function from lua-extension " << rTr. FileLine() << " -->" << std::endl;
1182 std::cerr << "flxinstall: lua-extension must have a name attribute " << rTr. FileLine() << ": ERROR." << std::endl;
1187 while(!rTr. Eos( "LuaExtension")) {
1203 std::cerr << "flxinstall: lua tutorial must specify name " << rTr. FileLine() << std::endl;
1208 std::transform(name.begin(), name.end(), name.begin(), tolower);
1210 std::cerr << "flxinstall: extracting lua tutorial to \"" << dstfile << "\"" << std::endl;
1223 std::transform(index.begin(), index.end(), index.begin(), tolower);
1226 std::cerr << "flxinstall: index page provided" << std::endl;
1231 std::cerr << "flxinstall: reference page missing: \"" << index << ".fref\": ERROR" << std::endl;
1235 std::cerr << "flxinstall: generate index page" << std::endl;
1237 *tw. Streamp() << "<!-- flxinstall " << VersionString() << ": auto generated index -->" << std::endl;
1239 "\" page=\"0_Index\" title=\""<< mExtensionName << " Index\" >" << std::endl;
1243 std::set< std::string >::iterator fit;
1245 *tw. Streamp() << "<ffnct_reference name=\"" << *fit << "\" />" << std::endl;
1248 *tw. Streamp() << "</ReferencePage>" << std::endl;
1266 for(std::set < std::string >::iterator fit=tmpfiles.begin(); fit!=tmpfiles.end(); fit++) {
1269 std::cerr << "flxinstall: failed to remove \"" << *fit << "\"" << std::endl;
1277 std::set< std::string > srcfiles;
1279 std::string sfile = *fit;
1281 srcfiles.insert(sfile);
1286 for(std::set < std::string >::iterator dit=sdir.begin();dit!=sdir.end();dit++) {
1288 srcfiles.insert(sfile);
1293 for(std::set < std::string >::iterator fit=srcfiles.begin(); fit!=srcfiles.end(); fit++) {
1299 std::cerr << "flxinstall: extracting lua-extension from \"" << *fit << "\"" << std::endl;
1322 std::cerr << "flxinstall: generating list of source files" << std::endl;
1325 std::set< std::string > tocsource;
1327 std::set< std::string > frefbase;
1331 std::set< std::string > docsource;
1333 for(std::set < std::string >::iterator fit=docrefsrc.begin(); fit!=docrefsrc.end(); fit++) {
1337 if(ext!= "fref") continue;
1338 if(frefbase.find(bas)!=frefbase.end()){
1339 std::cerr << "flxinstall: reference file doublet \"" << *fit << "\" from std dist: ERROR." << std::endl;
1342 docsource.insert(ffile);
1343 tocsource.insert(ffile);
1344 frefbase.insert(bas);
1348 std::set< std::string > docrefsource;
1350 for(std::set < std::string >::iterator fit=docrefsrcref.begin(); fit!=docrefsrcref.end(); fit++) {
1354 if(ext!= "fref") continue;
1355 if(frefbase.find(bas)!=frefbase.end()){
1356 std::cerr << "flxinstall: reference file doublet \"" << *fit << "\" from std dist: ERROR." << std::endl;
1359 docrefsource.insert(ffile);
1360 tocsource.insert(ffile);
1361 frefbase.insert(bas);
1364 for(std::set < std::string >::iterator fit=doctmpdir.begin(); fit!=doctmpdir.end(); fit++) {
1368 if(ext!= "fref") continue;
1369 if(frefbase.find(bas)!=frefbase.end()){
1370 std::cerr << "flxinstall: reference file doublet \"" << *fit << "\" from ext: ERROR." << std::endl;
1373 docrefsource.insert(ffile);
1374 tocsource.insert(ffile);
1375 frefbase.insert(bas);
1380 std::set< std::string > docluasource;
1382 for(std::set < std::string >::iterator fit=docrefsrclua.begin(); fit!=docrefsrclua.end(); fit++) {
1386 if(ext!= "fref") continue;
1387 if(frefbase.find(bas)!=frefbase.end()){
1388 std::cerr << "flxinstall: reference file doublet \"" << *fit << "\" from lua doc: ERROR." << std::endl;
1391 docluasource.insert(ffile);
1392 tocsource.insert(ffile);
1393 frefbase.insert(bas);
1396 for(std::set < std::string >::iterator fit=tmpfiles.begin(); fit!=tmpfiles.end(); fit++) {
1402 if(ext!= "lua") continue;
1405 if(tmpfiles.find(fref)!=tmpfiles.end()) continue;
1410 docluasource.insert(ffile);
1411 tocsource.insert(ffile);
1412 frefbase.insert(bas);
1417 std::set< std::string > docpythonsource;
1419 for(std::set < std::string >::iterator fit=docrefsrcpython.begin(); fit!=docrefsrcpython.end(); fit++) {
1423 if(ext!= "fref") continue;
1424 if(frefbase.find(bas)!=frefbase.end()){
1425 std::cerr << "flxinstall: reference file doublet \"" << *fit << "\" from python doc: ERROR." << std::endl;
1428 docpythonsource.insert(ffile);
1429 tocsource.insert(ffile);
1430 frefbase.insert(bas);
1434 std::set< std::string > docimgsource;
1436 for(std::set < std::string >::iterator fit=docrefsrcimg.begin(); fit!=docrefsrcimg.end(); fit++) {
1440 if(ext!= "fref") continue;
1441 docimgsource.insert(ffile);
1444 for(std::set < std::string >::iterator fit=imgfiles.begin(); fit!=imgfiles.end(); fit++) {
1450 if(ext!= "gen") continue;
1457 docimgsource.insert(ffile);
1462 std::string tocsrcs;
1463 for(std::set < std::string >::iterator fit=tocsource.begin(); fit!=tocsource.end(); fit++)
1464 tocsrcs+= " " + *fit;
1465 std::string tocargs =
1468 std::cerr << "flxinstall: creating toc" << std::endl;
1470 std::cerr << "flxinstall: error setting up toc: ERROR." << std::endl;
1473 std::cerr << "flxinstall: creating toc: done" << std::endl;
1477 std::string docsrcs;
1478 for(std::set < std::string >::iterator fit=docsource.begin(); fit!=docsource.end(); fit++) {
1479 docsrcs += " " + *fit;
1481 std::string docargs =
1485 std::cerr << "flxinstall: processing doc base" << std::endl;
1487 std::cerr << "flxinstall: error while processing doc base: ERROR." << std::endl;
1490 std::cerr << "flxinstall: processing doc base: done" << std::endl;
1493 std::string refsrcs;
1494 for(std::set < std::string >::iterator fit=docrefsource.begin(); fit!=docrefsource.end(); fit++) {
1495 refsrcs += " " + *fit;
1497 std::string refargs =
1501 std::cerr << "flxinstall: processing user reference" << std::endl;
1503 std::cerr << "flxinstall: error while processing user reference: ERROR." << std::endl;
1506 std::cerr << "flxinstall: processing user reference: done" << std::endl;
1510 std::string luasrcs;
1511 for(std::set < std::string >::iterator fit=docluasource.begin(); fit!=docluasource.end(); fit++) {
1512 luasrcs += " " + *fit;
1514 std::string luaargs=
1518 std::cerr << "flxinstall: processing lua tutorial" << std::endl;
1520 std::cerr << "flxinstall: error while processing lua tutorial: ERROR." << std::endl;
1523 std::cerr << "flxinstall: processing lua tutorial: done" << std::endl;
1529 for(std::set < std::string >::iterator fit=docpythonsource.begin(); fit!=docpythonsource.end(); fit++) {
1530 pysrcs += " " + *fit;
1536 std::cerr << "flxinstall: processing python tutorial" << std::endl;
1538 std::cerr << "flxinstall: error while processing python tutorial: ERROR." << std::endl;
1541 std::cerr << "flxinstall: processing python tutorial: done" << std::endl;
1546 std::cerr << "flxinstall: processing image files" << std::endl;
1548 std::set < std::string >::iterator fit=docimgsource.begin();
1549 while(fit!=docimgsource.end()) {
1550 std::string imgsrcs;
1551 for(; fit!=docimgsource.end(); fit++) {
1552 imgsrcs += " " + *fit;
1553 if(imgsrcs.length()>500) break;
1555 std::string imgargs =
1560 std::cerr << "flxinstall: error while processing image files: ERROR." << std::endl;
1564 std::cerr << "flxinstall: processing image files: done" << std::endl;
1571 std::string procargs=
1575 std::cerr << "flxinstall: fix html index " << std::endl;
1577 std::cerr << "flxinstall: error when processing index.html: ERROR." <<std::endl;
1585 std::string procargs=
1589 std::cerr << "flxinstall: fix html index " << std::endl;
1591 std::cerr << "flxinstall: error when processing index.html: ERROR." <<std::endl;
1599 std::string procargs=
1603 std::cerr << "flxinstall: fix html index " << std::endl;
1605 std::cerr << "flxinstall: error when processing index.html: ERROR." <<std::endl;
1613 std::string procargs=
1617 std::cerr << "flxinstall: fix html index " << std::endl;
1619 std::cerr << "flxinstall: error when processing index.html: ERROR." <<std::endl;
1633 std::cerr << "flxinstall: done" << std::endl;
1648 usage_exit( "extract must specify a *.flx source");
1654 std::cerr << "flxinstall: lua-extension must have a name attribute " << tr. FileLine() << ": ERROR." << std::endl;
1659 while(!tr. Eos( "LuaExtension")) {
1670 std::cerr << "flxinstall: skipping referencepage without page attribute" << std::endl;
1676 std::transform(page.begin(), page.end(), page.begin(), tolower);
1678 std::cerr << "flxinstall: extracting reference page to \"" << dstname << "\"" << std::endl;
1688 std::cerr << "flxinstall: skipping lua function without name attribute" << std::endl;
1694 size_t pos=name.find( "::");
1695 if(pos!=std::string::npos) name=name.substr(pos+2);
1696 name = name + ".rti";
1697 std::transform(name.begin(), name.end(), name.begin(), tolower);
1699 std::cerr << "flxinstall: extracting lua function to \"" << dstname << "\"" << std::endl;
1709 std::cerr << "flxinstall: skipping image file without name attribute" << std::endl;
1715 std::transform(name.begin(), name.end(), name.begin(), tolower);
1717 std::cerr << "flxinstall: extracting image file to \"" << dstname << "\"" << std::endl;
1727 fsout.exceptions(std::ios::badbit|std::ios::failbit);
1729 fsout.open(dstname.c_str(), std::ios::out | std::ios::binary);
1733 catch (std::ios::failure&) {
1734 std::cerr << "flxinstall: file io error when writing \"" << dstname << "\"" << std::endl;
1744 std::cerr << "flxinstall: skipping data file without name attribute" << std::endl;
1750 std::transform(name.begin(), name.end(), name.begin(), tolower);
1751 std::string dstname;
1754 std::cerr << "flxinstall: extracting data file to \"" << dstname << "\"" << std::endl;
1767 fsout.exceptions(std::ios::badbit|std::ios::failbit);
1769 fsout.open(dstname.c_str(), std::ios::out | std::ios::binary);
1772 } catch (std::ios::failure&) {
1773 std::cerr << "flxinstall: file io error when writing \"" << dstname << "\"" << std::endl;
1783 std::cerr << "flxinstall: skipping invalid data " << tr. FileLine() << std::endl;
1793 std::cerr << "flxinstall: skipping tutorial without name attribute" << std::endl;
1799 std::transform(name.begin(), name.end(), name.begin(), tolower);
1801 std::cerr << "flxinstall: extracting tutorial to \"" << dstname << "\"" << std::endl;
1824 std::cerr << "flxinstall: cannot execute luafaudes" << std::endl;
1829 std::set< std::string > luascripts;
1830 for(std::set < std::string >::iterator fit=allfiles.begin(); fit!=allfiles.end(); fit++)
1833 for(std::set < std::string >::iterator fit=luascripts.begin(); fit!=luascripts.end(); fit++) {
1835 std::string args = "-x " + mSourceFile + " " + *fit;
1837 std::cerr << "flxinstall: test case: " << mSourceFile << std::endl;
1840 std::cerr << "flxinstall: error while running lua script \"" << *fit << "\"" << std::endl;
1867 for(i=1; i<argc; i++) {
1868 std::string option(argv[i]);
1870 if(option== "-tdoc") {
1876 if(option== "-tbin") {
1882 if(option== "-trti") {
1888 if(option== "-tcnav") {
1894 if(option== "-tcss") {
1900 if(option== "-tapp") {
1930 if((option== "-?") || (option== "--help")) {
1936 if(option.at(0)== '-') {
1941 usage_exit( "must set either -c, -i, -r, -x or -t mode" );
1947 for(;i<argc-1;i++) {
1952 std::set< std::string > srcfiles = ReadDirectory(std::string(argv[i-1]));
1954 if(srcfiles.size()>0) {
1956 for(std::set < std::string >::iterator fit=srcfiles.begin(); fit!=srcfiles.end(); fit++)
1962 usage_exit( "target *.flx-file not specified");
1968 usage_exit( "target *.flx-file not specified");
1978 std::cerr << "flxinstall: no sources specified" << std::endl;
1980 for(;i<argc-1;i++) {
1985 std::set< std::string > srcfiles = ReadDirectory(std::string(argv[i-1]));
1987 if(srcfiles.size()>0) {
1989 for(std::set < std::string >::iterator fit=srcfiles.begin(); fit!=srcfiles.end(); fit++)
1997 usage_exit( "sources must be *.flx-files: "+ *fit);
2024 usage_exit( "source and destination must be specified");
2030 mTarget=std::string(argv[i++]);
2044 usage_exit( "source and temp dir must be specified");
2050 mTarget=std::string(argv[i++]);
2056 usage_exit( "target must be \".\" or \"./\"");
2059 if(curdir.size()!=0)
std::string FileLine(void) const
bool Eos(const std::string &rLabel)
void ReadVerbatim(const std::string &rLabel, std::string &rText)
void ReadEnd(const std::string &rLabel)
void ReadSection(std::string &rSectionString)
void ReadBegin(const std::string &rLabel)
std::istream * Streamp(void)
std::string FileName(void) const
void WriteText(const std::string &rText)
void WriteCharacterData(const std::string &rCharData)
void Write(Token &rToken)
std::ostream * Streamp(void)
void WriteEnd(const std::string &rLabel)
void WriteBinary(const char *pData, long int len)
void WriteVerbatim(Token &rBeginTag, const std::string &rText)
void WriteBegin(const std::string &rLabel)
bool IsBinary(void) const
const std::string & StringValue(void) const
bool ExistsAttributeString(const std::string &name)
void SetBegin(const std::string &rName)
void InsAttributeString(const std::string &name, const std::string &value)
const std::string & AttributeStringValue(const std::string &name)
std::set< std::string > mReferencePages
std::string mFaudesDocPythonmod
void Lua2ref(const std::string &rLuaFile, const std::string &rRefFile="")
void CreateExtensionFile(void)
int SysCall(const std::string &cmd, const std::string &args, bool errmsg=true)
std::string mFaudesBinPy2ref
std::string mFaudesDocCss
std::string mFaudesBinRef2html
std::set< std::string > mLuaFunctions
std::string mXmlSeparator
void ExtractExtensionFile(void)
void XtractLuaTutorials(TokenReader &rTr, const std::string &rDstDir)
std::string mFaudesBinLua2ref
std::string mFaudesDocNav
std::string mFaudesBinLuafaudes
std::string mFaudesDocRti
void XtractReferencePages(TokenReader &rTr, const std::string &rDstDir)
std::string mFaudesDocToc
void XtractLuaFunctions(TokenReader &rTr, TokenWriter &rTw)
std::string mFaudesDocTemp
std::string mFaudesDocReference
void InsertSection(TokenReader &rTr, TokenWriter &rTw, const std::string &mLabel)
void InsertDataFile(TokenReader &rTr, TokenWriter &rTw)
void DefaultIndexPage(const std::string &rDstDir)
std::set< std::string > EraseHiddenFiles(const std::set< std::string > &src)
std::string mFaudesDocImages
void Python2ref(const std::string &rPythonFile, const std::string &rRefFile="")
void InsertReferencePage(TokenReader &rTr, TokenWriter &rTw, const std::string mSection="")
void MakeDirectory(const std::string &rPath, const std::string &rDir="")
std::set< std::string > mSourceFiles
void InsertImageFile(TokenReader &rTr, TokenWriter &rTw)
void InstallExtensionFiles(void)
void XtractImageGenFiles(TokenReader &rTr, const std::string &rDstDir)
void XtractImageFiles(TokenReader &rTr, const std::string &rDstDir)
void usage_exit(const std::string &rMessage="")
std::string mFaudesBinLuaflx
std::string mExtensionName
std::string mFaudesDocRefsrc
void TestFaudesTarget(void)
void Gen2ref(const std::string &rGenFile, const std::string &rRefFile="")
std::set< std::string > mImageFiles
std::set< std::string > mGeneratorFiles
void InsertLuaFunction(TokenReader &rTr, TokenWriter &rTw)
void InsertPlainLuaTutorial(TokenReader &rTr, TokenWriter &rTw)
void InsertLuaTutorial(TokenReader &rTr, TokenWriter &rTw)
std::string mFaudesDocLuafaudes
std::string VersionString()
std::string ExtractDirectory(const std::string &rFullPath)
std::string PrependPath(const std::string &rLeft, const std::string &rRight)
bool FileCopy(const std::string &rFromFile, const std::string &rToFile)
bool FileDelete(const std::string &rFilename)
std::string ExtractFilename(const std::string &rFullPath)
std::set< std::string > ReadDirectory(const std::string &rDirectory)
std::string ExtractBasename(const std::string &rFullPath)
bool DirectoryExists(const std::string &rDirectory)
bool FileExists(const std::string &rFilename)
std::string ExtractSuffix(const std::string &rFullPath)
libFAUDES 2.34e
--- 2026.03.16
--- c++ api documentaion by doxygen
|