added flag to prevent the user from being prompted when uploading songs from a directory

This commit is contained in:
kdeng00
2019-11-12 22:07:44 -05:00
parent 996b84c25c
commit 7177b01a98
7 changed files with 90 additions and 47 deletions
+5 -4
View File
@@ -31,7 +31,8 @@ void printHelp()
cout<<"Required for upload\n";
cout<<"-s path of song\n";
cout<<"-sd directory where to search for songs to upload (Optional)\n";
cout<<"-sr directory where to recursively search for songs to upload (Optional)\n\n";
cout<<"-sr directory where to recursively search for songs to upload (Optional)\n";
cout<<"-nc will not prompt the user when uploading from a directory\n\n";
cout<<"Required for download\n";
cout<<"-b song id\n";
@@ -50,13 +51,13 @@ int main(int argc, char** argv)
if (argc < 2)
{
printHelp();
return 1;
return -1;
}
ActionManager actMgr{argv, argc};
ActionManager actMgr(argv, argc);
auto chosenAction = actMgr.retrieveIcarusAction();
CommitManager commitMgr{chosenAction};
CommitManager commitMgr(chosenAction);
commitMgr.commitAction();
return 0;
+30 -10
View File
@@ -8,6 +8,7 @@
using std::cout;
using std::endl;
using std::string;
using std::string_view;
using std::vector;
using Models::Flags;
@@ -27,14 +28,24 @@ namespace Managers
#pragma
IcarusAction ActionManager::retrieveIcarusAction() const
{
auto icarusAction = IcarusAction{};
IcarusAction icarusAction;
icarusAction.flags = flags;
icarusAction.action = action;
return icarusAction;
}
bool ActionManager::isNumber(string val)
constexpr std::array<const char*, 12> ActionManager::supportedFlags() noexcept
{
constexpr std::array<const char*, 12> allFlags{"-u", "-p", "-t", "-h", "-s",
"-sd", "-sr", "-d", "-D", "-b", "-rt", "-nc"};
return allFlags;
}
bool ActionManager::isNumber(string_view val) noexcept
{
return !val.empty() && std::find_if(val.begin(),
val.end(), [](char c)
@@ -59,8 +70,16 @@ namespace Managers
Flags flg{};
auto allSupportedFlags = supportedFlags();
for (auto flag : flagVals)
{
if (flag.compare("-nc") == 0)
{
flg.flag = flag;
flags.push_back(flg);
continue;
}
if (flag.size() > 3 || isNumber(flag))
{
flg.value = flag;
@@ -70,10 +89,10 @@ namespace Managers
continue;
}
if (std::any_of(supportedFlags.begin(), supportedFlags.end(),
[&](string& val)
if (std::any_of(allSupportedFlags.begin(), allSupportedFlags.end(),
[&](const char *val)
{
return !val.compare(flag);
return !flag.compare(val);
}))
{
//cout<<"flag "<<flag<<endl;
@@ -81,7 +100,7 @@ namespace Managers
}
else
{
cout<<"Action is not valid"<<endl;
cout<<"Flag is not valid"<<endl;
exit(1);
}
}
@@ -89,18 +108,19 @@ namespace Managers
vector<string> ActionManager::parsedFlags()
{
auto parsed = vector<string>{};
auto parsed = vector<string>();
for (auto i = 2; i < paramCount; ++i)
{
parsed.push_back(std::move(*(params + i)));
const std::string flag(std::move(*(params + i)));
parsed.push_back(std::move(flag));
}
return parsed;
}
#pragma
void ActionManager::printAction()
void ActionManager::printAction() noexcept
{
if (action.empty())
{
@@ -111,7 +131,7 @@ namespace Managers
cout<<"Action is "<<action<<endl;
}
}
void ActionManager::printFlags()
void ActionManager::printFlags() noexcept
{
cout<<"\nPrinting flags..."<<endl;
for (auto flag: flags)
+33 -9
View File
@@ -36,7 +36,7 @@ namespace Managers
#pragma
CommitManager::CommitManager(IcarusAction& icaAct) : icaAction(std::move(icaAct))
{ }
#pragma Constructors;
#pragma Constructors
#pragma
@@ -44,23 +44,42 @@ namespace Managers
{
auto action = icaAction.action;
cout<<"Commiting "<<action<<" action"<<endl;
switch (mapActions[action])
switch (mapActions()[action])
{
case deleteAct:
case ActionValues::deleteAct:
deleteSong();
break;
case downloadAct:
case ActionValues::downloadAct:
downloadSong();
break;
case retrieveAct:
case ActionValues::retrieveAct:
retrieveObjects();
break;
case uploadAct:
case ActionValues::uploadAct:
uploadSong();
break;
default:
break;
}
}
enum class ActionValues;
std::map<std::string, CommitManager::ActionValues>
CommitManager::mapActions() noexcept
{
const std::map<std::string, ActionValues> actions{
{"delete", ActionValues::deleteAct},
{"download", ActionValues::downloadAct},
{"retrieve", ActionValues::retrieveAct},
{"upload", ActionValues::uploadAct}
};
return actions;
}
Token CommitManager::parseToken(API api)
{
cout<<"fetching token"<<endl;
@@ -157,8 +176,9 @@ namespace Managers
}
void CommitManager::uploadSong()
{
bool uploadSingleSong = true;
bool recursiveDirectory = false;
auto uploadSingleSong = true;
auto recursiveDirectory = false;
auto noConfirm = false;
string songDirectory;
APIParser apiPrs{icaAction};
auto api = apiPrs.retrieveAPI();
@@ -186,6 +206,10 @@ namespace Managers
songDirectory = value;
uploadSingleSong = false;
recursiveDirectory = true;
}
else if (flag.compare("-nc") == 0)
{
noConfirm = true;
}
}
@@ -198,7 +222,7 @@ namespace Managers
else
{
cout<<"Uploading songs from " << songDirectory << endl;
upld.uploadSongsFromDirectory(token, songDirectory, recursiveDirectory);
upld.uploadSongsFromDirectory(token, songDirectory, noConfirm, recursiveDirectory);
}
}
#pragma Functions
+4 -4
View File
@@ -72,14 +72,14 @@ namespace Syncers
void Upload::uploadSongsFromDirectory(const Models::Token& token,
const std::string& directory,
bool recursive = false)
const bool noConfirm, bool recursive = false)
{
try
{
auto songs = retrieveAllSongsFromDirectory(directory, recursive);
auto confirmUpload = false;
auto confirmUpload = true;
while (true)
while (!noConfirm)
{
auto answer = 'a';
cout << "are you sure you want to upload " << songs.size() << " songs? [y/n]";
@@ -197,7 +197,7 @@ namespace Syncers
cout<<"Path: "<<song.songPath<<endl;
}
}
void Upload::printJsonData(json obj)
void Upload::printJsonData(const json& obj)
{
cout<<endl<<endl<<"JSon data: "<<endl;
cout<<"id: "<<obj["id"]<<endl;