summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2020-05-14 20:34:42 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2020-05-14 20:34:42 +0200
commit76a6f2de270a0a8ed8d44d137c86688ad42f1d11 (patch)
tree191809ed528f97387b01606d5ca801eea3dd30f3
parentdf2f941cd153443a46121111e3f3e685f9125c49 (diff)
Add metadata field validation to dgvalidator.
-rw-r--r--drumgizmo/dgvalidator.cc84
1 files changed, 71 insertions, 13 deletions
diff --git a/drumgizmo/dgvalidator.cc b/drumgizmo/dgvalidator.cc
index bc80a33..6fe1950 100644
--- a/drumgizmo/dgvalidator.cc
+++ b/drumgizmo/dgvalidator.cc
@@ -154,6 +154,7 @@ bool pathIsFile(const std::string& path)
int main(int argc, char* argv[])
{
bool no_audio{false};
+ bool no_metadata{false};
std::string hugin_filter;
unsigned int hugin_flags = 0;
@@ -304,7 +305,7 @@ int main(int argc, char* argv[])
{
WARN(drumkitloader, "Instrument file load error: '%s'",
audiofile->filename.data());
- logger(LogLevel::Warning, "Error loading audio file '" +
+ logger(LogLevel::Error, "Error loading audio file '" +
audiofile->filename + "' in the '" + instrument->getName() +
"' instrument");
parseerror = true;
@@ -319,7 +320,7 @@ int main(int argc, char* argv[])
if(!drumkitdom.metadata.image_map.empty() &&
drumkitdom.metadata.image.empty())
{
- logger(LogLevel::Warning, "Found drumkit image_map but no image,"
+ logger(LogLevel::Error, "Found drumkit image_map but no image,"
" so image_map will not be usable.");
image_error = true;
}
@@ -332,7 +333,7 @@ int main(int argc, char* argv[])
logger(LogLevel::Info, "Found drumkit image '" + image + "'");
if(!pathIsFile(image))
{
- logger(LogLevel::Warning, "Image file does not exist.");
+ logger(LogLevel::Error, "Image file does not exist.");
image_error = true;
}
else
@@ -341,7 +342,7 @@ int main(int argc, char* argv[])
GUI::Image img(image);
if(!img.isValid())
{
- logger(LogLevel::Warning, "Drumkit image, '" + image +
+ logger(LogLevel::Error, "Drumkit image, '" + image +
"', could not be loaded. Not a valid PNG image?");
image_error = true;
}
@@ -363,7 +364,7 @@ int main(int argc, char* argv[])
logger(LogLevel::Info, "Found drumkit image_map '" + image_map + "'");
if(!pathIsFile(image_map))
{
- logger(LogLevel::Warning, "Image map file does not exist.");
+ logger(LogLevel::Error, "Image map file does not exist.");
image_error = true;
}
else
@@ -372,7 +373,7 @@ int main(int argc, char* argv[])
GUI::Image image(image_map);
if(!image.isValid())
{
- logger(LogLevel::Warning, "Drumkit image_map, '" + image_map +
+ logger(LogLevel::Error, "Drumkit image_map, '" + image_map +
"', could not be loaded. Not a valid PNG image?");
image_error = true;
}
@@ -388,7 +389,7 @@ int main(int argc, char* argv[])
{
if(clickmap.colour.size() != 6)
{
- logger(LogLevel::Warning,
+ logger(LogLevel::Error,
"Clickmap colour field not the right length (should be 6).");
image_error = true;
continue;
@@ -416,7 +417,7 @@ int main(int argc, char* argv[])
if(!found)
{
- logger(LogLevel::Warning,
+ logger(LogLevel::Error,
"Clickmap colour '" + clickmap.colour +
"' not found in image_map.");
image_error = true;
@@ -425,7 +426,7 @@ int main(int argc, char* argv[])
catch(...)
{
// Not valid hex number
- logger(LogLevel::Warning,
+ logger(LogLevel::Error,
"Clickmap colour not a valid hex colour.");
image_error = true;
continue;
@@ -442,7 +443,7 @@ int main(int argc, char* argv[])
}
if(!found)
{
- logger(LogLevel::Warning,
+ logger(LogLevel::Error,
"Clickmap instrument '" + clickmap.instrument +
"' not found in drumkit.");
image_error = true;
@@ -456,16 +457,73 @@ int main(int argc, char* argv[])
// Check if the image and the image_map have same resolutions
if(image_size != image_map_size)
{
- logger(LogLevel::Warning,
+ logger(LogLevel::Error,
"Drumkit image and image_map does not have same resolution.");
image_error = true;
}
}
- if(parseerror || image_error)
+ // Check sanity of metadata values
+ bool metadata_error{false};
{
- logger(LogLevel::Warning, "Validator found errors.");
+ if(drumkitdom.metadata.version.empty())
+ {
+ logger(LogLevel::Error, "Missing version field.");
+ metadata_error = true;
+ }
+
+ if(drumkitdom.metadata.title.empty())
+ {
+ logger(LogLevel::Error, "Missing title field.");
+ metadata_error = true;
+ }
+
+ if(drumkitdom.metadata.license.empty())
+ {
+ logger(LogLevel::Error, "Missing license field.");
+ metadata_error = true;
+ }
+
+ if(drumkitdom.metadata.author.empty())
+ {
+ logger(LogLevel::Error, "Missing author field.");
+ metadata_error = true;
+ }
+
+ if(drumkitdom.metadata.email.empty())
+ {
+ logger(LogLevel::Error, "Missing email field.");
+ metadata_error = true;
+ }
+
+ if(!drumkitdom.metadata.logo.empty())
+ {
+ // Check if the image file exists
+ auto image = path + "/" + drumkitdom.metadata.logo;
+ logger(LogLevel::Info, "Found drumkit logo field '" + image + "'");
+ if(!pathIsFile(image))
+ {
+ logger(LogLevel::Error, "Image file does not exist.");
+ metadata_error = true;
+ }
+ else
+ {
+ // Check if the image_map can be loaded (is a valid png file)
+ GUI::Image img(image);
+ if(!img.isValid())
+ {
+ logger(LogLevel::Error, "Drumkit logo, '" + image +
+ "', could not be loaded. Not a valid PNG image?");
+ metadata_error = true;
+ }
+ }
+ }
+ }
+
+ if(parseerror || image_error || image_error)
+ {
+ logger(LogLevel::Error, "Validator found errors.");
return 1;
}