summaryrefslogtreecommitdiff
path: root/support/highlight/src/cli/main.h
diff options
context:
space:
mode:
Diffstat (limited to 'support/highlight/src/cli/main.h')
-rw-r--r--support/highlight/src/cli/main.h117
1 files changed, 117 insertions, 0 deletions
diff --git a/support/highlight/src/cli/main.h b/support/highlight/src/cli/main.h
new file mode 100644
index 0000000000..2839e5c9fd
--- /dev/null
+++ b/support/highlight/src/cli/main.h
@@ -0,0 +1,117 @@
+
+/*
+This file is part of Highlight.
+
+Highlight is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Highlight is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Highlight. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+
+#ifndef HIGHLIGHT_APP
+#define HIGHLIGHT_APP
+
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <vector>
+#include <map>
+#include <iomanip>
+#include <cassert>
+
+//#include "./dirstream0.4/dirstream.h"
+#include "cmdlineoptions.h"
+#include "configurationreader.h"
+#include "codegenerator.h"
+#include "help.h"
+#include "datadir.h"
+#include "version.h"
+#include "platform_fs.h"
+
+#define IO_ERROR_REPORT_LENGTH 5
+#define SHEBANG_CNT 12
+
+typedef map<string, string> StringMap;
+
+/// Main application class of the command line interface
+
+class HLCmdLineApp
+{
+
+ public:
+
+ HLCmdLineApp() {};
+ ~HLCmdLineApp() {};
+
+ /** Start application
+ \param argc Number of command line arguments
+ \param argv values of command line arguments
+ \return EXIT_SUCCESS or EXIT_FAILURE
+ */
+ int run ( const int argc, const char *argv[] );
+
+ private:
+
+ DataDir dataDir;
+ StringMap extensions;
+ StringMap scriptShebangs;
+ stringstream cin_bufcopy;
+
+ /** print version info*/
+ void printVersionInfo();
+
+ /** print configuration info*/
+ void printConfigInfo ( const string& );
+
+ /** print error message*/
+ void printBadInstallationInfo();
+
+ /** print input and output errors */
+ void printIOErrorReport ( unsigned int numberErrorFiles, vector<string> & fileList, const string &action );
+
+ /** list installed theme files
+ \return true if theme files were found
+ */
+ bool printInstalledThemes();
+
+ /** list installed language definition files
+ \return true if lang files were found
+ */
+ bool printInstalledLanguages();
+
+ /** print debug information
+ \param lang language definition
+ \param langDefPath path to language definition
+ */
+ void printDebugInfo ( const highlight::LanguageDefinition &lang,
+ const string &langDefPath );
+
+ string getFileSuffix ( const string &fileName );
+
+ string guessFileType ( const string &suffix, const string &inputFile="" );
+
+ int getNumDigits ( int i );
+
+ void printProgressBar ( int total, int count );
+ void printCurrentAction ( const string&outfilePath,
+ int total, int count, int countWidth );
+
+ bool readInputFilePaths ( vector<string> &fileList, string wildcard,
+ bool recursiveSearch );
+
+ string analyzeFile ( const string& file );
+ bool loadFileTypeConfig ( const string& name, StringMap* map, StringMap* shebangMap );
+
+};
+
+#endif