fb-doc  0.4.0
FreeBASIC documentation tool
fbdoc_main.bas
Go to the documentation of this file.
1 
7 
8 #INCLUDE ONCE "fbdoc_options.bi"
9 #INCLUDE ONCE "fbdoc_version.bi"
10 #INCLUDE ONCE "fbdoc_emit_lfn.bi"
11 
12 
13 
14 #DEFINE MSG_HELP _
15  "Command line tool for generating documentation from FreeBASIC source code." & NL & NL & _
16  "Usage" & NL & _
17  " " & FBDOC_BINARY & " [Options] [file specs]" & NL & NL & _
18  "Options:" & NL & _
19  " -h (--help) : print this help text and stop" & NL & _
20  " -v (--version) : print version information and stop" & NL & _
21  " none : file in --> STDOUT" & NL & _
22  " -f (--file-mode) : file in --> file out" & NL & _
23  " -g (--geany-mode) : STDIN --> STDOUT" & NL & _
24  " -l (--list-mode) : Doxgfile inputs --> fb-doc.lfn" & NL & _
25  " -s (--syntax-mode) : scan doxygen output, repair syntax highlighting" & NL & _
26  " -a (--asterix) : prepend '* ' in ML comments (gtk-doc style)" & NL & _
27  " -c (--cstyle) : emit real C types" & NL & _
28  " -d (--doc-comment) : force documentational comments in listings" & NL & _
29  " -e (--emitter) : specify emitter name" & NL & _
30  " -o (--outpath) : specify output directory" & NL & _
31  " -r (--recursiv) : scan input files also in subfolders" & NL & _
32  " -t (--tree) : scan source tree (follow #INCLUDEs)" & NL & _
33  "Examples:" & NL & _
34  " " & FBDOC_BINARY & " --geany-mode" & NL & _
35  " Get input from STDIN, prepend a matching comment block, emit to STDOUT" & NL & _
36  " (emits gtk-doc templates for ENUM, UNION, TYPE, SUB, FUNCTION, PROPERTY)" & NL & _
37  " " & FBDOC_BINARY & " -f -t MyProject.bas" & NL & _
38  " Load MyProject.bas from current folder and follow source tree" & NL & _
39  " emit pseudo C code in ../c_src" & NL & _
40  "For details see file 'ReadMe.txt' or visit:" & NL & _
41  " http://www.freebasic.net/forum/viewtopic.php?f=8&t=19810 (en)" & NL
42 
43 
44 #DEFINE MSG_WELCOME _
45  "version " & PROJ_VERS & ", License GPLv3" & NL & _
46  " Copyright (C) 2012-" & PROJ_YEAR & " by " & PROJ_MAIL & NL
47 
48 
49 #DEFINE MSG_VERSION _
50  " Compiled: " & __DATE__ & ", " & __TIME__ & " for " & _
51  FBDOC_TARGET & ". (" & __FB_SIGNATURE__ & ")" & NL
52 
53 #IFDEF __FB_UNIX__
54 
55  #DEFINE FBDOC_TARGET "UNIX/LINUX"
56 
57  #DEFINE FBDOC_BINARY PROJ_NAME
58 #ELSE
59 '&/*
60  #DEFINE FBDOC_TARGET "win/dos"
61  #DEFINE FBDOC_BINARY PROJ_NAME & ".exe"
62 '&*/
63 #ENDIF
64 
65 
66 
73 '&int main () { /* dummy function and calls for Doxygen */
74 '&Parser.StdIn(); Options.FileModi()
75 
76 OPT = NEW Options()
77 WITH *.OPT
78  IF .Efnr THEN
79  SELECT CASE AS CONST .parseCLI()
80  CASE .ERROR_MESSAGE : ERROUT("Invalid command line (" & MID(.Errr, 3) & ")")
81  CASE .HELP_MESSAGE : ERROUT(MSG_WELCOME & MSG_HELP)
82  CASE .VERSION_MESSAGE : ERROUT(MSG_WELCOME & MSG_VERSION)
83  CASE .GEANY_MODE
84  .InTree = 0 ' ignore user setting
85  .Ocha = FREEFILE
86  OPEN CONS FOR OUTPUT AS #.Ocha
87  IF .EmitIF->CTOR_ THEN .EmitIF->CTOR_(OPT)
88  .Pars->StdIn()
89  IF .EmitIF->DTOR_ THEN .EmitIF->DTOR_(OPT)
90  CLOSE #.Ocha
91  CASE ELSE
92  .FileModi()
93  END SELECT
94  DELETE .EmitIF
95  END IF
96 END WITH
97 
98 DELETE OPT
99 
100 '&}
101