# Debug Your Lua Scripts

The CFS installation includes files that you can use to debug your Lua scripts with an IDE such as the ZeroBrane Studio Lua IDE. You can use the IDOL and CFS Lua functions through the IDE, with code-completion.

To debug Lua scripts in the ZeroBrane Studio IDE

1. Install ZeroBrane Studio Lua IDE.

2. Copy the files from the `lua_ide_files/ZeroBraneStudio` directory in your CFS installation to the ZeroBrane Studio installation directory, merging them with the files that are already there:

   Source (CFS Installation) | Destination
   --- | ---
   `lua_ide_files/ZeroBraneStudio/api/lua/*` | `ZeroBraneInstall/api/lua/`
   `lua_ide_files/ZeroBraneStudio/bin/*` | `ZeroBraneInstall/bin/`
   `lua_ide_files/ZeroBraneStudio/interpreters/*` | `ZeroBraneInstall/interpreters/`

3. Open the ZeroBrane Studio IDE.
4. On the Project menu, click Lua Interpreter > Lua 5.3 64bit.

5. On the Project menu, click Project Directory > Choose, and then select a directory to use as the project directory.

   TIP: Any relative paths in your Lua scripts are relative to the project directory that you choose.

   NOTE: The project directory must include:

   - `autn_lua.dll`
   - `autn_lua_cfs.dll`
   - A CFS configuration file. Some of the Lua functions that you can use in your scripts write to log files or use KeyView and the configuration file specifies the paths of these files.

   The libraries are available in the `lua` directory of your CFS installation. You can use that folder as your project directory.

   An example CFS configuration that is suitable for debugging Lua scripts appears below.

       [License]
       LicenseServerHost=10.0.0.1
       LicenseServerACIPort=20000

       [Logging]
       LogLevel=NORMAL
       0=ApplicationLogStream
       1=ImportLogStream

       [ApplicationLogStream]
       LogTypeCSVs=application
       LogFile=application.log

       [ImportLogStream]
       LogTypeCSVs=import
       LogFile=import.log

       [ImportService]
       KeyviewDirectory=../filters
       ExtractDirectory=temp
       ThreadCount=3
       ImportInheritFieldsCSV=AUTN_GROUP,AUTN_IDENTIFIER,DREDBNAME,AUTONOMYMETADATA,SECURITYTYPE

   CAUTION: If you use your CFS configuration file, the Lua scripts that you are debugging can write to the CFS log files, or even index documents into your IDOL Content component.

6. Create a new Lua script file in the project directory. Start your script with the following lines, to provide the path of the configuration file and include the IDOL and CFS Lua functions:

       -- Configuration file provides paths to log files, KeyView
       require_config = "my_config.cfg"
       require("autn_lua_cfs").as_global()
       require("autn_lua").as_global()

7. You can now begin writing your script, using all of the standard IDOL and CFS Lua functions. CFS pre- and post- tasks call a function named `handler` that is passed a document object, so you might want to construct a document and then call the function. For example:

       -- Configuration file provides paths to log files, KeyView
       require_config = "my_config.cfg"
       require("autn_lua_cfs").as_global()
       require("autn_lua").as_global()

       function handler(document)
           print(document:to_xml())
           return true
       end

       -- Parse a document from an IDX file to be used as input
       local document = parse_document_idx("input.idx", true)

       -- Call the handler, storing the return value (expected to be Boolean)
       local result = handler(document)

       -- Print the result
       print("handler returned:", result)

8. Run and debug the script as necessary using the ZeroBrane Studio IDE. For more information about using the ZeroBrane Studio IDE, refer to the ZeroBrane documentation.

_FT_HTML5_bannerTitle.htm