-
Notifications
You must be signed in to change notification settings - Fork 9
Road map
Stephen Holdaway edited this page Jun 25, 2015
·
4 revisions
The current on-going work on Beam is a clean up of the internals in the branch refactor
. Things that are done on the lists below will be crossed off. Goals of this refactor are primarily:
- Break down monolithic/god classes/methods
- Make it possible for deep components (eg. DeploymentProvider) to be verbose or prompt (? maybe)
Current state: Everything is centred around the Beam class. This looks like it was modelled after Composer, but has ended up a bit messy. It's currently difficult to add functionality without putting it in the Beam class. The Beam class (875 lines) currently handles:
- Determining context by combining config options with command line options/arguments
- Validating the resulting context
- Managing files (exporting from Git, running local and remote commands)
- Running the deployment (via a bunch of abstracted methods like "isUp", "doDryrun", and "doRun")
Proposed architecture: Based more around components that can be created and controlled by a command. The same components are in use, but the Beam class is removed.
- Beam
- TransferCommand::execute();
- Rename DeploymentProvider to Transport
- Move command running from Beam to Transport
- Change
.beamlog
file to use JSON; document schema
Note that some of these things could be added without the a refactor.
- Include
git describe
output in beam log - Allow notification of a url on deploy
- Respect or remove no-interaction option (and other Symfony console default options)
- #44 - send .beamlog to server when using path mode
- #30 - command to view the status of a server
- #14 - place source/target info after file list if the list was excessively large
- Allow rolling back to commits on the same branch for locked targets
- Add variable replacements to config processing (eg.
%%target_name%%
becomeslive
) - Allow deploying to multiple servers from the same prepared location (+ simultaneously would be nice)
- Error on use of tag that doesn't match any options
Autocomplete for path flag- Interactive init command
- GUI config editor web tool
-
deploy-folder
config option to allow deploying a sub directory of a project instead of the git root - Multithreaded FTP