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 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 supported Ghidra script providers
      Returns:
      a list of all supported Ghidra script providers
    • getProvider

      public static GhidraScriptProvider getProvider(ResourceFile scriptFile)
      Returns the corresponding Ghidra script provider for the specified script file.
      Parameters:
      scriptFile - the script file
      Returns:
      the Ghidra script provider or UnsupportedScriptProvider if the script file does not exist or no provider matches
    • 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.