Package ghidra.app.script

# Class GhidraScriptUtil

java.lang.Object
ghidra.app.script.GhidraScriptUtil

public class GhidraScriptUtil extends Object
A utility class for managing script directories and ScriptInfo objects.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static String`
  `USER_SCRIPTS_DIR`
  User's home scripts directory

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GhidraScriptUtil()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ghidra.app.plugin.core.osgi.BundleHost`
  `acquireBundleHostReference()`
  When running the GUI, `GhidraScriptUtil` manages a single `BundleHost` instance.
  `static ResourceFile`
  `createNewScript(GhidraScriptProvider provider, ResourceFile parentDirectory, List<ResourceFile> scriptDirectories)`
  Creates a new script with a unique name using the specified provider in the specified directory.
  `static void`
  `dispose()`
  dispose of the bundle host and providers list
  `static ResourceFile`
  `findScriptByName(String scriptName)`
  Search the currently managed scripts for one with the given name.
  `static ResourceFile`
  `findSourceDirectoryContaining(ResourceFile sourceFile)`
  Search the currently managed source directories for the given script file.
  `static String`
  `getBaseName(ResourceFile script)`
  Returns the base name give a script file.
  `static ghidra.app.plugin.core.osgi.BundleHost`
  `getBundleHost()`
  `static List<ResourceFile>`
  `getEnabledScriptSourceDirectories()`
  Returns a list of the current enabled script directories.
  `static List<ResourceFile>`
  `getExplodedCompiledSourceBundlePaths()`
  Deprecated.
  accessing class file directly precludes OSGi wiring according to requirements and capabilities
  `static GhidraScriptProvider`
  `getProvider(ResourceFile scriptFile)`
  Returns the corresponding Ghidra script providers for the specified script file.
  `static List<GhidraScriptProvider>`
  `getProviders()`
  Returns a list of all Ghidra script providers
  `static List<ResourceFile>`
  `getScriptSourceDirectories()`
  Returns a list of the current script directories.
  `static List<ResourceFile>`
  `getSystemScriptDirectories()`
  Returns a list of the default script directories.
  `static ResourceFile`
  `getUserScriptDirectory()`
  `static boolean`
  `hasScriptProvider(ResourceFile scriptFile)`
  Returns true if a provider exists that can process the specified file.
  `static void`
  `initialize(ghidra.app.plugin.core.osgi.BundleHost aBundleHost, List<String> extraSystemPaths)`
  Initialize state of GhidraScriptUtil with user, system, and optional extra system paths.
  `static boolean`
  `isSystemScript(ResourceFile file)`
  Determine if the specified file is contained within the Ghidra installation.
  `static ScriptInfo`
  `newScriptInfo(ResourceFile file)`
  `static void`
  `releaseBundleHostReference()`
  release the reference the BundleHost reference.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### USER_SCRIPTS_DIR

    public static String USER_SCRIPTS_DIR
    User's home scripts directory

- ## Constructor Details

  - ### GhidraScriptUtil

    public GhidraScriptUtil()

- ## Method Details

  - ### getBundleHost

    public static ghidra.app.plugin.core.osgi.BundleHost getBundleHost()
    Returns:
      the bundle host used for scripting

  - ### initialize

    public static void initialize(ghidra.app.plugin.core.osgi.BundleHost aBundleHost, List<String> extraSystemPaths)
    Initialize state of GhidraScriptUtil with user, system, and optional extra system paths.
    Parameters:
      `aBundleHost` - the host to use
      `extraSystemPaths` - additional system paths for this run, can be null

  - ### dispose

    public static void dispose()
    dispose of the bundle host and providers list

  - ### getScriptSourceDirectories

    public static List<ResourceFile> getScriptSourceDirectories()
    Returns a list of the current script directories.
    Returns:
      a list of the current script directories

  - ### getEnabledScriptSourceDirectories

    public static List<ResourceFile> getEnabledScriptSourceDirectories()
    Returns a list of the current enabled script directories.
    Returns:
      a list of the current enabled script directories

  - ### findSourceDirectoryContaining

    public static ResourceFile findSourceDirectoryContaining(ResourceFile sourceFile)
    Search the currently managed source directories for the given script file.
    Parameters:
      `sourceFile` - the source file
    Returns:
      the source directory if found, or null if not

  - ### findScriptByName

    public static ResourceFile findScriptByName(String scriptName)
    Search the currently managed scripts for one with the given name.
    Parameters:
      `scriptName` - the name
    Returns:
      the first file found or null if none are found

  - ### getSystemScriptDirectories

    public static List<ResourceFile> getSystemScriptDirectories()
    Returns a list of the default script directories.
    Returns:
      a list of the default script directories

  - ### getUserScriptDirectory

    public static ResourceFile getUserScriptDirectory()

  - ### isSystemScript

    public static boolean isSystemScript(ResourceFile file)
    Determine if the specified file is contained within the Ghidra installation.
    Parameters:
      `file` - script file or directory
    Returns:
      true if file contained within Ghidra installation area

  - ### getExplodedCompiledSourceBundlePaths

    @Deprecated public static List<ResourceFile> getExplodedCompiledSourceBundlePaths()
    Deprecated.
    accessing class file directly precludes OSGi wiring according to requirements and capabilities
    Returns the list of exploded bundle directories
    Returns:
      the list

  - ### getBaseName

    public static String getBaseName(ResourceFile script)
    Returns the base name give a script file. For example, given "C:\Temp\SomeClass.java", it will return "SomeClass".
    Parameters:
      `script` - the script
    Returns:
      the base name

  - ### getProviders

    public static List<GhidraScriptProvider> getProviders()
    Returns a list of all Ghidra script providers
    Returns:
      a list of all Ghidra script providers

  - ### getProvider

    public static GhidraScriptProvider getProvider(ResourceFile scriptFile)
    Returns the corresponding Ghidra script providers for the specified script file.
    Parameters:
      `scriptFile` - the script file
    Returns:
      the Ghidra script provider

  - ### hasScriptProvider

    public static boolean hasScriptProvider(ResourceFile scriptFile)
    Returns true if a provider exists that can process the specified file.
    Parameters:
      `scriptFile` - the script file
    Returns:
      true if a provider exists that can process the specified file

  - ### createNewScript

    public static ResourceFile createNewScript(GhidraScriptProvider provider, ResourceFile parentDirectory, List<ResourceFile> scriptDirectories) throws IOException
    Creates a new script with a unique name using the specified provider in the specified directory.
    Parameters:
      `provider` - the Ghidra script provider
      `parentDirectory` - the directory where the new script will be created.
      `scriptDirectories` - The list of directories containing scripts (used to find a unique name).
    Returns:
      the newly created script file
    Throws:
      `IOException` - if an i/o error occurs

  - ### newScriptInfo

    public static ScriptInfo newScriptInfo(ResourceFile file)

  - ### acquireBundleHostReference

    public static ghidra.app.plugin.core.osgi.BundleHost acquireBundleHostReference()
    When running the GUI, `GhidraScriptUtil` manages a single `BundleHost` instance.
    Returns:
      the BundleHost singleton

  - ### releaseBundleHostReference

    public static void releaseBundleHostReference()
    release the reference the BundleHost reference. When no references remain, `dispose()` is called.