Package groovy.lang

# Class GroovyShell

java.lang.Object
groovy.lang.GroovyObjectSupport
groovy.lang.GroovyShell

All Implemented Interfaces:
  `GroovyObject`

public class GroovyShell extends GroovyObjectSupport
Represents a groovy shell capable of running arbitrary groovy scripts

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `DEFAULT_CODE_BASE`
  Default code base used for scripts evaluated by the shell.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GroovyShell()`
  Creates a shell with a new `Binding` and the default compiler configuration.
  `GroovyShell(Binding binding)`
  Creates a shell with the supplied binding and the default compiler configuration.
  `GroovyShell(Binding binding, CompilerConfiguration config)`
  Creates a shell with the supplied binding and compiler configuration.
  `GroovyShell(GroovyShell shell)`
  Creates a child shell using a new ClassLoader which uses the parent shell's class loader as its parent
  `GroovyShell(ClassLoader parent)`
  Creates a shell with the supplied parent class loader, a new binding and the default compiler configuration.
  `GroovyShell(ClassLoader parent, Binding binding)`
  Creates a shell with the supplied parent class loader and binding.
  `GroovyShell(ClassLoader parent, Binding binding, CompilerConfiguration config)`
  Creates a shell with explicit class loader, binding and compiler configuration.
  `GroovyShell(ClassLoader parent, CompilerConfiguration config)`
  Creates a shell with the supplied parent class loader and compiler configuration.
  `GroovyShell(CompilerConfiguration config)`
  Creates a shell with a new `Binding` and the supplied compiler configuration.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `evaluate(GroovyCodeSource codeSource)`
  Evaluates some script against the current Binding and returns the result
  `Object`
  `evaluate(File file)`
  Evaluates some script against the current Binding and returns the result
  `Object`
  `evaluate(Reader in)`
  Evaluates some script against the current Binding and returns the result
  `Object`
  `evaluate(Reader in, String fileName)`
  Evaluates some script against the current Binding and returns the result
  `Object`
  `evaluate(String scriptText)`
  Evaluates some script against the current Binding and returns the result
  `Object`
  `evaluate(String scriptText, String fileName)`
  Evaluates some script against the current Binding and returns the result
  `Object`
  `evaluate(String scriptText, String fileName, String codeBase)`
  Evaluates some script against the current Binding and returns the result.
  `Object`
  `evaluate(URI uri)`
  Evaluates some script against the current Binding and returns the result
  `protected String`
  `generateScriptName()`
  Generates a unique logical script name for anonymous shell evaluations.
  `GroovyClassLoader`
  `getClassLoader()`
  Returns the class loader used to parse and load scripts.
  `Binding`
  `getContext()`
  Returns the binding used as this shell's execution context.
  `Object`
  `getProperty(String property)`
  Retrieves a property value.
  `Object`
  `getVariable(String name)`
  Returns the value of a variable from the shell binding.
  `static void`
  `main(String[] args)`
  Runs the standard `groovysh`-style command-line entry point.
  `Script`
  `parse(GroovyCodeSource codeSource)`
  Parses the given script and returns it ready to be run.
  `Script`
  `parse(GroovyCodeSource codeSource, Binding binding)`
  Parses the given script and returns it ready to be run.
  `Script`
  `parse(File file)`
  Parses the given script and returns it ready to be run
  `Script`
  `parse(Reader in)`
  Parses the given script and returns it ready to be run
  `Script`
  `parse(Reader in, Binding binding)`
  Parses the given script and returns it ready to be run
  `Script`
  `parse(Reader reader, String fileName)`
  Parses the given script and returns it ready to be run
  `Script`
  `parse(Reader reader, String fileName, Binding binding)`
  Parses the given script and returns it ready to be run
  `Script`
  `parse(String scriptText)`
  Parses the given script and returns it ready to be run
  `Script`
  `parse(String scriptText, Binding binding)`
  Parses the given script and returns it ready to be run
  `Script`
  `parse(String scriptText, String fileName)`
  Parses script text using an explicit logical name and this shell's binding.
  `Script`
  `parse(String scriptText, String fileName, Binding binding)`
  Parses script text using an explicit logical name and binding.
  `Script`
  `parse(URI uri)`
  Parses the given script and returns it ready to be run
  `void`
  `removeVariable(String name)`
  Removes a variable from the shell binding.
  `void`
  `resetLoadedClasses()`
  Clears classes previously loaded by this shell class loader.
  `Object`
  `run(GroovyCodeSource source, String[] args)`
  Runs the given script source with command line arguments
  `Object`
  `run(GroovyCodeSource source, List<String> args)`
  Runs the given script source with command line arguments
  `Object`
  `run(File scriptFile, String[] args)`
  Runs the given script file name with the given command line arguments
  `Object`
  `run(File scriptFile, List<String> list)`
  A helper method which runs the given script file with the given command line arguments
  `Object`
  `run(Reader in, String fileName, String[] args)`
  Runs the given script with command line arguments
  `Object`
  `run(Reader in, String fileName, List<String> list)`
  Runs the given script with command line arguments
  `Object`
  `run(String scriptText, String fileName, String[] args)`
  Runs the given script text with command line arguments
  `Object`
  `run(String scriptText, String fileName, List<String> list)`
  A helper method which runs the given cl script with the given command line arguments
  `Object`
  `run(URI source, String[] args)`
  Runs the given script source with command line arguments
  `Object`
  `run(URI source, List<String> args)`
  Runs the given script source with command line arguments
  `void`
  `setProperty(String property, Object newValue)`
  Sets the given property to the new value.
  `void`
  `setVariable(String name, Object value)`
  Stores a variable in the shell binding.
  `static GroovyShell`
  `withConfig(Closure<Void> spec)`

  ### Methods inherited from class groovy.lang.GroovyObjectSupport

  `getMetaClass, setMetaClass`

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

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

  ### Methods inherited from interface groovy.lang.GroovyObject

  `invokeMethod`

- ## Field Details

  - ### DEFAULT_CODE_BASE

    public static final String DEFAULT_CODE_BASE
    Default code base used for scripts evaluated by the shell.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### GroovyShell

    public GroovyShell()
    Creates a shell with a new `Binding` and the default compiler configuration.

  - ### GroovyShell

    public GroovyShell(Binding binding)
    Creates a shell with the supplied binding and the default compiler configuration.
    Parameters:
      `binding` - the binding used as the shell context

  - ### GroovyShell

    public GroovyShell(ClassLoader parent, CompilerConfiguration config)
    Creates a shell with the supplied parent class loader and compiler configuration.
    Parameters:
      `parent` - the parent class loader
      `config` - the compiler configuration to use

  - ### GroovyShell

    public GroovyShell(CompilerConfiguration config)
    Creates a shell with a new `Binding` and the supplied compiler configuration.
    Parameters:
      `config` - the compiler configuration to use

  - ### GroovyShell

    public GroovyShell(Binding binding, CompilerConfiguration config)
    Creates a shell with the supplied binding and compiler configuration.
    Parameters:
      `binding` - the binding used as the shell context
      `config` - the compiler configuration to use

  - ### GroovyShell

    public GroovyShell(ClassLoader parent, Binding binding)
    Creates a shell with the supplied parent class loader and binding.
    Parameters:
      `parent` - the parent class loader
      `binding` - the binding used as the shell context

  - ### GroovyShell

    public GroovyShell(ClassLoader parent)
    Creates a shell with the supplied parent class loader, a new binding and the default compiler configuration.
    Parameters:
      `parent` - the parent class loader

  - ### GroovyShell

    public GroovyShell(ClassLoader parent, Binding binding, CompilerConfiguration config)
    Creates a shell with explicit class loader, binding and compiler configuration.
    Parameters:
      `parent` - the parent class loader, or `null` to use the shell class loader
      `binding` - the binding used as the shell context
      `config` - the compiler configuration to use

  - ### GroovyShell

    public GroovyShell(GroovyShell shell)
    Creates a child shell using a new ClassLoader which uses the parent shell's class loader as its parent
    Parameters:
      `shell` - is the parent shell used for the variable bindings and the parent class loader

- ## Method Details

  - ### main

    public static void main(String[] args)
    Runs the standard `groovysh`-style command-line entry point.
    Parameters:
      `args` - command-line arguments passed to `GroovyMain`

  - ### withConfig

    public static GroovyShell withConfig(@DelegatesTo(type="org.codehaus.groovy.control.customizers.builder.CompilerCustomizationBuilder") Closure<Void> spec)
    Since:
      4.0.3

  - ### resetLoadedClasses

    public void resetLoadedClasses()
    Clears classes previously loaded by this shell class loader.

  - ### getContext

    public Binding getContext()
    Returns the binding used as this shell's execution context.
    Returns:
      the current binding

  - ### getClassLoader

    public GroovyClassLoader getClassLoader()
    Returns the class loader used to parse and load scripts.
    Returns:
      the shell class loader

  - ### getProperty

    public Object getProperty(String property)
    Retrieves a property value.
    Parameters:
      `property` - the name of the property of interest
    Returns:
      the given property

  - ### setProperty

    public void setProperty(String property, Object newValue)
    Sets the given property to the new value.
    Parameters:
      `property` - the name of the property of interest
      `newValue` - the new value for the property

  - ### run

    public Object run(File scriptFile, List<String> list) throws CompilationFailedException, IOException
    A helper method which runs the given script file with the given command line arguments
    Parameters:
      `scriptFile` - the file of the script to run
      `list` - the command line arguments to pass in
    Throws:
      `CompilationFailedException`
      `IOException`

  - ### run

    public Object run(String scriptText, String fileName, List<String> list) throws CompilationFailedException
    A helper method which runs the given cl script with the given command line arguments
    Parameters:
      `scriptText` - is the text content of the script
      `fileName` - is the logical file name of the script (which is used to create the class name of the script)
      `list` - the command line arguments to pass in
    Throws:
      `CompilationFailedException`

  - ### run

    public Object run(File scriptFile, String[] args) throws CompilationFailedException, IOException
    Runs the given script file name with the given command line arguments
    Parameters:
      `scriptFile` - the file name of the script to run
      `args` - the command line arguments to pass in
    Throws:
      `CompilationFailedException`
      `IOException`

  - ### run

    public Object run(String scriptText, String fileName, String[] args) throws CompilationFailedException
    Runs the given script text with command line arguments
    Parameters:
      `scriptText` - is the text content of the script
      `fileName` - is the logical file name of the script (which is used to create the class name of the script)
      `args` - the command line arguments to pass in
    Throws:
      `CompilationFailedException`

  - ### run

    public Object run(GroovyCodeSource source, List<String> args) throws CompilationFailedException
    Runs the given script source with command line arguments
    Parameters:
      `source` - is the source content of the script
      `args` - the command line arguments to pass in
    Throws:
      `CompilationFailedException`

  - ### run

    public Object run(GroovyCodeSource source, String[] args) throws CompilationFailedException
    Runs the given script source with command line arguments
    Parameters:
      `source` - is the source content of the script
      `args` - the command line arguments to pass in
    Throws:
      `CompilationFailedException`

  - ### run

    public Object run(URI source, List<String> args) throws CompilationFailedException, IOException
    Runs the given script source with command line arguments
    Parameters:
      `source` - is the source content of the script
      `args` - the command line arguments to pass in
    Throws:
      `CompilationFailedException`
      `IOException`

  - ### run

    public Object run(URI source, String[] args) throws CompilationFailedException, IOException
    Runs the given script source with command line arguments
    Parameters:
      `source` - is the source content of the script
      `args` - the command line arguments to pass in
    Throws:
      `CompilationFailedException`
      `IOException`

  - ### run

    public Object run(Reader in, String fileName, List<String> list) throws CompilationFailedException
    Runs the given script with command line arguments
    Parameters:
      `in` - the stream reading the script
      `fileName` - is the logical file name of the script (which is used to create the class name of the script)
      `list` - the command line arguments to pass in
    Throws:
      `CompilationFailedException`

  - ### run

    public Object run(Reader in, String fileName, String[] args) throws CompilationFailedException
    Runs the given script with command line arguments
    Parameters:
      `in` - the stream reading the script
      `fileName` - is the logical file name of the script (which is used to create the class name of the script)
      `args` - the command line arguments to pass in
    Throws:
      `CompilationFailedException`

  - ### getVariable

    public Object getVariable(String name)
    Returns the value of a variable from the shell binding.
    Parameters:
      `name` - the variable name
    Returns:
      the current variable value, or `null` if it is not bound

  - ### setVariable

    public void setVariable(String name, Object value)
    Stores a variable in the shell binding.
    Parameters:
      `name` - the variable name
      `value` - the value to bind

  - ### removeVariable

    public void removeVariable(String name)
    Removes a variable from the shell binding.
    Parameters:
      `name` - the variable name

  - ### evaluate

    public Object evaluate(GroovyCodeSource codeSource) throws CompilationFailedException
    Evaluates some script against the current Binding and returns the result
    Parameters:
      `codeSource` -
    Throws:
      `CompilationFailedException`

  - ### evaluate

    public Object evaluate(String scriptText) throws CompilationFailedException
    Evaluates some script against the current Binding and returns the result
    Parameters:
      `scriptText` - the text of the script
    Throws:
      `CompilationFailedException`

  - ### evaluate

    public Object evaluate(String scriptText, String fileName) throws CompilationFailedException
    Evaluates some script against the current Binding and returns the result
    Parameters:
      `scriptText` - the text of the script
      `fileName` - is the logical file name of the script (which is used to create the class name of the script)
    Throws:
      `CompilationFailedException`

  - ### evaluate

    public Object evaluate(String scriptText, String fileName, String codeBase) throws CompilationFailedException
    Evaluates some script against the current Binding and returns the result. The .class file created from the script is given the supplied codeBase
    Throws:
      `CompilationFailedException`

  - ### evaluate

    public Object evaluate(File file) throws CompilationFailedException, IOException
    Evaluates some script against the current Binding and returns the result
    Parameters:
      `file` - is the file of the script (which is used to create the class name of the script)
    Throws:
      `CompilationFailedException`
      `IOException`

  - ### evaluate

    public Object evaluate(URI uri) throws CompilationFailedException, IOException
    Evaluates some script against the current Binding and returns the result
    Parameters:
      `uri` - is the URI of the script (which is used to create the class name of the script)
    Throws:
      `CompilationFailedException`
      `IOException`

  - ### evaluate

    public Object evaluate(Reader in) throws CompilationFailedException
    Evaluates some script against the current Binding and returns the result
    Parameters:
      `in` - the stream reading the script
    Throws:
      `CompilationFailedException`

  - ### evaluate

    public Object evaluate(Reader in, String fileName) throws CompilationFailedException
    Evaluates some script against the current Binding and returns the result
    Parameters:
      `in` - the stream reading the script
      `fileName` - is the logical file name of the script (which is used to create the class name of the script)
    Throws:
      `CompilationFailedException`

  - ### parse

    public Script parse(Reader reader, String fileName) throws CompilationFailedException
    Parses the given script and returns it ready to be run
    Parameters:
      `reader` - the stream reading the script
      `fileName` - is the logical file name of the script (which is used to create the class name of the script)
    Returns:
      the parsed script which is ready to be run via `Script.run()`
    Throws:
      `CompilationFailedException`

  - ### parse

    public Script parse(Reader reader, String fileName, Binding binding) throws CompilationFailedException
    Parses the given script and returns it ready to be run
    Parameters:
      `reader` - the stream reading the script
      `fileName` - is the logical file name of the script (which is used to create the class name of the script)
      `binding` - the context eval the script
    Returns:
      the parsed script which is ready to be run via `Script.run()`
    Throws:
      `CompilationFailedException`

  - ### parse

    public Script parse(GroovyCodeSource codeSource, Binding binding) throws CompilationFailedException
    Parses the given script and returns it ready to be run. When running in a secure environment (-Djava.security.manager) codeSource.getCodeSource() determines what policy grants should be given to the script.
    Parameters:
      `codeSource` -
      `binding` -
    Returns:
      ready to run script
    Throws:
      `CompilationFailedException`

  - ### parse

    public Script parse(GroovyCodeSource codeSource) throws CompilationFailedException
    Parses the given script and returns it ready to be run. When running in a secure environment (-Djava.security.manager) codeSource.getCodeSource() determines what policy grants should be given to the script.
    Parameters:
      `codeSource` -
    Returns:
      ready to run script
    Throws:
      `CompilationFailedException`

  - ### parse

    public Script parse(File file) throws CompilationFailedException, IOException
    Parses the given script and returns it ready to be run
    Parameters:
      `file` - is the file of the script (which is used to create the class name of the script)
    Throws:
      `CompilationFailedException`
      `IOException`

  - ### parse

    public Script parse(URI uri) throws CompilationFailedException, IOException
    Parses the given script and returns it ready to be run
    Parameters:
      `uri` - is the URI of the script (which is used to create the class name of the script)
    Throws:
      `CompilationFailedException`
      `IOException`

  - ### parse

    public Script parse(String scriptText, Binding binding) throws CompilationFailedException
    Parses the given script and returns it ready to be run
    Parameters:
      `scriptText` - the text of the script
      `binding` - the context eval the script
    Throws:
      `CompilationFailedException`

  - ### parse

    public Script parse(String scriptText) throws CompilationFailedException
    Parses the given script and returns it ready to be run
    Parameters:
      `scriptText` - the text of the script
    Throws:
      `CompilationFailedException`

  - ### parse

    public Script parse(String scriptText, String fileName, Binding binding) throws CompilationFailedException
    Parses script text using an explicit logical name and binding.
    Parameters:
      `scriptText` - the Groovy source text
      `fileName` - the logical script name
      `binding` - the binding to associate with the parsed script
    Returns:
      the parsed script instance
    Throws:
      `CompilationFailedException` - if compilation fails

  - ### parse

    public Script parse(String scriptText, String fileName) throws CompilationFailedException
    Parses script text using an explicit logical name and this shell's binding.
    Parameters:
      `scriptText` - the Groovy source text
      `fileName` - the logical script name
    Returns:
      the parsed script instance
    Throws:
      `CompilationFailedException` - if compilation fails

  - ### parse

    public Script parse(Reader in) throws CompilationFailedException
    Parses the given script and returns it ready to be run
    Parameters:
      `in` - the stream reading the script
    Throws:
      `CompilationFailedException`

  - ### parse

    public Script parse(Reader in, Binding binding) throws CompilationFailedException
    Parses the given script and returns it ready to be run
    Parameters:
      `in` - the stream reading the script
      `binding` - the context eval the script
    Throws:
      `CompilationFailedException`

  - ### generateScriptName

    protected String generateScriptName()
    Generates a unique logical script name for anonymous shell evaluations.
    Returns:
      a unique script name ending in `.groovy`