GithubHelp home page GithubHelp logo

bldr's Introduction

Bldr

Simplified Build System/Task Runner

Uses Yaml, JSON, XML, PHP, or INI for configs

Quick Usage

To develop, run ./script/bootstrap, and then ./script/test to run the tests.

Documentation

Documentation is over at http://docs.bldr.io/en/latest/

Badges

Tests are broken right now...

bldr's People

Contributors

ameenross avatar cordoval avatar cryptiklemur avatar ekho avatar ifdattic avatar padam87 avatar robloach avatar scrutinizer-auto-fixer avatar waffle-iron avatar wouterj avatar

Stargazers

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

Watchers

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

bldr's Issues

Installation issue

You should not recommend to install bldr with composer but provide a phar instead. Adding bldr to dependencies would lead to dependency issues. For example, it prevents the use by people who wants to stick on Symfony LTS (2.3) as it has different required for symfony components (bldr use 2.4+ version).

[Core] - Events

Add events to the workflow of Bldr

There should be the following events:

  • Event on start - \Bldr\Event::START
  • Event before a profile - \Bldr\Event::PRE_PROFILE
  • Event before a task - \Bldr\Event::PRE_TASK
  • Event before a call - \Bldr\Event::PRE_CALL
  • Event after a call - \Bldr\Event::POST_CALL
  • Event after a task - \Bldr\Event::POST_TASK
  • Event after a profile - \Bldr\Event::POST_PROFILE
  • Event on end - \Bldr\Event::END

Window bug #1 - Clear is not a recoginze command


 D:\xampp_new\htdocs\matthew>php bldr.phar build



  [RuntimeException]
  Not enough arguments.



build [-t|--tasks="..."] profile



D:\xampp_new\htdocs\matthew>php bldr.phar build tdd


  ______    __       _______   ______
 |   _  \  |  |     |       \ |   _  \
 |  |_)  | |  |     |  .--.  ||  |_)  |
 |   _  <  |  |     |  |  |  ||      /
 |  |_)  | |  `----.|  `--`  ||  |\  \
 |______/  |_______||_______/ | _| `._|



 Building the 'cordoval/matthew-7-12' project
  - Matthew 7:12 project -

 Using the 'tdd' profile
  - Local Development Profile -


Running the testLocal task
> Runs the PHPUnit Tests

'"clear"' is not recognized as an internal or external comm
operable program or batch file.

SRC_DIR="`pwd`"
cd "`dirname "$0"`"
cd "../phpunit/phpunit"
BIN_TARGET="`pwd`/phpunit"
cd "$SRC_DIR"
"$BIN_TARGET" "$@"



Running the watch task
> Watch Task for Local Development

Watching for changes

bldr-io/bldr suggests installing bldr-io/bldr-git

After installing bldr globally, Composer says:

bldr-io/bldr suggests installing bldr-io/bldr-git (Allows for interacting with git commands)

When I run

composer global require bldr-io/bldr-git "dev-master"

I get the error

bldr-io/bldr-git dev-master requires bldr-io/bldr-execute >=1.3.0,<2.0.0 -> no matching package found.

When I run

composer global require bldr-io/bldr-execute "dev-master"

I get the error

The requested package bldr-io/bldr-execute could not be found in any version, there may be a typo in the package name.

Do I need bldr-io/bldr-git and if so, How?

[Block] - AWS

Add the ability to interact with AWS and their SDK

Ideas

This is a list of ideas that would be nice to have for Bldr

  • Symfony Extension - #5

    This has been started, but it would be nice to have shortcut tasks
    for things like assetic:dump and cache:clear

  • Deploy Extension - #6

    This would be used to deploy to servers, or to git. It would be nice
    to be able to run a command (or more) on the server, if deploying to
    a server.

  • Notify Extension - #7

    This would be used to either send a notification to the screen, or
    to send a notification to an email. Could be set up with AWS too, to
    use SNS/SES. (Possibly Growl)

  • Git Extension - #9

    Already started, but add logic for the reset of the commands

  • [Gush Extension][1] - #10

    Implement integration with gush for things like semver generating and auto-tagging

  • Database Extension - #12

    Add ability to interact with cli databases: mysql, postgres, mongo etc

  • Services Extension - #11

    Add the ability to restart services using service or /etc/init.d/

  • Import Yaml - #13

    Add the ability to import yaml files from other locations. Would allow for a parameters file in a global
    directory for things like username and password for SMTP

  • Watch Extension - #14

    Add the ability to watch for file changes

  • Bldr Blocks - #17

    Add the ability for users to use "blocks" (recipes) for bldr. Blocks would contain tasks to run, with calls.
    Mimicking a .bldr.yml file.

Import Feature

Mentioned in #2

Add the ability to import yaml files from other locations. Would allow for a parameters file in a global directory for things like username and password for SMTP

[Proposal] - Better exception handling

Invoking bldr with an empty .bldr.yml show this console output:

$ bin/bldr build
PHP Fatal error:  Uncaught exception 'Symfony\Component\Config\Definition\Exception\InvalidConfigurationException' with message 'The child node "name" at path "bldr" must be configured.' in /var/www/vendor/symfony/config/Symfony/Component/Config/Definition/ArrayNode.php:234
Stack trace:
#0 /var/www/vendor/symfony/config/Symfony/Component/Config/Definition/BaseNode.php(301): Symfony\Component\Config\Definition\ArrayNode->finalizeValue(Array)
#1 /var/www/vendor/symfony/config/Symfony/Component/Config/Definition/Processor.php(37): Symfony\Component\Config\Definition\BaseNode->finalize(Array)
#2 /var/www/vendor/symfony/config/Symfony/Component/Config/Definition/Processor.php(50): Symfony\Component\Config\Definition\Processor->process(Object(Symfony\Component\Config\Definition\ArrayNode), Array)
#3 /var/www/vendor/bldr-io/bld in /var/www/vendor/symfony/config/Symfony/Component/Config/Definition/ArrayNode.php on line 234

Fatal error: Uncaught exception 'Symfony\Component\Config\Definition\Exception\InvalidConfigurationException' with message 'The child node "name" at path "bldr" must be configured.' in /var/www/vendor/symfony/config/Symfony/Component/Config/Definition/ArrayNode.php on line 234

Symfony\Component\Config\Definition\Exception\InvalidConfigurationException: The child node "name" at path "bldr" must be configured. in /var/www/vendor/symfony/config/Symfony/Component/Config/Definition/ArrayNode.php on line 234

Call Stack:
    0.0004     236176   1. {main}() /var/www/vendor/bldr-io/bldr/bin/bldr:0
    0.0086     700552   2. Bldr\Application::create() /var/www/vendor/bldr-io/bldr/bin/bldr:39
    0.0086     701152   3. Bldr\Application->__construct() /var/www/vendor/bldr-io/bldr/src/Application.php:55
    0.0277    1507992   4. Bldr\Application->buildContainer() /var/www/vendor/bldr-io/bldr/src/Application.php:70
    0.0304    1857856   5. Bldr\DependencyInjection\ContainerBuilder->__construct() /var/www/vendor/bldr-io/bldr/src/Application.php:150
    0.0313    1923072   6. Bldr\DependencyInjection\ContainerBuilder->compile() /var/www/vendor/bldr-io/bldr/src/DependencyInjection/ContainerBuilder.php:35
    0.0521    3027432   7. Symfony\Component\DependencyInjection\ContainerBuilder->compile() /var/www/vendor/bldr-io/bldr/src/DependencyInjection/ContainerBuilder.php:53
    0.0534    3035008   8. Symfony\Component\DependencyInjection\Compiler\Compiler->compile() /var/www/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerBuilder.php:613
    0.0534    3037048   9. Symfony\Component\DependencyInjection\Compiler\MergeExtensionConfigurationPass->process() /var/www/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/Compiler.php:117
    0.0539    3042192  10. Bldr\DependencyInjection\BldrExtension->load() /var/www/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php:50
    0.0547    3081032  11. Symfony\Component\Config\Definition\Processor->processConfiguration() /var/www/vendor/bldr-io/bldr/src/DependencyInjection/BldrExtension.php:28
    0.0656    3644632  12. Symfony\Component\Config\Definition\Processor->process() /var/www/vendor/symfony/config/Symfony/Component/Config/Definition/Processor.php:50
    0.0657    3645904  13. Symfony\Component\Config\Definition\BaseNode->finalize() /var/www/vendor/symfony/config/Symfony/Component/Config/Definition/Processor.php:37
    0.0657    3646128  14. Symfony\Component\Config\Definition\ArrayNode->finalizeValue() /var/www/vendor/symfony/config/Symfony/Component/Config/Definition/BaseNode.php:301


Miscellaneous Extension

Sorta Mentioned in #2

Need a place for tasks that shouldn't really be in their own extension (yet).

  • service / init.d / launchctl management
  • sleep call

Mockery error causing tests to fail

Hi! I'm having trouble running the test suite on a fresh clone:

$> bash script/test
...
1) Bldr\Test\ApplicationTest::testFactory
BadMethodCallException: Method Mockery_0_Dflydev_EmbeddedComposer_Core_EmbeddedComposerInterface::findPackage() does not exist on this mock object

/Users/mif08/git-projects/bldr/src/Application.php:83
/Users/mif08/git-projects/bldr/src/Application.php:71
/Users/mif08/git-projects/bldr/tests/ApplicationTest.php:31

In ApplicationTest::testFactory:

$application = Application::create(\Mockery::mock('Dflydev\EmbeddedComposer\Core\EmbeddedComposerInterface'));

Mockery appears to be crapping out mocking the findPackage method. I have zero experience with it so not sure what's going on there!

Whilst looking for solutions I found this in Application::__construct:

$version = '@package_version@';
if ($version === '@'.'package_version@') {
    $version = $embeddedComposer->findPackage('bldr-io/bldr')->getPrettyVersion();

Am I missing a build stage? Should $version be set to something else?

M

add ifs and unless to calls

i had the need to run some profile in travis

because i was running it for several versions 5.5 and hhvm

i wanted to skip the secure task in the list of tasks under travis profile

Task Info Command

It would behooooove us to have a command that would list out the name, description and options of a task.

PHP Tasks Extension

Mentioned in #2

This may not be the right name, but it would be nice to have methods for the tasks like:

  • PHPUnit
  • PHPCS
  • PHPMD
  • Behat
  • PHPDox
  • PHPCPD

Codeship Extension

Add the ability to have shortcut commands. For example:

  • Creating new mysql users

Allow not escaped commands

I need to use Bash variables in my commands, e.g.: git push https://${GH_TOKEN}@github.com/.... The ProcessBuilder escapes each argument, resulting in 'git' 'push' 'https://${GH_TOKEN}@gihub.com/'. This causes my build to fail, since the authentication is no longer correct.

I propose to add an option called raw. When it's set to true, it'll simply execute implode(' ', $arguments) instead of using the ProcessBuilder.

Tests!

We need more test coverage!

could you please use a PR flow?

rather than doing commits straight to master, can you orient everything into organized logic units of advacement? that way i can learn and review, else i will not get any notification. Thanks. Gush has such a flow.

Sleep Call

Have the ability to sleep for x seconds

[Fix] - 2 watchers simultaneously

Hi,

I've tried to use 2 watchers simultaneously, without much success. Is there any way to do this?

Thanks!

bldr:
    name: Test
    profiles:
        dev:
            description: Development
            tasks:
                - fosJSRouting
                - assetic
                - watch
    tasks:
        fosJSRouting:
            description: Dumps the routing
            calls:
                -
                    type: exec
                    failOnError: true
                    executable: php
                    arguments:
                        - app/console
                        - fos:js-routing:dump
        assetic:
            description: Dumps assets
            calls:
                -
                    type: exec
                    failOnError: true
                    executable: php
                    arguments:
                        - app/console
                        - assetic:dump
                        - --force
        watch:
            calls:
                -
                    type: watch
                    src:
                        - { path: [app/cache/dev], files: appDevUrlGenerator.php }
                    task: fosJSRouting
                -
                    type: watch
                    src:
                        - { path: web, files: [*.js, *.css, *.less], recursive: true }
                    task: assetic

[Block] - Databases

Mentioned in #2

Add ability to interact with cli databases: mysql, postgres, mongo etc

[Block] - Gush

Mentioned in #2

Implement integration with gush for things like semver generating and auto-tagging

@cordoval

Add profile inheritance

For instance, I have a profile called build which builds the site and a profile publish which will build and publish the website. It would be great if publish could simply add build as parent and add the publish task.

[Block] - Deployment

Mentioned in #2

This would be used to deploy to servers, or to git. It would be nice
to be able to run a command (or more) on the server, if deploying to
a server.

Installer fails on Windows

I can't run the phar install as Windows does not have wget.

As its recommended to use curl for getting the installer, this should also be used in the installer when running Windows. Second, chmod should be ignored on Windows.

Create Bldr Blocks Repo

As we quickly talked about - it would be cool to have, essentially, a library of compiled recipes or pre-built workflows. I think calling them 'blocks' instead of recipes, would have some cool synergy with the name of this library.

[Block] - Git

Mentioned in #2

Add the ability to run git commands from within bldr.

Watch and Apply Integration

Would be awesome to be able to pass the files that were changed during a watch to an apply call, or other calls.

Task should fail if executable failed

  ______    __       _______   ______
 |   _  \  |  |     |       \ |   _  \
 |  |_)  | |  |     |  .--.  ||  |_)  |
 |   _  <  |  |     |  |  |  ||      /
 |  |_)  | |  `----.|  `--`  ||  |\  \
 |______/  |_______||_______/ | _| `._|

 Building the 'wouterj/site' project 

 Using the 'build' profile                        
  - Building the website before it goes online -  

Running the sass_generate task
> Creates the css file

OptionParser::InvalidOption: invalid option: --style compressed
  Use --trace for backtrace.

Running the sculpin_generate task
> Creates the static website using Sculpin

  [RuntimeException]                       
  The "--env prod" option does not exist.  

generate [--watch] [--server] [--url="..."] [--port="..."]

 Build Success! 

Support bash style environment variables

Resolves #99 in a better way that is currently implemented

9:12 AM <aequasi> $...$
9:12 AM <aequasi> needs an ending delimiter
9:12 AM <aequasi> if you can think of a better idea... i wouldnt mind changing the implementation
9:13 AM <WouterJ> I would support the bash syntax: ${...}

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.