[calamares] Refactor argument-handling

- Move parameter handling out of main
 - Give -D an argument (log level)
This commit is contained in:
Adriaan de Groot 2018-02-20 07:41:37 -05:00
parent a1cbb161ee
commit de1710a9f3

View File

@ -35,6 +35,45 @@
#include <QDebug> #include <QDebug>
#include <QDir> #include <QDir>
static void
handle_args( CalamaresApplication& a )
{
QCommandLineOption debugOption( QStringList{ "d", "debug"},
"Also look in current directory for configuration. Implies -D8." );
QCommandLineOption debugLevelOption( QStringLiteral("D"),
"Verbose output for debugging purposes (0-8).", "level" );
QCommandLineOption configOption( QStringList{ "c", "config"},
"Configuration directory to use, for testing purposes.", "config" );
QCommandLineParser parser;
parser.setApplicationDescription( "Distribution-independent installer framework" );
parser.addHelpOption();
parser.addVersionOption();
parser.addOption( debugOption );
parser.addOption( debugLevelOption );
parser.addOption( configOption );
parser.process( a );
a.setDebug( parser.isSet( debugOption ) );
if ( parser.isSet( debugOption ) )
Logger::setupLogLevel( Logger::LOGVERBOSE );
else if ( parser.isSet( debugLevelOption ) )
{
bool ok = true;
int l = parser.value( debugLevelOption ).toInt( &ok );
unsigned int dlevel = 0;
if ( !ok || ( l < 0 ) )
dlevel = Logger::LOGVERBOSE;
else
dlevel = l;
Logger::setupLogLevel( dlevel );
}
if ( parser.isSet( configOption ) )
CalamaresUtils::setAppDataDir( QDir( parser.value( configOption ) ) );
}
int int
main( int argc, char* argv[] ) main( int argc, char* argv[] )
{ {
@ -59,28 +98,7 @@ main( int argc, char* argv[] )
a.setApplicationDisplayName( QString() ); a.setApplicationDisplayName( QString() );
#endif #endif
QCommandLineParser parser; handle_args( a );
parser.setApplicationDescription( "Distribution-independent installer framework" );
parser.addHelpOption();
parser.addVersionOption();
QCommandLineOption debugOption( QStringList{ "d", "debug"},
"Also look in current directory for configuration. Implies -D." );
parser.addOption( debugOption );
parser.addOption( QCommandLineOption( QStringLiteral("D"),
"Verbose output for debugging purposes." ) );
QCommandLineOption configOption( QStringList{ "c", "config"},
"Configuration directory to use, for testing purposes.", "config" );
parser.addOption( configOption );
parser.process( a );
a.setDebug( parser.isSet( debugOption ) );
if ( parser.isSet( configOption ) )
CalamaresUtils::setAppDataDir( QDir( parser.value( configOption ) ) );
KDSingleApplicationGuard guard( KDSingleApplicationGuard::AutoKillOtherInstances ); KDSingleApplicationGuard guard( KDSingleApplicationGuard::AutoKillOtherInstances );
int returnCode = 0; int returnCode = 0;