Drupal: Adding an component to existing Feature using Drush

On a recent Drupal (link) project, I installed the Environment Indicator module (link). One of the great aspects of this module is that it integrates with the Features (link) module. After featurizing the module’s configuration, I decided that I also wanted the feature to include the user permissions. I found that there are multiple ways to add a component to an existing feature.

We use Drush (link) for all of our Feature manipulation – although it can be slow, it is must faster than using the UI. To create the Environment Indicator feature, I first had to get the name of the component:

drush fc
[14] : environment_indicator_environment

To create the Feature:

drush fe -y --version-set="7.x-1.0" global_environment_indicator environment_indicator_environment --destination="sites/all/modules/custom/global"

Used the Feature Export (link) command to create the Feature:

Feature Name: global_environment_indicator
Feature Component: environment_indicator_environment
Feature Version (optional): 7.x-1.0
Feature Destination (optional): We generally place these in our custom modules folder.
-y (optional): Ignore prompts – confirm automatically

After my feature was created, I decided to add the user permissions to the feature. I first had to find the component names:

drush fc
[49] : user_permission

After entering 49, I found that the user permissions for the Environment Indicator were:

user_permission:administer environment indicator settings
user_permission:access environment indicator
user_permission:access environment indicator default_environment
user_permission:access environment indicator dev_environment
user_permission:access environment indicator stage_environment
user_permission:access environment indicator prod_environment

To add the components to my Feature, I would normally enter:

drush fe -y --version-increment feature_name component_name component_name ...

The component names are separated by spaces, but the sources for the component also included spaces:

user_permission:administer environment indicator settings

So I added quotes to the sources:

drush fe -y --version-increment global_environment_indicator user_permission:"administer environment indicator settings" user_permission:"access environment indicator" user_permission:"access environment indicator default_environment" user_permission:"access environment indicator dev_environment" user_permission:"access environment indicator stage_environment" user_permission:"access environment indicator prod_environment"

I then verified that the features was updated by viewing the file: global_environment_indicator.info. the Feature was successfully updated.

Adding a component to Existing Feature without Drush

Another quick way to add a component to an existing Feature is to first add the components to the .info file:

features[user_permission][] = administer environment indicator settings
features[user_permission][] = access environment indicator

And then run the Feature Update command:

drush fu -y --version-increment global_environment_indicator

That’s it. Adding a component to an existing Feature is fairly straightforward. Enjoy.

Be Sociable, Share!

Checkout My New Site - T-shirts For Geeks