123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- <?php
- /**
- * @file
- * Example drush command.
- *
- * To run this *fun* command, execute `sudo drush --include=./examples mmas`
- * from within your drush directory.
- *
- * See `drush topic docs-commands` for more information about command authoring.
- *
- * You can copy this file to any of the following
- * 1. A .drush folder in your HOME folder.
- * 2. Anywhere in a folder tree below an active module on your site.
- * 3. /usr/share/drush/commands (configurable)
- * 4. In an arbitrary folder specified with the --include option.
- */
- /**
- * Implementation of hook_drush_command().
- *
- * In this hook, you specify which commands your
- * drush module makes available, what it does and
- * description.
- *
- * Notice how this structure closely resembles how
- * you define menu hooks.
- *
- * See `drush topic docs-commands` for a list of recognized keys.
- *
- * @return
- * An associative array describing your command(s).
- */
- function sandwich_drush_command() {
- $items = array();
- // The 'make-me-a-sandwich' command
- $items['make-me-a-sandwich'] = array(
- 'description' => "Makes a delicious sandwich.",
- 'arguments' => array(
- 'filling' => 'The type of the sandwich (turkey, cheese, etc.)',
- ),
- 'options' => array(
- 'spreads' => 'Comma delimited list of spreads (e.g. mayonnaise, mustard)',
- ),
- 'examples' => array(
- 'drush mmas turkey --spreads=ketchup,mustard' => 'Make a terrible-tasting sandwich that is lacking in pickles.',
- ),
- 'aliases' => array('mmas'),
- 'bootstrap' => DRUSH_BOOTSTRAP_DRUSH, // No bootstrap at all.
- );
-
- // Commandfiles may also add topics. These will appear in
- // the list of topics when `drush topic` is executed.
- // To view this topic, run `drush --include=/full/path/to/examples topic`
- $items['sandwich-exposition'] = array(
- 'description' => 'Ruminations on the true meaning and philosophy of sandwiches.',
- 'hidden' => TRUE,
- 'topic' => TRUE,
- 'bootstrap' => DRUSH_BOOTSTRAP_DRUSH,
- 'callback' => 'drush_print_file',
- 'callback arguments' => array(dirname(__FILE__) . '/sandwich-topic.txt'),
- );
- return $items;
- }
- /**
- * Implementation of hook_drush_help().
- *
- * This function is called whenever a drush user calls
- * 'drush help <name-of-your-command>'. This hook is optional. If a command
- * does not implement this hook, the command's description is used instead.
- *
- * This hook is also used to look up help metadata, such as help
- * category title and summary. See the comments below for a description.
- *
- * @param
- * A string with the help section (prepend with 'drush:')
- *
- * @return
- * A string with the help text for your command.
- */
- function sandwich_drush_help($section) {
- switch ($section) {
- case 'drush:make-me-a-sandwich':
- return dt("This command will make you a delicious sandwich, just how you like it.");
- // The 'title' meta item is used to name a group of
- // commands in `drush help`. If a title is not defined,
- // the default is "All commands in ___", with the
- // specific name of the commandfile (e.g. sandwich).
- // Command files with less than four commands will
- // be placed in the "Other commands" section, _unless_
- // they define a title. It is therefore preferable
- // to not define a title unless the file defines a lot
- // of commands.
- case 'meta:sandwich:title':
- return dt("Sandwich commands");
- // The 'summary' meta item is displayed in `drush help --filter`,
- // and is used to give a general idea what the commands in this
- // command file do, and what they have in common.
- case 'meta:sandwich:summary':
- return dt("Automates your sandwich-making business workflows.");
- }
- }
- /**
- * Implementation of drush_hook_COMMAND_validate().
- *
- * The validate command should exit with
- * `return drush_set_error(...)` to stop execution of
- * the command. In practice, calling drush_set_error
- * OR returning FALSE is sufficient. See drush.api.php
- * for more details.
- */
- function drush_sandwich_make_me_a_sandwich_validate() {
- $name = posix_getpwuid(posix_geteuid());
- if ($name['name'] !== 'root') {
- return drush_set_error('MAKE_IT_YOUSELF', dt('What? Make your own sandwich.'));
- }
- }
- /**
- * Example drush command callback. This is where the action takes place.
- *
- * The function name should be same as command name but with dashes turned to
- * underscores and 'drush_commandfile_' prepended, where 'commandfile' is
- * taken from the file 'commandfile.drush.inc', which in this case is 'sandwich'.
- * Note also that a simplification step is also done in instances where
- * the commandfile name is the same as the beginning of the command name,
- * "drush_example_example_foo" is simplified to just "drush_example_foo".
- * To also implement a hook that is called before your command, implement
- * "drush_hook_pre_example_foo". For a list of all available hooks for a
- * given command, run drush in --debug mode.
- *
- * If for some reason you do not want your hook function to be named
- * after your command, you may define a 'callback' item in your command
- * object that specifies the exact name of the function that should be
- * called. However, the specified callback function must still begin
- * with "drush_commandfile_" (e.g. 'callback' => "drush_example_foo_execute")
- * if you want that all hook functions are still called (e.g.
- * drush_example_pre_foo_execute, and so on).
- *
- * In this function, all of Drupal's API is (usually) available, including
- * any functions you have added in your own modules/themes.
- *
- * @see drush_invoke()
- * @see drush.api.php
- */
- function drush_sandwich_make_me_a_sandwich($filling = 'ascii') {
- $str_spreads = '';
- if ($spreads = drush_get_option('spreads')) {
- $list = implode(' and ', explode(',', $spreads));
- $str_spreads = ' with just a dash of ' . $list;
- }
- $msg = dt('Okay. Enjoy this !filling sandwich!str_spreads.',
- array('!filling' => $filling, '!str_spreads' => $str_spreads)
- );
- drush_print("\n" . $msg . "\n");
- drush_print(file_get_contents(dirname(__FILE__) . '/sandwich.txt'));
- }
|