From 2f09bbfd6c30bd5faf749fc5a6f41caa7862048d Mon Sep 17 00:00:00 2001 From: Bernd Wachter Date: Wed, 10 Apr 2013 20:29:44 +0300 Subject: [PATCH] Allow arbitrary argument order for ssu ar --- libssu/ssurepomanager.cpp | 20 ++++++++++++++++---- rndssucli/rndssucli.cpp | 16 +++++++++++++++- rpm/ssu.changes | 3 +++ rpm/ssu.spec | 2 +- 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/libssu/ssurepomanager.cpp b/libssu/ssurepomanager.cpp index 83030a2..eef34ea 100644 --- a/libssu/ssurepomanager.cpp +++ b/libssu/ssurepomanager.cpp @@ -144,10 +144,22 @@ void SsuRepoManager::update(){ // ... and create all repositories required for this device foreach (const QString &repo, repos){ - QFile repoFile(QString("%1/ssu_%2_%3.repo") - .arg(ZYPP_REPO_PATH) - .arg(repo) - .arg(rndMode ? "rnd" : "release")); + QString repoFilePath = QString("%1/ssu_%2_%3.repo") + .arg(ZYPP_REPO_PATH) + .arg(repo) + .arg(rndMode ? "rnd" : "release"); + + if (url(repo, rndMode) == ""){ + // TODO, repositories should only be disabled if they're not required + // for this machine. For required repositories error is better + QTextStream qerr(stderr); + qerr << "Repository " << repo << " does not contain valid URL, skipping and disabling." << endl; + disable(repo); + QFile(repoFilePath).remove(); + continue; + } + + QFile repoFile(repoFilePath); if (repoFile.open(QIODevice::WriteOnly | QIODevice::Text)){ QTextStream out(&repoFile); diff --git a/rndssucli/rndssucli.cpp b/rndssucli/rndssucli.cpp index 241dd02..7d41626 100644 --- a/rndssucli/rndssucli.cpp +++ b/rndssucli/rndssucli.cpp @@ -100,6 +100,7 @@ void RndSsuCli::optMode(QStringList opt){ void RndSsuCli::optModifyRepo(int action, QStringList opt){ SsuRepoManager repoManager; QTextStream qout(stdout); + QTextStream qerr(stderr); if (opt.count() == 3){ switch(action){ @@ -125,7 +126,20 @@ void RndSsuCli::optModifyRepo(int action, QStringList opt){ break; } } else if (opt.count() == 4 && action == Add){ - repoManager.add(opt.at(2), opt.at(3)); + QString url, repo; + + if (opt.at(2).indexOf(QRegExp("[a-z]*://", Qt::CaseInsensitive)) == 0){ + url = opt.at(2); + repo = opt.at(3); + } else if (opt.at(3).indexOf(QRegExp("[a-z]*://", Qt::CaseInsensitive)) == 0){ + url = opt.at(3); + repo = opt.at(2); + } else { + qerr << "Invalid parameters for 'ssu ar': URL required." << endl; + return; + } + + repoManager.add(repo, url); repoManager.update(); uidWarning(); } diff --git a/rpm/ssu.changes b/rpm/ssu.changes index dd760a0..ffe6809 100644 --- a/rpm/ssu.changes +++ b/rpm/ssu.changes @@ -1,3 +1,6 @@ +* Wed Apr 10 2013 Bernd Wachter - 0.31.4 +- Allow arbitrary argument order for ssu ar + * Sat Apr 06 2013 Bernd Wachter - 0.31.3 - Add warning when updating repos as non-root to ssu cli - Rewrite repo files on flavour, release and mode changes diff --git a/rpm/ssu.spec b/rpm/ssu.spec index b324015..6f86f3e 100644 --- a/rpm/ssu.spec +++ b/rpm/ssu.spec @@ -1,5 +1,5 @@ Name: ssu -Version: 0.31.3 +Version: 0.31.4 Release: 1 Summary: SSU enabler for RND Group: System/Base