Updating required flags for uploading a song with metadata
This commit is contained in:
kdeng00
2021-12-31 22:15:17 -05:00
parent 14d3c9acc6
commit 3e25dd77b5
11 changed files with 240 additions and 64 deletions
+43 -11
View File
@@ -19,26 +19,58 @@ namespace Managers
Models::IcarusAction retrieveIcarusAction() const;
private:
constexpr std::array<const char*, 15> supportedFlags() noexcept
constexpr std::array<const char*, 16> supportedFlags() noexcept
{
constexpr std::array<const char*, 15> allFlags{"-u", "-p", "-t", "-h", "-s",
constexpr std::array<const char*, 16> allFlags{"-u", "-p", "-t", "-h", "-s",
"-sd", "-sr", "-d", "-D", "-b", "-rt", "-nc",
"-m", "-ca", "-smca"};
"-m", "-ca", "-smca", "-t"};
return allFlags;
}
constexpr std::array<const char*, 4> supportedActions() noexcept;
bool isNumber(const std::string_view val) noexcept
{
return !val.empty() && std::find_if(val.begin(),
val.end(), [](char c)
{
return !std::isdigit(c);
}) == val.end();
}
void initialize();
void validateFlags();
// Checks to see if the flag is valid
template<typename Str>
bool isValidFlag(const Str flag)
{
const auto flags = supportedFlags();
const auto i = std::find_if(flags.begin(), flags.end(), [&](const Str &f)
{
return f.compare(flag) == 0 ? true : false;
});
auto result = i != flags.end() ? true : false;
return result;
}
template<typename Str>
bool doesFlagHaveValue(const Str flag)
{
const auto flags = parsedFlags();
auto i = std::find_if(flags.begin(), flags.end(), [&](const Str &f)
{
return f.compare(flag) == 0 ? true : false;
});
if (i != flags.end())
{
if (++i != flags.end() && !isValidFlag<Str>(*i))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
std::vector<std::string> parsedFlags();
+10 -1
View File
@@ -60,9 +60,18 @@ namespace Managers
//
// Expects
// * Song - mp3 file path
// * TrackID - track number to chose from when retrieving metadata. "1" and "1:1" are similar
// * Metadata - Source file containing metadata of the song
// * Cover art - path to image cover art
void uploadSingleSong();
// TODO: Change the name
void uploadSongWithMetadata();
// Expects the song path, trackID, metadata file path, and cover path
void singTargetUpload(const std::string &songPath, const std::string &trackID,
const std::string &metaPath, const std::string &coverPath);
// Expects the source directory that contains songs, a metadata file, and cover image
void multiTargetUpload(const std::string &sourcePath);
// Checks for the no confirm flag. Used when uploading songs from a directory
bool checkForNoConfirm()