Skip to content

Add a one-command curl installer for Scriptella #54

Description

@ejboy

Goal

Add a simple installation script that automates the existing standalone Scriptella ZIP installation flow.

Target experience:

curl -fsSL https://scriptella.org/install.sh | sh

After installation, the existing Scriptella shell launcher from the distribution should be available on PATH.

The installer should stay intentionally small and should not introduce a new runtime, dependency-management, or launcher architecture.

Scope

The installer should automate the same basic steps a user would otherwise perform manually:

  1. Verify that required local tools are available.
  2. Download the Scriptella distribution ZIP for the intended release.
  3. Verify the downloaded archive if release checksums are available.
  4. Unzip the distribution into a local Scriptella installation directory.
  5. Make the distribution's existing bin directory available on PATH.
  6. Print concise success and next-step instructions.

The exact existing Scriptella distribution layout and launcher names should be reused rather than reimplemented.

Installation Model

Use the normal Scriptella ZIP distribution.

Do not introduce:

  • a new versioned runtime layout;
  • a JAR-by-JAR downloader;
  • Maven dependency resolution;
  • Gradle dependency resolution;
  • a separate shell launcher implementation;
  • a new Scriptella runtime cache.

The installer should simply make the existing ZIP-based installation substantially easier.

Distribution Layout

The installer should preserve the directory structure supplied by the Scriptella distribution ZIP.

Do not rearrange individual JARs or rebuild the classpath in the installer.

The existing distribution should remain responsible for defining:

  • runtime JARs;
  • driver JARs;
  • library layout;
  • bin scripts;
  • launcher behavior.

If changes to the ZIP contents are required, handle those as part of the normal distribution work rather than duplicating dependency logic in install.sh.

Install Directory

Install Scriptella into a user-local location.

The exact directory should follow the most appropriate convention for the current Scriptella distribution and website documentation.

Do not invent a new installation hierarchy solely for this feature.

The implementation should avoid requiring root privileges for the normal install path.

PATH Setup

After extraction, the distribution's existing bin directory should be made available on the user's PATH.

The installer should reuse the existing Scriptella shell launcher from that directory.

If persistent PATH configuration requires modifying a shell startup file, use a simple and explicit approach appropriate for the supported shells.

If the repository or current installation documentation already defines conventions for this, follow them.

Do not introduce a new command name or wrapper unless required by the existing distribution.

Java Requirement

Scriptella continues to require Java.

The installer should detect whether the required Java runtime is available and fail with a short actionable message when it is not.

Do not install or download Java in this issue.

The exact supported Java version should come from the current Scriptella release requirements.

Download

The installer should download an exact Scriptella release ZIP from the project's normal release location.

Do not implement dependency discovery or artifact resolution.

The release URL and version should be explicit and reviewable.

Integrity

Where the release process provides a checksum for the distribution ZIP, verify it before extraction.

A failed or incomplete download must not be installed.

Keep integrity handling proportional to the existing release infrastructure. Do not introduce a separate artifact-manifest system for this issue.

Idempotency

Running the installer repeatedly should be safe.

The installer should handle an already-installed Scriptella distribution in a predictable way, such as reusing or replacing it cleanly.

The exact overwrite/update behavior should follow existing installation conventions where available.

Do not add automatic upgrade management in this issue.

Website Integration

Update Scriptella installation documentation to provide a prominent copyable command such as:

curl -fsSL https://scriptella.org/install.sh | sh

The purpose is to replace or significantly shorten the current manual sequence of:

  • downloading the ZIP;
  • unpacking it;
  • locating the bin directory;
  • adding it to PATH.

Keep the manual ZIP instructions available as an alternative.

For the initial release, this path may be presented as an experimental or alternative installation method while the existing installation instructions remain available.

Platform Scope

Initial platform support should follow what can be implemented reliably with the existing Scriptella shell distribution.

At minimum, target the Unix-like environments currently supported by the shell launcher.

Do not invent Windows behavior in this ticket unless the existing distribution already provides an appropriate installation path.

Non-Goals

  • Create a new Scriptella launcher architecture.
  • Download individual Scriptella JARs.
  • Maintain a hard-coded dependency map in the installer.
  • Parse Maven POM files.
  • Resolve Maven or Gradle dependencies.
  • Build a local runtime cache.
  • Introduce versioned runtime directories solely for this installer.
  • Implement self-update.
  • Implement automatic Scriptella upgrades.
  • Download Java.
  • Replace the existing ZIP distribution.
  • Replace existing bin scripts.
  • Redesign Scriptella's installation layout.
  • Solve future optional-driver distribution requirements.

Tests

Cover the practical installer behavior, including:

  • clean installation;
  • successful ZIP download;
  • failed download;
  • checksum failure where checksum verification is supported;
  • extraction into the expected local installation directory;
  • availability of the existing Scriptella launcher after installation;
  • PATH setup;
  • repeated installation;
  • Java-not-found behavior;
  • execution of a simple ETL file after installation;
  • failure handling without leaving a partially installed distribution.

Where repository details are not currently known, tests should follow the actual existing ZIP layout and shell launcher behavior rather than assumptions made in this ticket.

Acceptance Criteria

  • Scriptella can be installed with one copy-paste curl command.
  • Installer uses the existing Scriptella distribution ZIP.
  • Installer preserves the ZIP's normal directory layout.
  • Installer does not download individual dependency JARs.
  • Installer does not use Maven or Gradle.
  • Installer does not introduce a new launcher implementation.
  • Installation works without root privileges for the normal user path.
  • Existing Scriptella bin launcher is used.
  • The Scriptella bin directory is made available on PATH.
  • Java availability is checked.
  • Failed or incomplete downloads are not installed.
  • Re-running the installer is safe.
  • Existing manual ZIP installation remains available.
  • Website documentation includes the copyable installer command.
  • Unknown details about the current distribution are resolved from the repository during implementation rather than guessed in advance.

Success Criterion

A new user with Java installed should be able to replace the normal manual ZIP download, unzip, and PATH setup with a single copy-paste installation command, then use Scriptella through the existing shell launcher provided by the distribution.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions