[libcalamares] Better type for the list of InstanceKeys

- *sequence* lists module instance keys; make the stored type of
  those keys InstanceKey instead of QString
main
Adriaan de Groot 4 years ago
parent b23dbd47c7
commit 253e5610af

@ -210,7 +210,13 @@ interpretSequence( const YAML::Node& node, Settings::ModuleSequence& moduleSeque
}
QStringList thisActionRoster = sequenceVListItem.toMap().value( thisActionS ).toStringList();
moduleSequence.append( qMakePair( thisAction, thisActionRoster ) );
Calamares::ModuleSystem::InstanceKeyList roster;
roster.reserve( thisActionRoster.count() );
std::transform( thisActionRoster.constBegin(),
thisActionRoster.constEnd(),
std::back_inserter( roster ),
[]( const QString& s ) { return Calamares::ModuleSystem::InstanceKey::fromString( s ); } );
moduleSequence.append( qMakePair( thisAction, roster ) );
}
}
else
@ -262,24 +268,23 @@ Settings::validateSequence()
// Check the sequence against the existing instances (which so far are only custom)
for ( const auto& step : m_modulesSequence )
{
for ( const auto& instance : step.second )
for ( const auto& instanceKey : step.second )
{
Calamares::ModuleSystem::InstanceKey k = Calamares::ModuleSystem::InstanceKey::fromString( instance );
if ( !k.isValid() )
if ( !instanceKey.isValid() )
{
cWarning() << "Invalid instance key in *sequence*," << instance;
cWarning() << "Invalid instance key in *sequence*," << instanceKey;
continue;
}
targetKey = k;
targetKey = instanceKey;
const auto it = std::find_if( m_moduleInstances.constBegin(), m_moduleInstances.constEnd(), moduleFinder );
if ( it == m_moduleInstances.constEnd() )
{
if ( k.isCustom() )
if ( instanceKey.isCustom() )
{
cWarning() << "Custom instance key" << instance << "is not listed in the *instances*";
cWarning() << "Custom instance key" << instanceKey << "is not listed in the *instances*";
}
m_moduleInstances.append( InstanceDescription( k ) );
m_moduleInstances.append( InstanceDescription( instanceKey ) );
}
}
}

@ -110,7 +110,7 @@ public:
*/
InstanceDescriptionList moduleInstances() const;
using ModuleSequence = QList< QPair< ModuleSystem::Action, QStringList > >;
using ModuleSequence = QList< QPair< ModuleSystem::Action, Calamares::ModuleSystem::InstanceKeyList > >;
/** @brief Representation of *sequence* of execution
*
* Each "section" of the *sequence* key in `settings.conf` gets an

@ -22,6 +22,7 @@
#define MODULESYSTEM_INSTANCEKEY_H
#include <QDebug>
#include <QList>
#include <QPair>
#include <QString>
@ -96,6 +97,8 @@ private:
}
};
using InstanceKeyList = QList< InstanceKey >;
QDebug& operator<<( QDebug& s, const Calamares::ModuleSystem::InstanceKey& i );
} // namespace ModuleSystem

Loading…
Cancel
Save