From 20733a0b5b67c3cef8e38a2bbcd6f7464afb2328 Mon Sep 17 00:00:00 2001
From: Robert Butora <robert.butora@inaf.it>
Date: Wed, 4 Sep 2024 13:56:41 +0300
Subject: [PATCH] vlkb header: adds support for wildcards (bash expansion) on
 fits-file

---
 .../engine/src/common/src/ast_frameset.cpp    |  2 +-
 data-access/engine/src/vlkb/src/ast.cpp       |  2 +-
 data-access/engine/src/vlkb/src/main.cpp      | 32 +++++++++++--------
 3 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/data-access/engine/src/common/src/ast_frameset.cpp b/data-access/engine/src/common/src/ast_frameset.cpp
index b540ea6..caffcc8 100644
--- a/data-access/engine/src/common/src/ast_frameset.cpp
+++ b/data-access/engine/src/common/src/ast_frameset.cpp
@@ -668,7 +668,7 @@ void ast::frameset::write2(std::string fits_pathname, int hdunum)
    while ( astFindFits( fchan, "%f", card, 1 ) )
    {
       if(0 ==string(card).compare(0,7,"WCSAXES")) continue; // writes this key after other existing CRxxx keys, which is illegal
-      cout << string(card) << endl;
+      cerr << string(card) << endl;
       hdr.update(card);
    }
 }
diff --git a/data-access/engine/src/vlkb/src/ast.cpp b/data-access/engine/src/vlkb/src/ast.cpp
index 5cdeeea..60c0583 100644
--- a/data-access/engine/src/vlkb/src/ast.cpp
+++ b/data-access/engine/src/vlkb/src/ast.cpp
@@ -114,7 +114,7 @@ int header_modif_coordsys(const string& skysys_str, const string& specsys_str, c
 
    for(unsigned int i=0; i<allHdus.size(); i++)
    {
-      cout << "HDU#" << i << endl;
+      cerr << "HDU#" << i << endl;
 
       fitsfiles::Hdu hd = allHdus.at(i);
 
diff --git a/data-access/engine/src/vlkb/src/main.cpp b/data-access/engine/src/vlkb/src/main.cpp
index 0fca146..741b14e 100644
--- a/data-access/engine/src/vlkb/src/main.cpp
+++ b/data-access/engine/src/vlkb/src/main.cpp
@@ -324,10 +324,10 @@ int cmd_header(int argc, char * argv[])
 {
    int rc;
 
-   if (!((argc == 2) || (argc == 3) || (argc == 4)))
+   if (argc < 2)
    {
       std::cerr
-         << "Usage:  header <filename.fits> <SkySystem> <SpecSystem>\n"
+         << "Usage:  header --sky=<SkySystem> --spec=<SpecSystem> <filename.fits>... \n"
          << "\n"
          << "Modify header for new coord system.\n"
          << "Arguments:\n"
@@ -337,24 +337,28 @@ int cmd_header(int argc, char * argv[])
    }
    else
    {
-      string pathname(argv[1]);
 
       string skySystem;
       string specSystem;
 
-      if(argc >= 3)
+      for(int i=1; i<argc; i++)
       {
-         skySystem = argv[2];
-      }
-      if(argc == 4)
-      {
-         specSystem = argv[3];
+         if(0 == (string(argv[i]).substr(0,2+3+1)).compare("--sky="))
+         {
+            skySystem = string(argv[i]).substr(2+3+1);
+         }
+         else if(0 == (string(argv[i]).substr(0,2+4+1)).compare("--spec="))
+         {
+            specSystem = string(argv[i]).substr(2+4+1);
+         }
+         else
+         {
+            string pathname(argv[i]);
+            cout << to_string(i) << " : " << pathname << endl;
+            rc = header_modif_coordsys(skySystem, specSystem, pathname);
+            std::cout << "header_modif_coordsys rc: " << rc << std::endl;
+         }
       }
-
-      cout << string{argv[0]} << ": " << pathname << " '" << skySystem  << "' " << specSystem << endl;
-
-      rc = header_modif_coordsys(skySystem, specSystem, pathname);
-      std::cout << "header_modif_coordsys rc: " << rc << std::endl;
       rc = EXIT_SUCCESS;
    }
    return rc;
-- 
GitLab