Supercharge your development workflow! Spark is an extensible script runner, giving access to database connections, a web api client and much more.
Go to file
Chris d940a94611 Plugin manager, misc fixes
* Fixed an error when trying to create nonexisting resource type
* Updated the init-command to create plugins and scipts directories
* Added a basic installer function
2021-12-09 00:12:37 +01:00
bin Plugin manager, misc fixes 2021-12-09 00:12:37 +01:00
runtime Improved runtime and script classes 2021-12-08 04:05:55 +01:00
src Plugin manager, misc fixes 2021-12-09 00:12:37 +01:00
.gitignore Updated readme, misc fixes 2021-12-08 22:19:20 +01:00
CHANGELOG.md Plugin manager, misc fixes 2021-12-09 00:12:37 +01:00
README.md Updated readme, misc fixes 2021-12-08 22:19:20 +01:00
composer.json Improved runtime and script classes 2021-12-08 04:05:55 +01:00

README.md

Spark: Ignite your development workflow

Spark is a utility to help with everything from various mundane tasks to complex database migrations and project deployment.

Installation

Download spark.phar and make it executable. If desired, alias spark=spark.phar. You may also want to alias sparksh='spark repl'.

Using Spark

Spark expects a configuration file to either be found at ./.spark.json or ./.spark/spark.json relative to the project root. The ./.spark directory will always be used for auxillary configuration, so the placement is fully up to you.

On its own it doesn't do much except provide a command interface to its inside. The magic can be found in preloading:

spark.json

{
  "preload": [ "./.spark/plugins/*", "./.spark/autoload.php" ]
}

The preloader will go over each of the defined rules and attempt to load them in one of two ways, if applicable:

  1. Files with a .php-extension will be loaded directly.
  2. Directories having a sparkplug.php file will be loaded as plugins.

The advantages of writing your extensions as flat files:

  • Simple interface
  • Quickly register resources for other parts of Spark
  • All code evaluated on load (can be a caveat!)

The advantage of writing your extensions as plugins:

  • Object-oriented interface
  • Delayed evaluation of code, ensuring dependencies are loaded
  • Free autoloader! The namespace and path of the plugin class will be used to set up a Psr-4 autoloader for your code.

Scripts

Using scripts is the simplest way to leverage Spark:

spark.json

{
  ...
  "scripts": {
    "hello": "./.spark/hello.php",
    "world": "echo 'World'",
    "greet": [
      "@hello",
      "@world"
    ]
  }
}

.php-files are executed in-process, and as such have access to any registered resources, resource types and plugins.

Note: The script system need to be improved and revamped to support environment variables and such

Resources

Resources are wrappers around database connections and such, providing a cleaner interface to its innards.

Resources are generally registered by plugins.