diff options
Diffstat (limited to 'libmultimc/src/library.cpp')
-rw-r--r-- | libmultimc/src/library.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libmultimc/src/library.cpp b/libmultimc/src/library.cpp index 9d4cc6e3..691786e8 100644 --- a/libmultimc/src/library.cpp +++ b/libmultimc/src/library.cpp @@ -34,4 +34,48 @@ OpSys OpSys_fromString(QString name) return Os_OSX; return Os_Other; } + +void Library::finalize() +{ + QStringList parts = m_name.split ( ':' ); + QString relative = parts[0]; + relative.replace ( '.','/' ); + relative += '/' + parts[1] + '/' + parts[2] + '/' + parts[1] + '-' + parts[2]; + if ( !m_is_native ) + relative += ".jar"; + else + { + if ( m_native_suffixes.contains ( currentSystem ) ) + { + relative += "-" + m_native_suffixes[currentSystem] + ".jar"; + } + else + { + // really, bad. + relative += ".jar"; + } + } + m_storage_path = relative; + m_download_path = m_base_url + relative; + + if ( m_rules.empty() ) + { + m_is_active = true; + } + else + { + RuleAction result = Disallow; + for ( auto rule: m_rules ) + { + RuleAction temp = rule->apply ( this ); + if ( temp != Defer ) + result = temp; + } + m_is_active = ( result == Allow ); + } + if ( m_is_native ) + { + m_is_active = m_is_active && m_native_suffixes.contains ( currentSystem ); + } +} // default url for lib: |