]> git.treefish.org Git - usetaglib.git/commitdiff
Extended and formated help. Added longhelp.
authorAlexander Schmidt <alex@treefish.org>
Sat, 7 Feb 2015 19:43:14 +0000 (20:43 +0100)
committerAlexander Schmidt <alex@treefish.org>
Sat, 7 Feb 2015 19:43:14 +0000 (20:43 +0100)
usetaglib.cpp

index e54b09e625ce5eaec11bd6985109f2af81f7f663..dbebaa85e6d3b4548533f3932596fb0a8000a07d 100644 (file)
@@ -109,35 +109,51 @@ int action_printAudio (const TagLib::FileRef f)
 
 void printHelp ()
 {  
-  cout << "Usage: usetaglib [ACTION]... [FILE]..." << endl;
-  cout << "Read and edit meta-data of audio formats supported by taglib." << endl;
-  cout << endl;
-  cout << "-h, --help   Show this help" << endl;
-  cout << endl;
-  cout << "ACTIONS" << endl;
-  cout << "  If multiple actions are specified they are executed in given order." << endl;
-  cout << endl;
-  cout << setfill(' ') << setw(37) << left << "  -l, --list"
-       << "list all tags (implicit if no action specified)"<< endl;
-  cout << setfill(' ') << setw(37) << left << "  -a, --listaudio"
-       << "show audio information"<< endl;
-  cout << setfill(' ') << setw(37) << left << "  -e, --erase=TAGNAME"
-       << "erase tag TAGNAME"<< endl;
-  cout << setfill(' ') << setw(37) << left << "  -r, --replace=TAGNAME=TAGVALSPEC"
-       << "replace tag TAGNAME with value TAGVALSPEC"<< endl;
-  cout << setfill(' ') << setw(37) << left << "  -i, --insert=TAGNAME=TAGVALSPEC"
-       << "insert value TAGVALSPEC for tag TAGNAME"<< endl;
-  cout << endl;
-  cout << "TAGVALSPEC" << endl;
-  cout << "  a list of values separated by '=': val1=val2=val3..." << endl;
-  cout << endl;
-  cout << "EXAMPLES" << endl;
-  cout << "  usetaglib file.ogg" << endl;
-  cout << "  usetaglib -e ALBUM file.flac" << endl;
-  cout << "  usetaglib -r \"ALBUM=New Album\" -i ARTIST=Horst=Hubert file.mp3" << endl;
-  cout << "  usetaglib -r ARTIST=Horst -l file1.ogg file2.mp3" << endl;
-  cout << "  usetaglib -i \"ALBUMARTIST=Horst und Hubert\" file.ogg" << endl;
-  cout << "  usetaglib --insert=\"ALBUMARTIST=Horst und Hubert\" file.ogg" << endl;
+  cout <<
+    "Usage: usetaglib [ACTION]... [FILE]...\n"    
+    "Read and edit meta-data of audio formats supported by taglib.\n"
+    "Multiple ACTIONS and FILES may be given in arbitrary order.\n"
+    "\n"
+    "-h, --help      show help\n"
+    "-H, --longhelp  show long help\n"
+    "\n"
+    "ACTIONS\n"
+    "  If multiple actions are specified they are executed in given order.\n"
+    "\n"
+    "  -l, --list                    list all tags (implicit if no action given)\n"
+    "  -a, --audio                   show audio information\n"
+    "  -e, --erase=TAGNAME           erase tag TAGNAME\n"
+    "  -r, --replace=TAGNAME=TAGVAL  replace tag TAGNAME with value TAGVAL\n"
+    "  -i, --insert=TAGNAME=TAGVAL   insert tag TAGNAME with value TAGVAL\n";
+}
+
+void printExtraHelp ()
+{
+  cout <<
+    "\n"
+    "TAGNAME\n"
+    "  TAGNAME is a media format independent id encoding the type of a tag.\n"
+    "  Note that also in --list output, format specific tag ids are translated\n"
+    "  to unified TAGNAMES.\n"
+    "\n"
+    "  Some \"well-known\" tags you might want to use are:\n"
+    "  TITLE ALBUM ARTIST ALBUMARTIST SUBTITLE TRACKNUMBER DISCNUMBER DATE\n"
+    "  ORIGINALDATE GENRE COMMENT TITLESORT ALBUMSORT ARTISTSORT\n"
+    "  ALBUMARTISTSORT COMPOSER LYRICIST CONDUCTOR REMIXER PERFORMER ISRC ASIN\n"
+    "  BPM COPYRIGHT ENCODEDBY MOOD COMMENT MEDIA LABEL CATALOGNUMBER BARCODE\n"
+    "\n"
+    "TAGVAL\n"
+    "  TAGVAL has to be either a single string or a list of strings separated\n"
+    "  by equal signs (=). If a list is given, multiple tags of type TAGNAME\n"
+    "  will be created and set to the respective values given in the list.\n"
+    "\n"
+    "EXAMPLES"
+    "  usetaglib file.ogg\n"
+    "  usetaglib -e ALBUM file.flac\n"
+    "  usetaglib -r \"ALBUM=New Album\" -i ARTIST=Horst=Hubert file.mp3\n"
+    "  usetaglib -r ARTIST=Horst -l file1.ogg file2.mp3\n"
+    "  usetaglib -i \"ALBUMARTIST=Horst und Hubert\" file.ogg\n"
+    "  usetaglib --insert=\"ALBUMARTIST=Horst und Hubert\" file.ogg\n";
 }
   
 int main(int argc, char *argv[])
@@ -150,8 +166,9 @@ int main(int argc, char *argv[])
       static struct option long_options[] =
         {
          {"help",      no_argument,       0, 'h'},
+         {"longhelp",  no_argument,       0, 'H'},
           {"list",      no_argument,       0, 'l'},
-         {"listaudio", no_argument,       0, 'a'},
+         {"audio",     no_argument,       0, 'a'},
           {"insert",    required_argument, 0, 'i'},
           {"erase",     required_argument, 0, 'e'},
           {"replace",   required_argument, 0, 'r'},
@@ -159,7 +176,7 @@ int main(int argc, char *argv[])
         };
 
       int option_index = 0;      
-      c = getopt_long (argc, argv, "hlai:e:r:",
+      c = getopt_long (argc, argv, "hHlai:e:r:",
                        long_options, &option_index);
 
       if (c == -1)
@@ -170,35 +187,32 @@ int main(int argc, char *argv[])
         case 0:
           if (long_options[option_index].flag != 0)
             break;
-
        case 'h':
          printHelp();
          return 0;
           break;
-         
+       case 'H':
+         printHelp();
+         printExtraHelp();
+         return 0;
+          break;
         case 'l':
          requestedActions.push_back( make_pair(LIST, "") );
           break;
-
        case 'a':
          requestedActions.push_back( make_pair(AUDIO, "") );
           break;
-
         case 'i':
          requestedActions.push_back( make_pair(INSERT, optarg) );
           break;
-
         case 'e':
          requestedActions.push_back( make_pair(ERASE, optarg) );
           break;
-
         case 'r':
          requestedActions.push_back( make_pair(REPLACE, optarg) );
           break;
-
         case '?':
           break;
-
         default:
           abort ();
         }
@@ -227,21 +241,17 @@ int main(int argc, char *argv[])
       case LIST:
        action_printTags(f, propmap);
        break;
-       
       case AUDIO:
        action_printAudio(f);
        break;
-       
       case ERASE:
        action_eraseTag(propmap, actit->second);
        FCHANGED = true;
        break;
-       
       case REPLACE:
        action_replaceTag(propmap, splitToTagPair(actit->second));
        FCHANGED = true;
        break;
-
       case INSERT:
        action_insertTag(propmap, splitToTagPair(actit->second));
        FCHANGED = true;