Class BunTask

java.lang.Object
org.gradle.api.internal.AbstractTask
org.gradle.api.DefaultTask
org.gradle.api.internal.ConventionTask
org.gradle.api.tasks.AbstractExecTask<org.gradle.api.tasks.Exec>
org.gradle.api.tasks.Exec
io.github.m_segreti.BunTask
All Implemented Interfaces:
Comparable<org.gradle.api.Task>, org.gradle.api.internal.DynamicObjectAware, org.gradle.api.internal.IConventionAware, org.gradle.api.internal.TaskInternal, org.gradle.api.Named, org.gradle.api.plugins.ExtensionAware, org.gradle.api.Task, org.gradle.process.BaseExecSpec, org.gradle.process.ExecSpec, org.gradle.process.ProcessForkOptions, org.gradle.util.Configurable<org.gradle.api.Task>

public abstract class BunTask extends org.gradle.api.tasks.Exec
Gradle Exec task specialized for invoking the Bun executable.

This task acts as a thin wrapper around Exec that:

  • Defers resolution of the Bun executable until execution time.
  • Accumulates Bun command-line arguments independently of Gradle’s built-in argument handling.
  • Provides a clear failure mode if Bun has not been set up prior to execution.

Typical usage is internal to the plugin. Tasks such as bunInstall, bunTest, and bunRun configure an instance of this task by:

  1. Declaring a dependency on bunSetup.
  2. Setting the Bun executable during doFirst.
  3. Providing Bun-specific arguments via args(String...).

This design keeps configuration-time logic minimal and ensures the Bun executable path is resolved only after installation has completed.

  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.gradle.api.Named

    org.gradle.api.Named.Namer
  • Field Summary

    Fields inherited from interface org.gradle.api.Task

    TASK_ACTION, TASK_CONSTRUCTOR_ARGS, TASK_DEPENDS_ON, TASK_DESCRIPTION, TASK_GROUP, TASK_NAME, TASK_OVERWRITE, TASK_TYPE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    args(String... args)
    Adds one or more command-line arguments to be passed to Bun.
    protected void
    Executes the Bun command.
    Returns the Bun executable for this task.
    org.gradle.api.tasks.Exec
    Sets the command-line arguments to be passed to Bun.
    void
    setBunExecutable(File bunExecutable)
    Sets the Bun executable to be used when this task executes.

    Methods inherited from class org.gradle.api.tasks.Exec

    getArgs, getErrorOutput, getStandardInput, getStandardOutput, isIgnoreExitValue, setArgs, setErrorOutput, setIgnoreExitValue, setStandardInput, setStandardOutput

    Methods inherited from class org.gradle.api.tasks.AbstractExecTask

    args, args, commandLine, commandLine, copyTo, environment, environment, executable, getArgumentProviders, getCommandLine, getEnvironment, getExecActionFactory, getExecutable, getExecutionResult, getObjectFactory, getWorkingDir, setCommandLine, setCommandLine, setCommandLine, setEnvironment, setExecutable, setExecutable, setWorkingDir, setWorkingDir, workingDir

    Methods inherited from class org.gradle.api.internal.ConventionTask

    conventionMapping, conventionMapping, getConventionMapping

    Methods inherited from class org.gradle.api.DefaultTask

    compareTo, configure, dependsOn, doFirst, doFirst, doFirst, doLast, doLast, doLast, finalizedBy, getActions, getAnt, getDependsOn, getDescription, getDestroyables, getDidWork, getEnabled, getExtensions, getFinalizedBy, getGroup, getInputs, getLocalState, getLogger, getLogging, getMustRunAfter, getName, getOutputs, getPath, getProject, getShouldRunAfter, getState, getTaskDependencies, getTemporaryDir, getTimeout, hasProperty, mustRunAfter, onlyIf, onlyIf, onlyIf, property, setActions, setDependsOn, setDescription, setDidWork, setEnabled, setFinalizedBy, setGroup, setMustRunAfter, setOnlyIf, setOnlyIf, setOnlyIf, setProperty, setShouldRunAfter, shouldRunAfter, usesService

    Methods inherited from class org.gradle.api.internal.AbstractTask

    acceptServiceReferences, appendParallelSafeAction, doNotTrackState, getAsDynamicObject, getIdentityPath, getImpliesSubProjects, getLifecycleDependencies, getOnlyIf, getReasonNotToTrackState, getReasonTaskIsIncompatibleWithConfigurationCache, getRequiredServices, getServices, getSharedResources, getStandardOutputCapture, getTaskActions, getTaskIdentity, getTemporaryDirFactory, hasTaskActions, injectIntoNewInstance, isCompatibleWithConfigurationCache, isEnabled, isHasCustomActions, notCompatibleWithConfigurationCache, prependParallelSafeAction, setImpliesSubProjects

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface org.gradle.api.Task

    doNotTrackState, notCompatibleWithConfigurationCache
  • Constructor Details

    • BunTask

      public BunTask()
  • Method Details

    • getBunExecutable

      @Internal public File getBunExecutable()
      Returns the Bun executable for this task.

      This property is marked Internal so it does not participate in Gradle's up-to-date checks or task graph inputs.

      Returns:
      the Bun executable file, or null if not yet set
    • setBunExecutable

      public void setBunExecutable(File bunExecutable)
      Sets the Bun executable to be used when this task executes.

      This is typically called from a doFirst action to ensure the executable is resolved after bunSetup completes.

      Parameters:
      bunExecutable - the Bun executable file
    • args

      public void args(String... args)
      Adds one or more command-line arguments to be passed to Bun.

      Arguments are appended in the order provided and are not modified or validated by this task.

      Parameters:
      args - the arguments to pass to Bun
    • setArgs

      public org.gradle.api.tasks.Exec setArgs(List<String> args)
      Sets the command-line arguments to be passed to Bun.

      This overrides the parent Exec.setArgs(List) to ensure arguments are captured in the bunArgs list.

      Specified by:
      setArgs in interface org.gradle.process.ExecSpec
      Overrides:
      setArgs in class org.gradle.api.tasks.Exec
      Parameters:
      args - the arguments to pass to Bun
    • exec

      protected void exec()
      Executes the Bun command.

      This method:

      1. Verifies that the Bun executable has been set.
      2. Configures the underlying Exec task with the executable path.
      3. Applies the collected Bun arguments.
      4. Delegates execution to AbstractExecTask.exec().
      Overrides:
      exec in class org.gradle.api.tasks.AbstractExecTask<org.gradle.api.tasks.Exec>
      Throws:
      IllegalStateException - if the Bun executable has not been set