Package ghidra.app.script
Class GhidraScriptUtil
- java.lang.Object
-
- ghidra.app.script.GhidraScriptUtil
-
public class GhidraScriptUtil extends java.lang.Object
A utility class for managing script directories and ScriptInfo objects.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
USER_SCRIPTS_DIR
User's home scripts directory
-
Constructor Summary
Constructors Constructor Description GhidraScriptUtil()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static ghidra.app.plugin.core.osgi.BundleHost
acquireBundleHostReference()
When running the GUI,GhidraScriptUtil
manages a singleBundleHost
instance.static ResourceFile
createNewScript(GhidraScriptProvider provider, ResourceFile parentDirectory, java.util.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 liststatic ResourceFile
findScriptByName(java.lang.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 java.lang.String
getBaseName(ResourceFile script)
Returns the base name give a script file.static ghidra.app.plugin.core.osgi.BundleHost
getBundleHost()
static java.util.List<ResourceFile>
getExplodedCompiledSourceBundlePaths()
Deprecated.accessing class file directly precludes OSGi wiring according to requirements and capabilitiesstatic GhidraScriptProvider
getProvider(ResourceFile scriptFile)
Returns the corresponding Ghidra script providers for the specified script file.static java.util.List<GhidraScriptProvider>
getProviders()
Returns a list of all Ghidra script providersstatic java.util.List<ResourceFile>
getScriptSourceDirectories()
Returns a list of the current script directories.static java.util.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, java.util.List<java.lang.String> extraSystemPaths)
initialize state of GhidraScriptUtil with user, system paths, 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.
-
-
-
Method Detail
-
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, java.util.List<java.lang.String> extraSystemPaths)
initialize state of GhidraScriptUtil with user, system paths, and optional extra system paths.- Parameters:
aBundleHost
- the host to useextraSystemPaths
- 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 java.util.List<ResourceFile> getScriptSourceDirectories()
Returns a list of the current script directories.- Returns:
- a list of the current 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(java.lang.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 java.util.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 java.util.List<ResourceFile> getExplodedCompiledSourceBundlePaths()
Deprecated.accessing class file directly precludes OSGi wiring according to requirements and capabilitiesReturns the list of exploded bundle directories- Returns:
- the list
-
getBaseName
public static java.lang.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 java.util.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, java.util.List<ResourceFile> scriptDirectories) throws java.io.IOException
Creates a new script with a unique name using the specified provider in the specified directory.- Parameters:
provider
- the Ghidra script providerparentDirectory
- 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:
java.io.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 singleBundleHost
instance.- Returns:
- the BundleHost singleton
-
releaseBundleHostReference
public static void releaseBundleHostReference()
release the reference the BundleHost reference. When no references remain,dispose()
is called.
-
-