Coder Social home page Coder Social logo

narrowspark / automatic Goto Github PK

View Code? Open in Web Editor NEW
12.0 4.0 1.0 1.27 MB

:microscope: Composer plugin to automate the most common tasks of applications.

License: MIT License

PHP 99.57% Shell 0.03% Dockerfile 0.40%
composer-plugin narrowspark discovery composer-installer automatic configurator narrowspark-automatic skeletons script-executor php

automatic's Introduction

Narrowspark Automatic

Narrowspark Automatic automates the most common tasks of applications, like installing and removing bundles or providers, copying files, boosting dependencies downloads, creating skeletons and other Composer dependencies based configurations.

How Does Narrowspark Automatic Work

Narrowspark Automatic is a Composer plugin that modifies the behavior of the require, update, create project, and remove commands. When installing or removing dependencies in an Automatic extended app, your Application can perform tasks before and after the execution of Composer tasks.

Consider the following example:

cd your-project
composer require viserio/console

If you execute this command in your Application that doesn’t support Narrowspark Automatic, this command will execute in the normal composer require behavior.

Note The automatic.json and composer.json extra key automatic are used to configure Narrowspark Automatic with configurators, script executors, custom-configurators, and more.

When Narrowspark Automatic is installed in your Application, it will check if a automatic.json file or a composer.json extra key with automatic exists. In the above example, Automatic decided which automated tasks need to be run after the installation.

Note Narrowspark Automatic keeps tracks of the configuration, in a automatic.lock file, which must be committed to your code repository.

Using Narrowspark Automatic in New Applications

Include Narrowspark Automatic as a required dependency to your app with this command: composer require narrospark/automatic.

Using Narrowspark Automatic for Skeleton Application

Narrowspark Automatic supports skeleton generation. For example this is your composer.json file:

{
    "type": "project",
    "license": "MIT",
    "require": {
        "php": "^7.2",
        "ext-mbstring": "*",
        "narrowspark/automatic": "^0.3.5",
        "narrowspark/skeleton-generators": "^0.1.0"
    },
    "extra": {
        "app-dir": "app",
        "config-dir": "config",
        "database-dir": "database",
        "public-dir": "public",
        "resources-dir": "resources",
        "routes-dir": "routes",
        "storage-dir": "storage",
        "tests-dir": "tests"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "exclude-from-classmap": [
            "tests/"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

Automatic search all packages for the package type: automatic-skeleton. If packages are found with this type, all skeletons will be saved in the automatic.lock for the runtime.

This means you can execute the following command: composer create-project your/project to create an Automatic extended app, Automatic will ask which skeleton can be generated for your app.

Read the skeleton documentation to learn everything about how to create skeletons for your own app.

Narrowspark Automatic tasks are defined in a automatic.json file or in the composer extra key automatic and can contain any number of other files and directories. For example, this is the automatic.json for viserio/console:

{
    "configurators": {
        "providers": {
            "Viserio\\Component\\Console\\Provider\\ConsoleServiceProvider": ["global"],
            "Viserio\\Component\\Console\\Provider\\LazilyCommandsServiceProvider": ["global"]
        },
        "proxies": {
            "Viserio\\Component\\Console\\Proxy\\Console": ["global"]
        }
    },
    "script-extenders": [
        "Viserio\\Component\\Console\\Automatic\\CerebroScriptExtender"
    ]
}

The providers and proxies option tells Narrowspark Automatic in which environments this provider, proxy can be turn on automatically (all in this case).

The script-extenders option adds a new script executor to the Narrowspark Automatic auto-scripts. Now you can run viserio console commands in the auto-scripts section of your composer.json app file.

The instructions defined in this automatic.json file are also used by Narrowspark Automatic when uninstalling dependencies (for example composer remove viserio/console) to undo all changes. This means that Automatic can remove the Console Provider and Proxy from the app and remove the script executor from Narrowspark Automatic.

Read the configuration documentation to learn everything about how to create configuration for your own packages.

Automatic extends Composer

Narrowspark Automatic adds a parallel downloader with the feature to skip old dependencies tags for a download boost.

With the below example you can see how to add a skip tag to Narrowspark Automatic, with this it will skip all tags of cakephp that are older then 3.5.

{
    "extra": {
        "automatic": {
            "require": {
                "cakephp/cakephp": ">=3.5"
            }
        }
    }
}

You can skip auto discovery for packages with this Narrowspark Automatic key dont-discover in your composer.json extra automatic section. Use the package name to skip the auto discovery, like in this example:

{
    "extra" : {
        "dont-discover": [
            "viserio/console"
        ]
    }
}

Auto discovery will now be skipped for viserio/console.

Automatic Security Audit

Narrowspark Automatic shows you on every composer install and composer update known security vulnerabilities for your installed dependencies based on FriendsOfPHP/security-advisories database.

If you like to change the default HTTP timeout = 20 for the downloader, add audit to your composer.json extra section, like in this example:

{
    "extra" : {
        "audit": {
            "timeout": "30"
        }
    }
}

Testing

You need to run:

$ php vendor/bin/phpunit

Versioning

This library follows semantic versioning, and additions to the code ruleset are performed in major releases.

Changelog

Please have a look at CHANGELOG.md.

Contributing

Please have a look at CONTRIBUTING.md.

Code of Conduct

Please have a look at CODE_OF_CONDUCT.md.

Credits

License

This package is licensed using the MIT License.

Please have a look at LICENSE.md.

automatic's People

Contributors

dependabot-preview[bot] avatar prisis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

prisisforks

automatic's Issues

Show a warning if a key can't be executed

Q A
Bug report? no
Feature request? yes
BC Break report? yes
Version 0.4.0

Description:

Show a warning if a key in extra automatic can't be executed, because the configurator is missing

Add functional testing

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 0.8.1

Description:

  • test for installing automatic and security plugin
  • test for installing package with and without automatic support

Add support for a automatic.json

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 0.3.0

Description:

A alternative to the composer.json extra field

add disable-exit on security command

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 0.10.0

Description:

The command should be able to run without to break a ci

Add a configurator for proxies

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 1

Description:

Create a configurator like the service provider for proxies.

updated automatic events

Q A
Bug report? no
Feature request? yes
BC Break report? yes
Version 0.7.0

Description:

Added priorities to composer automatic events

Adding a ConfiguratorInstaller

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 1

Description:

Using the ConfiguratorInstaller for a easy global discover configurator install

Add a OPcache command to composer

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 1

Description:

Clear OPcache:
opcache:clear

Show OPcache config:
opcache:config

Show OPcache status:
opcache:status

Pre-compile your application code:
opcache:optimize

Add a skip tags manager

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 0.4.0

Description:

Extend the symfony skip logic, so that i can be used for all packages

upgrade coding-standard to v1.4.0

Q A
Bug report? no
Feature request? no
BC Break report? no
Version 0.9.0

Description:

Upgrade to the coding-standard to the new version v1.4.0

Add documentation

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 0.4.0

Add prettyci

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 0.10.0

Description:

Use prettyci for coding standard

Add Uninstall Event to Security Plugin

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 0.8.0

Description:

Added a uninstall event to the security plugin to remove post-messages from root composer.json

Add php7.3 support

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 0.10.0

Refactor the ScriptExecutor

Q A
Bug report? no
Feature request? yes
BC Break report? no
Version 0.3.0

Description:

  • should support registration of automatic-script-executors

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.