this updates issues that were addressed by people in pr
This commit is contained in:
parent
429154b74c
commit
0312d30315
3 changed files with 14 additions and 13 deletions
|
@ -157,15 +157,10 @@ void deleteGenerations(const Path & profile, const std::set<unsigned int> & gens
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void deleteGenerationsGreaterThan(const Path & profile, const string & max, bool dryRun)
|
void deleteGenerationsGreaterThan(const Path & profile, int max, bool dryRun)
|
||||||
{
|
{
|
||||||
int max_keep = 0;
|
int max_keep = 0;
|
||||||
PathLocks lock;
|
PathLocks lock;
|
||||||
if(max.size() < 2)
|
|
||||||
throw Error(format("invalid number of generations ‘%1%’") % max);
|
|
||||||
string str_max = string(max, 1, max.size());
|
|
||||||
if (!string2Int(str_max, max_keep) || max_keep == 0)
|
|
||||||
throw Error(format("invalid number of generations to keep ‘%1%’") % max);
|
|
||||||
|
|
||||||
lockProfile(lock, profile);
|
lockProfile(lock, profile);
|
||||||
|
|
||||||
|
@ -173,11 +168,11 @@ void deleteGenerationsGreaterThan(const Path & profile, const string & max, bool
|
||||||
Generations gens = findGenerations(profile, curGen);
|
Generations gens = findGenerations(profile, curGen);
|
||||||
|
|
||||||
for (auto i = gens.rbegin(); i != gens.rend(); ++i) {
|
for (auto i = gens.rbegin(); i != gens.rend(); ++i) {
|
||||||
if (max_keep) {
|
if (max) {
|
||||||
max_keep--;
|
max--;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
deleteGeneration2(profile, i->number, dryRun);
|
deleteGeneration2(profile, i->number, dryRun);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ void deleteGeneration(const Path & profile, unsigned int gen);
|
||||||
|
|
||||||
void deleteGenerations(const Path & profile, const std::set<unsigned int> & gensToDelete, bool dryRun);
|
void deleteGenerations(const Path & profile, const std::set<unsigned int> & gensToDelete, bool dryRun);
|
||||||
|
|
||||||
void deleteGenerationsGreaterThan(const Path & profile, const string & max, bool dryRun);
|
void deleteGenerationsGreaterThan(const Path & profile, const int max, bool dryRun);
|
||||||
|
|
||||||
void deleteOldGenerations(const Path & profile, bool dryRun);
|
void deleteOldGenerations(const Path & profile, bool dryRun);
|
||||||
|
|
||||||
|
|
|
@ -1285,7 +1285,13 @@ static void opDeleteGenerations(Globals & globals, Strings opFlags, Strings opAr
|
||||||
} else if (opArgs.size() == 1 && opArgs.front().find('d') != string::npos) {
|
} else if (opArgs.size() == 1 && opArgs.front().find('d') != string::npos) {
|
||||||
deleteGenerationsOlderThan(globals.profile, opArgs.front(), globals.dryRun);
|
deleteGenerationsOlderThan(globals.profile, opArgs.front(), globals.dryRun);
|
||||||
} else if (opArgs.size() == 1 && opArgs.front().find('+') != string::npos) {
|
} else if (opArgs.size() == 1 && opArgs.front().find('+') != string::npos) {
|
||||||
deleteGenerationsGreaterThan(globals.profile, opArgs.front(), globals.dryRun);
|
if(opArgs.front().size() < 2)
|
||||||
|
throw Error(format("invalid number of generations ‘%1%’") % opArgs.front());
|
||||||
|
string str_max = string(opArgs.front() 1, opArgs.front().size());
|
||||||
|
int max;
|
||||||
|
if (!string2Int(str_max, max) || max == 0)
|
||||||
|
throw Error(format("invalid number of generations to keep ‘%1%’") % opArgs.front());
|
||||||
|
deleteGenerationsGreaterThan(globals.profile, max, globals.dryRun);
|
||||||
} else {
|
} else {
|
||||||
std::set<unsigned int> gens;
|
std::set<unsigned int> gens;
|
||||||
for (auto & i : opArgs) {
|
for (auto & i : opArgs) {
|
||||||
|
|
Loading…
Reference in a new issue