With its Command Line Interface (CLI), Hackolade truly supports an agile development approach leveraging the flexibility of NoSQL dynamic schemas.  Some Hackolade customers use this capability nightly in a batch process to identify attributes and structures that may have appeared in the data since the last run.  During a nightly run of the reverse-engineering function, a much larger dataset can be queried as a basis for document sampling, hence making schema inference more precise. Such capability can be useful in a data governance context to properly document the semantics and publish a thorough data dictionary for end users.  It can also be used in the context of compliance with privacy laws to make sure that the company does not store data that it is not supposed to store.  There are many more examples of how to use this functionality.


It is easier to run the CLI from the directory where the Hackolade executable is installed, from a terminal program:

  • Windows:
    • cmd command line: all commands below should be preceded by start /wait
    • PowerShell: all commands below should be preceded by Start-Process -wait
  • Mac and Linux: terminal emulator or common shell programs:
    • all commands below should be preceded by open and contain --args and possibly use the -W flag, e.g.:
      • open Hackolade.app -W --args obfusc --sourcemodel=/fullpathtofile/model.json --targetmodel=/fullpathtofile/model_obf.json


To take full advantage of the capability, you may run the CLI from scheduled batch files.  


Note: a properly licensed copy of Hackolade is required to run the CLI.  The CLI functionality is only available in the Professional and Trial editions of Hackolade.


Below is the current list of Hackolade CLI commands.  Additional commands may be added at a later date.

Command

Purpose

genDoc

Generate documentation for a Hackolade model, either in HTML or PDF format

revEng

Reverse-engineer a database instance or script file to infer the schema of the selected collections/tables

revEngJSON

Reverse-engineer JSON  Schema or documents

revEngDDL

Reverse-engineer RDBMS data definition language files with .sql extensions

revEngXSD

Reverse-engineer XSD files with .xsd extensions

compMod

Compare two Hackolade models to detect differences, and optionally merge them

forwEng

Forward-engineer structure created with the application to dynamically generate the schema of the selected entities.  Or forward-engineer JSON Schema or a sample JSON data document

forwEngAPI

Forward-engineer Swagger or OpenAPI model from merge of a source data model and a user-defined template

obfusc

Copy a model, and garble sensitive properties: business name, technical name, description, comments, enumeration.  Use if you need to send a model for troubleshooting but don't want to disclose sensitive aspects of the model.

help

Display commands and their arguments

version

Display application version



Usage:        hackolade command [--arguments]


1) genDoc

The genDoc command lets you invoke the generation of a documentation file, either in HTML or PDF format, for a specified existing Hackolade model.


Usage:        hackolade genDoc [--arguments]


Argument

Required

Purpose

--format=<HTML | PDF>

Y

Specify format, currently either HTML or PDF

--model=<file>*

Y

Full path and file name for source Hackolade model for which documentation is being generated.  Extension .json is optional

--doc=<file>*

Y

Full path and file name for documentation.  Extension .html or .pdf is optional

--logo=<file>*

N

Full path and file name for custom logo file.  If omitted, Hackolade logo is used

--modelDiagram=<true | false>

N

Include model diagram [default: true]

--sepContDiag=<true | false>

N

Include separate container diagrams (database, region, buckets, keyspaces...)  [default: true]

--entityDiagrams=<true | false>

N

Include entity tree diagrams [default: true]

--attribTree=<all | complex | none>

N

Include individual tree view for all attributes [all], for complex attributes only [complex], or for no attributes [none]. [default: all]

--properties=<all | notNull | none>

N

Include all field properties [all], only field properties with information [notnull], or no field properties [none]. [default: all]

--relationships=<true | false>

N

Include Relationships [default: true]

--JSONSchema=<true | false>

N

Include JSON Schema code [default: true]

--JSONData=<true | false>

N

Include JSON Data sample [default: true]

--entities="<containerName>: [<entity1>,<entity2>,…]"

N

Specify container(s) to include in documentation [default: all] and an array of entities [default: all]

- MongoDB: container = dbs; entity = collection

- DynamoDB: container = not applicable; entity = table

- Couchbase: container = bucket; entity = document kind

- Cosmos DB: container = collection; entity = document type

- plain JSON: container = group; entity = document

The value is a string surrounded by double quotes (").  Entities are represented as an array surrounded by square brackets ([]), and are separated by a comma (,).  The entities array is separated from the container name by a colon (:).   Containers are separated by semi-colons (;).

--views="[<view1>, <view2>, ...]"

N

In MongoDB only, specify view(s) to include in documentation [default: all]

The value is a string surrounded by double quotes (").  Views are represented as an array surrounded by square brackets ([]), and are separated by a comma (,).

--openDoc=<true | false>

N

Specify whether to open the generated document or not upon completion of generation. [default: false]

--logLevel=< 1 | 2 | 3 | 4 >

N

1 = no spinner, no info, no error messages

2 = no spinner, no info

3 = no spinner

4 = full output

[default: 4]

*: If path and/or file name contains blanks, the value must be surrounded by double quotes (“)  Path can be ignored if file is in local directory.


Simple example: using all default options:  

start /wait hackolade genDoc --format=HTML --model=C:\Users\Public\Bitbucket\hackolade\schemas\MongoDB\noaa.json
--doc=C:\Users\Public\Documents\Hackolade\Documentation\noaa.html


More complex example:

start /wait C:\PROGRA~1\Hackolade\hackolade genDoc --format=HTML --model=C:\Users\Public\Bitbucket\hackolade\schemas\Couchbase\travel-sample.json
--doc=C\Users\Public\Documents\Hackolade\Documentation\travel-sample.html --logo="C\Users\Public\Documents\Hackolade\Documentation\couchbase logo.png"
--attribTree=complex --JSONSchema=false --JSONData=false --properties=notNull --entities="travel-sample: airport, airline, route"


Note: If the path contains spaces, Windows generates an error message when running the CLI from another directory than the one where the Hackolade executable was installed, even if using quotes, e.g.: "C:\Program Files\Hackolade\hackolade" .  The workaround, assuming:

is to to use the 8.3 command C:\PROGRA~1\Hackolade\hackolade, as displayed above.

2) revEng

The revEng command allows to trigger a reverse-engineering process of a database instance, as described in this page, or script file.


Usage:        hackolade revEng [--arguments]


Argument

Required

Purpose

--target=<target>

Y

Native target for model: JSON, MONGODB, DYNAMODB, COUCHBASE, or plugin target: ArangoDB, Avro, CASSANDRA, COSMOSDB-SQL, COSMOSDB-MONGO, ELASTICSEARCH, EventBridge, Glue, HBase, HIVE, JOI, MSSQLServer; NEO4J, OPENAPI, PARQUET, ScyllaDB, Snowflake, SWAGGER, Synapse, TinkerPop

--connectName=<connection>

Y if from instance

Name of connection settings saved in the Hackolade instance where CLI is invoked.

--file=<file>*

Y if from file

Full file path of target script (MongoDB validator, Cassandra CQL, Hive HQL, Avro schema, Neo4j Cypher, Swagger documentation, etc...) from which reverse-engineering process has to be performed.

--model=<file>*

Y

Full path and file name for target Hackolade model into which reverse-engineering process has to be converted.  Extension .json is optional

--samplingMethod=< abs | re l>

N

Specify sampling method, either absolute number of documents or relative percentage.  [default: abs]

--samplingValue=<x>

N

If samplingMethod=abs: positive integer between 1 and 100000 [default: 1000]

If samplingMethod=rel: positive integer between 1 and 100 [default: 1]

Warning: for obvious performance and response time reasons, be reasonable with these parameters when used on large entities!  What's the point of sampling 10% of 1B+ identical documents?...

--fieldOrder=< keep | alpha >

N

Specify whether to preserve order of fields in sampled document or rearrange in alpha order
[default: keep]

--inferRelationships=< true | false >

N

For MongoDB only, optionally specify whether to attempt relationship inference based on ObjectID data type.  

--selectedObjects=
"<containerName>: [<entity1>,<entity2>,…]"

N

Specify container(s) to include in documentation [default: all] and an array of entities [default: all]

- MongoDB: container = dbs; entity = collection

- DynamoDB: container = not applicable; entity = table

- Couchbase: container = bucket; entity = document kind

- Cosmos DB: container = collection; entity = document type

- Elasticsearch: container = index: entity = type

- HBase: container =  namespace; entity = table

The value is a string surrounded by double quotes (").  Entities are represented as an array surrounded by square brackets ([]), and are separated by a comma (,).  The entities array is separated from the container name by a colon (:).  Containers are separated by semi-colons (;).

--documentKinds=
"<bucketName>: <docKindField>"

N

In Couchbase only, for each bucket, you must specify the field used to distinguish the different objects stored in the same bucket.

--entityVersion=<version number>

N

In EventBridge only, specify schema version [default: latest]

--includeEmpty=< true | false >

N

In MongoDB only, specify whether to include empty collections [default: false]

--includeSystem=< true | false >

N

In MongoDB only, specify whether to include system collections [default: false]

--includeViews=< true | false >

N

In MongoDB only, specify whether to include views [default: true]

--selectedDB=<database name>

N

In Cosmos DB, you must specify the name of the database which should be reverse-engineered. [default: the first database in the list]

--pagination=< 0 | 1 | ...>

N

In couchbase, you must specify the number of documents per page for pagination. If value = 0, pagination is disabled  [default: 0]

--detectPattern=< true | false >

N

Specify whether to automatically convert pattern fields [default: false]

--combineSchemas=< true | false >

N

For Avro and Parquet only.  Specify whether to combine the schemas of multiple files, or keep one schema per file reverse-engineered [default: false]

--namingConventions=< business | technical >

N

If application parameters are set to enable Naming Conventions, specify whether to reverse-engineer source attributes as business names or as technical names.  Conversions will be applied according to your Naming Conventions parameters.  

[default: business, if Naming Conventions are disabled; or

technical, if Naming Conventions are enabled in application Tools > Options]

--logLevel=< 1 | 2 | 3 | 4 >

N

1 = no spinner, no info, no error messages

2 = no spinner, no info

3 = no spinner

4 = full output

[default: 4]

*: If path and/or file name contains blanks, the value must be surrounded by double quotes (“)  Path can be ignored if file is in local directory.


MongoDB example:  

hackolade revEng --connectName=local --target=MONGODB --samplingMethod=abs --samplingValue=1000
--model=C:\Users\Public\Bitbucket\hackolade\schemas\MongoDB\yelp.json --includeEmpty=true --selectedObjects="yelp" --fieldOrder=keep


DynamoDB example:  

"C:\Program Files\Hackolade\hackolade" revEng --connectName=local --target=DYNAMODB --samplingMethod=abs --samplingValue=1000
--model=C:\Users\Public\Bitbucket\hackolade\schemas\DynamoDB\entertainment.json --includeEmpty=false --selectedObjects="[Movies, Music]" --fieldOrder=alpha


Couchbase example:  

"C:\Program Files\Hackolade\hackolade" revEng --connectName=local --target=COUCHBASE --samplingMethod=abs --samplingValue=2500
--model=C:\Users\Public\Bitbucket\hackolade\schemas\Couchbase\travel-sample.json --includeEmpty=false --selectedObjects="travel-sample: [airline, airport]"  
--documentKinds="travel-sample: type" --fieldOrder=keep


Cosmos DB example:

start /wait hackolade reveng --target=COSMOSDB-DOC --connectName=azure --model=travel.json --selectedObjects="travel" --documentKinds="travel:type"


Note: If the path contains spaces, Windows generates an error message when running the CLI from another directory than the one where the Hackolade executable was installed, even if using quotes, e.g.: "C:\Program Files\Hackolade\hackolade" .  The workaround, assuming:

is to to use the 8.3 command C:\PROGRA~1\Hackolade\hackolade, as displayed above.

3) revEngJSON

The revEngJSON command allows to trigger a reverse-engineering process of a JSON document or JSON Schema file, as described in this page.


Usage:        hackolade revEngJSON [--arguments]


Argument

Required

Purpose

--target=<target>

Y

Native target for model: JSON, MONGODB, DYNAMODB, COUCHBASE, or plugin target: ArangoDB, Avro, CASSANDRA, COSMOSDB-SQL, COSMOSDB-MONGO, ELASTICSEARCH, EventBridge, Glue, HBase, HIVE, JOI, MSSQLServer; NEO4J, OPENAPI, PARQUET, ScyllaDB, Snowflake, SWAGGER, Synapse, TinkerPop

--file=<file>*

Y

Specify the directory path and file name where the schema file to be reverse-engineered is located (file type must be compatible with selected target.)

--model=<file>*

Y

Full path and file name for target Hackolade model into which reverse-engineering process has to be converted.  Extension .json is optional

--entityHandling=< ERD | definitions >

N

Specify whether must be reverse-engineered as entities in ERD or as model definitions [default: ERD]

--normalization=< true | false >

N

Only applicable to RDBMS.  Specify whether complex data types should be normalized into separate entities [default: true]

--conflictResolution=< keepBoth | replace | merge | cancel >

N

Specify conflict strategy for containers and entities [default: keepBoth]

--ndjson=< true | false >

N

Specify whether the file is contains NDJSON to leverage sampling options [default: false]

--namingConventions=< business | technical >

N

If application parameters are set to enable Naming Conventions, specify whether to reverse-engineer source attributes as business names or as technical names.  Conversions will be applied according to your Naming Conventions parameters.  

[default: business, if Naming Conventions are disabled; or

technical, if Naming Conventions are enabled in application Tools > Options]

--logLevel=< 1 | 2 | 3 | 4 >

N

1 = no spinner, no info, no error messages

2 = no spinner, no info

3 = no spinner

4 = full output

[default: 4]

*: If path and/or file name contains blanks, the value must be surrounded by double quotes (“)  Path can be ignored if file is in local directory.


4) revEngDDL

The revEngDDL command allows to trigger a reverse-engineering process of a Data Definition Language file from a database instance, as described in this page.


Usage:        hackolade revEngDDL [--arguments]


Argument

Required

Purpose

--target=<target>

Y

Native target for model: MONGODB, DYNAMODB, COUCHBASE, or plugin target: ArangoDB, Avro, CASSANDRA, COSMOSDB-SQL, COSMOSDB-MONGO, ELASTICSEARCH, EventBridge, Glue, HBase, HIVE, JOI, MSSQLServer; NEO4J, OPENAPI, PARQUET, ScyllaDB, Snowflake, SWAGGER, Synapse, TinkerPop

--file=<file>*

Y

Specify the directory path and file name where the schema file to be reverse-engineered is located (file type must be compatible with selected target.)

--model=<file>*

Y

Full path and file name for target Hackolade model into which reverse-engineering process has to be converted.  Extension .json is optional

--entityHandling=< ERD | definitions >

N

Specify whether must be reverse-engineered as entities in ERD or as model definitions [default: ERD]

--database=< oracle | mysql | mssqlserver | db2 | postgres | informix | snowflake | teradata >

Y

Name of database of DDL script

--update=< true | false >

N

Specify whether to update existing model.  If false, existing model will be overwritten [default: false]

--namingConventions=< business | technical >

N

If application parameters are set to enable Naming Conventions, specify whether to reverse-engineer source attributes as business names or as technical names.  Conversions will be applied according to your Naming Conventions parameters.  

[default: business, if Naming Conventions are disabled; or

technical, if Naming Conventions are enabled in application Tools > Options]

--logLevel=< 1 | 2 | 3 | 4 >

N

1 = no spinner, no info, no error messages

2 = no spinner, no info

3 = no spinner

4 = full output

[default: 4]

*: If path and/or file name contains blanks, the value must be surrounded by double quotes (“)  Path can be ignored if file is in local directory.


5) revEngXSD

The revEngXSD command allows to trigger a reverse-engineering process of an XMS schema (XSD).


Usage:        hackolade revEngXSD [--arguments]


Argument

Required

Purpose

--target=<target>

Y

Native target for model: MONGODB, DYNAMODB, COUCHBASE, or plugin target: ArangoDB, Avro, CASSANDRA, COSMOSDB-SQL, COSMOSDB-MONGO, ELASTICSEARCH, EventBridge, Glue, HBase, HIVE, JOI, MSSQLServer; NEO4J, OPENAPI, PARQUET, ScyllaDB, Snowflake, SWAGGER, Synapse, TinkerPop

--file=<file>*

Y

Specify the directory path and file name where the schema file to be reverse-engineered is located (file type must be compatible with selected target.)

--model=<file>*

Y

Full path and file name for target Hackolade model into which reverse-engineering process has to be converted.  Extension .json is optional

--entityHandling=< ERD | definitions >

N

Specify whether must be reverse-engineered as entities in ERD or as model definitions [default: ERD]

--logLevel=< 1 | 2 | 3 | 4 >

N

1 = no spinner, no info, no error messages

2 = no spinner, no info

3 = no spinner

4 = full output

[default: 4]

*: If path and/or file name contains blanks, the value must be surrounded by double quotes (“)  Path can be ignored if file is in local directory.


6) compMod

The compMod command lets you compare two (2) Hackolade models and derive a delta model file with additions, deletions, and modifications of fields and structures.


Usage:        hackolade compMod [--arguments]


Argument

Required

Purpose

--model1=<file>*

Y

Full path and file name for baseline Hackolade model with which comparison will be performed.  Extension .json is optional

--model2=<file>*

Y

Full path and file name for comparison Hackolade model.  Extension .json is optional.  Both models need to be of the same DB target.  Extension .json is optional

--deltaModel=<file>*

Y

Full path and file name for differences in model comparisons.  The resulting file is a Hackolade model.  Extension .json is optional

--ignoreGUIDs=<true | false>

N

Specify whether to include GUIDs in comparison.  [default: true]

--ignoreExtraProperties=

<true | false>

N

Specify whether to include in comparison the Hackolade properties that cannot typically be derived from the data, such as descriptions, comments, samples, defaults, and foreign key-related infos.  [default: true]

--ignoreOrder=<true | false>

N

Specify whether to detect changes in order of fields [default: true]

--targetModel=<file>*

N

Full path and file name for the Hackolade model resulting from the merge of model1 and model2.  If specified, a new Hackolade model is created with a merge of the 2 original models.

Extension .json is optional

--logLevel=< 1 | 2 | 3 | 4 >

N

1 = no spinner, no info, no error messages

2 = no spinner, no info

3 = no spinner

4 = full output

[default: 4]

*: If path and/or file name contains blanks, the value must be surrounded by double quotes (“)  Path can be ignored if file is in local directory.


Note: unless GUID’s are used for the comparison, a change in a field name will result in an addition plus a deletion.  Same for a change in an entity name.


Example:

C:\PROGRA~1\Hackolade\hackolade compMod --model1=yesterdaysModel --model2=todaysModel --deltaModel=todaysDeltaModel --ignoreGUIDs=true
--ignoreExtraProperties=true --ignoreOrder=true


Note: If the path contains spaces, Windows generates an error message when running the CLI from another directory than the one where the Hackolade executable was installed, even if using quotes, e.g.: "C:\Program Files\Hackolade\hackolade" .  The workaround, assuming:

is to to use the 8.3 command C:\PROGRA~1\Hackolade\hackolade, as displayed above.


Structure of resulting delta model file:

A delta model file may contain any combination of multiple additions, deletions, and modifications.  Deeply nested fields are referenced through their structure.  To merge newly added fields, open your baseline model in Hackolade, then either copy/paste from the delta model, or reference the new field via an external reference to the delta model, then convert the reference into attributes.


7) forwEng

Forward engineer structure created with the application to dynamically generate the schema of the selected entities.


Usage:        hackolade forwEng [--arguments]


Argument

Required

Purpose

--model=<file>*

Y

Full path and file name for target Hackolade model. Extension .json is optional

--path=<file>*

Y

Specify the directory path where the forward-engineered files will be created.

--outputType=< jsonschema | jsondata | script | ddl >

Y

Specify the type of output (JSON Schema, sample JSON data, or script) [default: jsonschema]

–jsonSchemaCompliance=< standard | full | extended >

N

Specify JSON Schema compliance: standard for only JSON Schema keywords and data types, full for additional custom properties, or extended for target-specific data types and internal properties.  [default: standard]

--format=< avroSchema | schemaRegistry | json | yaml >

N

Output target-specific schema format:

Avro: ["avroSchema", "schemaRegistry"]

Glue: ["awsCLI", "HiveQL"]

OpenAPI:   ["json", "yaml"]

Swagger:   ["json", "yaml"]

--jsonschemacompliance=

< standard | full | extended >

N

Specify JSON Schema compliance: standard for only JSON Schema keywords and data types, full for additional custom properties, or extended for target-specific data types and internal properties.

[default: standard]

--selectedObjects=

"<containerName>: [<entity1>,<entity2>,…]"

N

Specify array of entities to include to result from model [default: all]

--resolvDefs=<true | false>

N

If outputType=jsonschema, specify whether to output resolved definitions (true) or referenced definitions (true) [default=true]

--updateExtDefs=<true | false>

N

When reference to external definition, update current model to ensure latest changes are included. [default: false]

--minify=<true | false>

N

For JSON document/schema and Avro Schema, minify output instead of default beautifying format [default=false]

--batchScriptSeparator=< ; | GO >

N

For SQL Server, Azure SQL, and Synapse, specify if you wish a different separator than the default semi-column ";" or the "GO" separator [choices: ";", "GO"] [default: ";"]

--validateSchema=<true | false>

N

If output script supports validation (JSON Schema, Avro Schema, Swagger, OpenAPI,...), run respective validator, and generate error message if validation failed. [default: false]

--scriptType=<create | update>

N

For Cassandra, if outputType=script, specify type of forward engineering script [default:create]

--logLevel=< 1 | 2 | 3 | 4 >

N

1 = no spinner, no info, no error messages

2 = no spinner, no info

3 = no spinner

4 = full output

[default: 4]

*: If path and/or file name contains blanks, the value must be surrounded by double quotes (“)  Path can be ignored if file is in local directory.


Example:

C:\PROGRA~1\Hackolade\hackolade forwEng --model=masterdata.json --path=masterdata.cql  


Note: If the path contains spaces, Windows generates an error message when running the CLI from another directory than the one where the Hackolade executable was installed, even if using quotes, e.g.: "C:\Program Files\Hackolade\hackolade" .  The workaround, assuming:

is to to use the 8.3 command C:\PROGRA~1\Hackolade\hackolade, as displayed above.



8) forwEngAPI

The forwEngAPI command lets you generate a Swagger or OpenAPI model from the merging of a source data model and a user-defined template


Usage:        hackolade obfusc [--arguments]


Argument

Required

Purpose

--sourcemodel=<file>*

Y

Full path and file name for the Hackolade model to to serve as a basis for the API generation.  Extension .json is optional

--selectedObjects=

"<containerName>: [<entity1>,<entity2>,…]"

N

Specify array of entities to include to result from model [default: all]

--APItemplate=<file>*

Y

Full path and file name for the template to be used during API generation to create the specified resources for each selected entity of the source model.  The template can be a Hackolade model, or a Swagger or OpenAPI documentation file in either JSON or YAML.

--targetModelFormat=< Swagger | OpenAPI >

N

Specify the target of the target model.  ["Swagger" or "OpenAPI"] [default: OpenAPI]

--targetmodel=<file>*

Y

Full path and file name for the obfuscated Hackolade model.  Extension .json is optional. 

--APIdocFile=<file>*

N

If specified, the corresponding documentation file will be generated in the chose model format.  Specify the full path and file name for the generated documentation file.

--logLevel=< 1 | 2 | 3 | 4 >

N

1 = no spinner, no info, no error messages

2 = no spinner, no info

3 = no spinner

4 = full output

[default: 4]

*: If path and/or file name contains blanks, the value must be surrounded by double quotes (“)  Path can be ignored if file is in local directory.


Example:

C:\PROGRA~1\Hackolade\hackolade forwEngAPI --sourcemodel=masterdata --APItemplate=OAS_generation --targetmodel=masterdataAPI  --APIdocFile=masterdata_OpenAPI


Note: If the path contains spaces, Windows generates an error message when running the CLI from another directory than the one where the Hackolade executable was installed, even if using quotes, e.g.: "C:\Program Files\Hackolade\hackolade" .  The workaround, assuming:

is to to use the 8.3 command C:\PROGRA~1\Hackolade\hackolade, as displayed above.


9) obfusc


The obfusc command lets you garble sensitive properties: business name, technical name, description, comments, enumeration.  Use if you need to send a model for troubleshooting but don't want to disclose sensitive aspects of the model.


Usage:        hackolade obfusc [--arguments]


Argument

Required

Purpose

--sourcemodel=<file>*

Y

Full path and file name for the Hackolade model to be obfuscated.  Extension .json is optional

--targetmodel=<file>*

Y

Full path and file name for the obfuscated Hackolade model.  Extension .json is optional. 

--logLevel=< 1 | 2 | 3 | 4 >

N

1 = no spinner, no info, no error messages

2 = no spinner, no info

3 = no spinner

4 = full output

[default: 4]

*: If path and/or file name contains blanks, the value must be surrounded by double quotes (“)  Path can be ignored if file is in local directory.


Example:

C:\PROGRA~1\Hackolade\hackolade obfusc --sourcemodel=masterdata --targetmodel=garbeledmasterdata  


Note: If the path contains spaces, Windows generates an error message when running the CLI from another directory than the one where the Hackolade executable was installed, even if using quotes, e.g.: "C:\Program Files\Hackolade\hackolade" .  The workaround, assuming:

is to to use the 8.3 command C:\PROGRA~1\Hackolade\hackolade, as displayed above.


10) help

The help command displays the version number of Hackolade being invoked.


Usage:        hackolade help


11) version

The version command displays the version number of Hackolade being invoked.


Usage:        hackolade version