Skip to content

ioly/ioly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ioly

"Everybody loves ioly!"

ioly is a decentralized/centralized universal package installer for web based php software. You can use it with any system that supports modules/extensions/packages. e.g. OXID eSales, Wordpress, Redaxo etc. etc. etc..

The ioly system is driven by a "cookbook", stored on GitHub, which contains "recipes" to install any zip-based package. If something is missing, you can send us a pull request to extend/improve the main ioly cookbook. As soon as we merge your modifications, EVERY ioly installation has access to your package!

Getting started

  1. download ioly core
  2. download ioly connector (e. g. OXID connector) OR install it via ioly core, see below :) E.g. "php ioly.php install ioly/ioly-oxid-connector latest"
  3. search for a recipe
  4. install recipe
  5. done

Installation

Manual installation

Download ioly core via console or via HTTP or:

curl -O https://raw.githubusercontent.com/ioly/ioly/core/ioly.php

Using ioly module manager via console. In this example, we'll add a module to an installation of OXID eSales:

$ cd /var/www/myshop.de/
$ export IOLY_SYSTEM_BASE=/var/www/myshop.de/
$ export IOLY_SYSTEM_VERSION=4.9
$ php ioly.php update
$ php ioly.php install ioly/ioly-oxid-connector latest
$ php ioly.php list
$ php ioly.php search paypal
$ php ioly.php show oxid/paypal
$ php ioly.php install oxid/paypal 3.2.1

NOTE: If you are in the base directory of an OXID eShop, you don't have to set IOLY_SYSTEM_BASE and IOLY_SYSTEM_VERSION, since ioly core uses the current directory and the OXID package info "pkg.info" file to automatically set those variables.

Install ioly Core via Composer

You can also use the ioly Core via Composer:

{
  "repositories": {
    "ioly/ioly": {
      "type": "vcs",
      "url": "https://github.com/ioly/ioly.git"
    }
  },
  "require": {
    "ioly/ioly": "dev-core"
  }
}

and also use it from PHP e.g.:

require_once 'vendor/autoload.php';

$ioly = new \ioly\ioly();
$ioly->setSystemBasePath(dirname(__FILE__));
$ioly->setSystemVersion('5.2');

// add custom cookbook(s) - this is optional, see WIKI :)
$ioly->addCookbook('myowncookbook', "http://my.domain.de/git-archives/myCookbook/develop.zip");

/**
 * define ioly packages here
 */
$aPackages = array(
    'ioly/ioly-oxid-connector' => 'latest',
    //'myvendor/my-own-custom-module' => 'latest',
);

foreach ($aPackages as $package => $version) {
    if (!$ioly->isInstalledInVersion($package, $version)) {
        try {
            $ioly->install($package, $version);
            echo "\nPackage: $package installed in version: $version";
        } catch (Exception $ex) {
            echo "\nError installing package '$package': " . $ex->getMessage();
        }
    } else {
        echo "\nPackage $package already installed in version: $version";
    }
}

So, you can even get fancy and combine Composer and ioly for some kind of auto-deployment, e.g. in Composer, load the ioly core and then call a PHP script at the end:

  "scripts": {
    "post-autoload-dump": [
      "php ./install_with_ioly.php"
    ]
  },

which then installs and activates your OXID modules :) If you run into timeouts with your script, try to add this to your "composer.json" file, too:

  "config": {
    "process-timeout": 5000
  },

### Contributing

  1. write a recipe
  2. commit your recipe
  3. send a pull request
  4. done, everybody can use it!

Read more here!

Example
{
    "name": "PayPal",
    "vendor": "oxid",
    "type": "oxid",
    "license": "GNU",
    "desc": {
        "en": "PayPal payment method for checkout.",
        "de": "PayPal als Zahlart."
    },
    "tags": [
        "frontend",
        "paypal",
        "payment",
        "checkout"
    ],
    "versions": {
        "3.2.1": {
            "project": "https://github.com/OXID-eSales/paypal/tree/v3.2.1",
            "url": "https://github.com/OXID-eSales/paypal/archive/v3.2.1.zip",
            "supported": [
                "4.9",
                "4.8",
                "4.7"
            ],
            "mapping": [
                {
                    "src": "source/modules/oe/",
                    "dest": "modules/oe/"
                }
            ],
            "touch": [
                "modules/oe/vendormetadata.php"
            ]
        }
    }
}

Read more about writing a recipe.

Requirements

  • PHP 5.3.0 or above (at least 5.3.4 recommended to avoid potential bugs)
  • PHP extensions:
    • cUrl
    • JSON
    • ZIP

### Authors

Dave Holloway - http://www.gn2-netwerk.de - http://twitter.com/dajoho
Tobias Merkl - http://www.proudsourcing.de - http://twitter.com/tabsl
Stefan Moises - http://www.rent-a-hero.de - http://twitter.com/upsettweety

You can also view the list of contributors who participated in this project.

License

ioly is licensed under the MIT License - see the LICENSE file for details.