Browse Source

HPCC-13241 Add support for ESDL file extension

- Continue to support ecm extension
- Update usage statements
- #define relevant extensions

Signed-off-by: rpastrana <rodrigo.pastrana@lexisnexis.com>
rpastrana 10 years ago
parent
commit
b520c8fd99

+ 1 - 1
tools/esdlcmd-xml/esdl2xml.cpp

@@ -28,7 +28,7 @@ int gArgc = 0;
 void static usage(const char* programName)
 {
     printf("\nESDL Compiler\n\n");
-    printf("Usage:        %s [options] filename.ecm [<outdir>]\n", programName);
+    printf("Usage:        %s [options] filename.(ecm|esdl) [<outdir>]\n", programName);
     printf("Output:       (srcdir|<outdir>)/filename.xml\n\n");
 
     puts("Available options:");

+ 1 - 1
tools/esdlcmd-xml/esdl2xml.hpp

@@ -71,7 +71,7 @@ public:
                 IncludeInfo * ii;
                 for (ii=hc.includes;ii;ii=ii->next)
                 {
-                   subfile.setf("%s%s.ecm", srcDir.str(), ii->pathstr.str());
+                   subfile.setf("%s%s.%s", srcDir.str(), ii->pathstr.str(), ESDL_FILE_EXTENTION);
                    transform(subfile, outdir, out, outputIncludes);
                 }
             }

+ 5 - 5
tools/esdlcmd/esdl-publish.cpp

@@ -160,11 +160,11 @@ public:
     void usage()
     {
         printf("\nUsage:\n\n"
-                "esdl publish <servicename> <filename.ecm> [command options]\n\n"
-                "   <servicename>        The ESDL defined ESP service to publish\n"
-                "   <filename.ecm>       The ESDL file containing service definition\n"
+                "esdl publish <servicename> <filename.(ecm|esdl)> [command options]\n\n"
+                "   <servicename>               The ESDL defined ESP service to publish\n"
+                "   <filename.(ecm|esdl)>       The ESDL file containing service definition\n"
                 "Options (use option flag followed by appropriate value):\n"
-                "   --overwrite                    Overwrite the latest version of this ESDL Definition\n"
+                "   --overwrite                 Overwrite the latest version of this ESDL Definition\n"
                 );
 
         EsdlPublishCmdCommon::usage();
@@ -180,7 +180,7 @@ public:
 
        //First x parameter's order is fixed.
        //<servicename>
-       //<filename.ecm>       The ESDL file containing service definition\n"
+       //<filename.(ecm|esdl)>       The ESDL file containing service definition\n"
        for (int cur = 0; cur < 2 && !iter.done(); cur++)
        {
           const char *arg = iter.query();

+ 7 - 6
tools/esdlcmd/esdl2ecl.cpp

@@ -102,16 +102,16 @@ public:
 
             IPropertyTree *src = NULL;
 
-            if (stricmp(srcext,".ecm")==0)
+            if (stricmp(srcext,LEGACY_FILE_EXTENTION)==0 || stricmp(srcext,ESDL_FILE_EXTENTION)==0)
             {
-                fileName.append(".ecm");
+                fileName.append(srcext);
                 StringBuffer esxml;
                 EsdlCmdHelper::convertECMtoESXDL(fileName.str(), srcfile, esxml, false, true, true);
                 src = createPTreeFromXMLString(esxml, 0);
             }
-            else if (!srcext || !*srcext || stricmp(srcext, ".xml")==0)
+            else if (!srcext || !*srcext || stricmp(srcext, XML_FILE_EXTENTION)==0)
             {
-                fileName.append(".xml");
+                fileName.append(XML_FILE_EXTENTION);
                 src = createPTreeFromXMLFile(fileName.str(), false);
             }
             else
@@ -282,6 +282,7 @@ public:
         unsigned start = msTick();
         EsdlIndexedPropertyTrees trees;
         trees.loadFile(srcPath.str(), srcName.str(), srcExt.str(), NULL, optGenerateAllIncludes);
+        //trees.loadFile(srcPath.str(), srcName.str(), srcExt.str(), NULL, true);
         DBGLOG("Time taken to load ESDL files %u", msTick() - start);
 
         StringBuffer idxxml("<types><type name=\"StringArrayItem\" src=\"share\"/>");
@@ -325,7 +326,6 @@ public:
             Owned<IPropertyTreeIterator> files = trees.all->getElements("esxdl");
             ForEach(*files)
             {
-
                 IPropertyTree &file = files->query();
                 const char * filename = file.queryProp("@name");
                 StringBuffer xmlfile;
@@ -347,11 +347,12 @@ public:
                     toXML(file, xmlfile, 0,0);
 
                     //expandEsxdlForEclGeneration(trees, srcName.str());
-                    outputEcl(srcPath.str(), srcName.str(), optOutDirPath.get(), idxxml.str(), xmlfile); //rodrigo
+                    outputEcl(srcPath.str(), srcName.str(), optOutDirPath.get(), idxxml.str(), xmlfile);
                 }
             }
         }
 
+        DBGLOG("Time taken to translate ESDL files %u", msTick() - start);
         return 0;
     }
 

+ 2 - 2
tools/esdlcmd/esdlcmd_common.hpp

@@ -157,7 +157,7 @@ public:
             StringBuffer extension;
             StringBuffer filename;
             splitFilename(sourceFileName, NULL, NULL, &filename, &extension);
-            if (stricmp(extension.str(),".ecm")==0)
+            if (stricmp(extension.str(),LEGACY_FILE_EXTENTION)==0 || stricmp(extension.str(),ESDL_FILE_EXTENTION)==0)
             {
                 StringBuffer esxml;
                 EsdlCmdHelper::convertECMtoESXDL(sourceFileName, filename.str(), esxml, true, true, false);
@@ -187,7 +187,7 @@ public:
     static void convertECMtoESXDL(const char * filepath, const char * esxdlname, StringBuffer & esxml, bool recursive, bool verbose, bool outputincludes)
     {
         if (verbose)
-            fprintf(stdout,"Converting ecm file %s to XML\n", filepath);
+            fprintf(stdout,"Converting ESDL file %s to XML\n", filepath);
 
         Owned<Esdl2Esxdl> cmd = new Esdl2Esxdl(recursive, verbose);
         esxml.setf( "<esxdl name=\"%s\">", esxdlname);

+ 19 - 7
tools/esdlcomp/esdlcomp.cpp

@@ -31,8 +31,6 @@
 inline bool es_strieq(const char* s,const char* t) { return stricmp(s,t)==0; }
 
 //-------------------------------------------------------------------------------------------------------------
-#define ESDL "ESDL"
-
 extern FILE *yyin;
 extern int yyparse();
 
@@ -1100,17 +1098,31 @@ ESDLcompiler::ESDLcompiler(const char * sourceFile, bool generatefile, const cha
     methods=NULL;
     versions = NULL;
 
-    splitFilename(sourceFile, NULL, &srcDir, &name, NULL);
-
-
     filename = strdup(sourceFile);
     size_t l = strlen(filename);
 
+    StringBuffer ext;
+    splitFilename(sourceFile, NULL, &srcDir, &name, &ext);
+
     yyin = fopen(sourceFile, "rt");
     if (!yyin)
     {
-        fprintf(stderr, "Fatal Error: Cannot read %s\n",sourceFile);
-        exit(1);
+        fprintf(stderr, "Could not load: %s...\n",sourceFile);
+        StringBuffer alternateExtFilename(srcDir);
+        alternateExtFilename.append(name.str());
+
+        if (stricmp(ext.str(), ESDL_FILE_EXTENTION)==0)
+            alternateExtFilename.append(LEGACY_FILE_EXTENTION);
+        else
+            alternateExtFilename.append(ESDL_FILE_EXTENTION);
+
+        fprintf(stderr, "Attempting to re-load with alternate extension: %s\n",alternateExtFilename.str());
+        yyin = fopen(alternateExtFilename.str(), "rt");
+        if (!yyin)
+        {
+            fprintf(stderr, "Fatal Error: Could not read %s nor %s\n",sourceFile, alternateExtFilename.str());
+            exit(1);
+        }
     }
 
     packagename = es_gettail(sourceFile);

+ 3 - 0
tools/esdlcomp/esdlcomp.h

@@ -55,6 +55,9 @@ inline bool es_streq(const char* s, const char* t) {  return strcmp(s,t)==0; }
 #define PF_ESPSTRUCT    0x800
 #define PF_MASK        0x7fff
 
+#define LEGACY_FILE_EXTENTION ".ecm"
+#define ESDL_FILE_EXTENTION   ".esdl"
+#define XML_FILE_EXTENTION    ".xml"
 
 enum type_kind
 {