bldr-io / bldr Goto Github PK
View Code? Open in Web Editor NEWAwesome Task Runner
Home Page: http://bldr.io
License: MIT License
Awesome Task Runner
Home Page: http://bldr.io
License: MIT License
Mentioned in #2
It would be nice to have shortcut tasks for things like assetic:dump
and cache:clear
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
Add events to the workflow of Bldr
There should be the following events:
\Bldr\Event::START
\Bldr\Event::PRE_PROFILE
\Bldr\Event::PRE_TASK
\Bldr\Event::PRE_CALL
\Bldr\Event::POST_CALL
\Bldr\Event::POST_TASK
\Bldr\Event::POST_PROFILE
\Bldr\Event::END
Have the ability to sleep
for x
seconds
Add the ability to interact with AWS and their SDK
Might make more sense, to go in line with the blocks stuff. Thoughts @kmfk?
[Exception]
File build/coverage
does not exist.
Add the ability to run selected commands even when the build fails
Mentioned in #2
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)
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
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
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.
______ __ _______ ______
| _ \ | | | \ | _ \
| |_) | | | | .--. || |_) |
| _ < | | | | | || /
| |_) | | `----.| `--` || |\ \
|______/ |_______||_______/ | _| `._|
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!
currently I have to do this
php bldr.phar build --tasks=loadFixtures cs
cs is unrelated to loadFixtures but i am forced to put it under a profile
can we do a shortcut for this
php bldr.phar -t load
so that even the whole string is typehinted and abbreviated?
We need more test coverage!
Probably Uglify
Sorta Mentioned in #2
Need a place for tasks that shouldn't really be in their own extension (yet).
service
/ init.d
/ launchctl
managementsleep
callIt would behooooove us to have a command that would list out the name, description and options of a task.
Add the ability to have shortcut commands. For example:
CoffeeScript compiler, if its possible
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?
Would be awesome to be able to pass the files that were changed during a watch to an apply call, or other calls.
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.
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.
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
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
Mentioned in #2
Add the ability to watch for file changes, and run a task/profile
Should mimic AsseticBundle's WatchCommand.
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).
Mentioned in #2
Add the ability to run git commands from within bldr.
Mentioned in #2
Add ability to interact with cli databases: mysql
, postgres
, mongo
etc
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.
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
Mentioned in #2
This may not be the right name, but it would be nice to have methods for the tasks like:
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.
Block for executing tasks on remote servers. This could be used for, say, deployments.
This might be a good library to use: https://github.com/phpseclib/phpseclib
The repo for the block is here: https://github.com/bldr-io/remote-block
This will need to tie in to some event (probably a pre_call event) and take over the execution from there. So, that needs to be done first.
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.
This is a list of ideas that would be nice to have for Bldr
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.
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
Add the ability to watch for file changes
Add the ability for users to use "blocks" (recipes) for bldr. Blocks would contain tasks to run, with calls.
Mimicking a .bldr.yml
file.
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: ${...}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.