danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2
|
danielebarchiesi@4
|
3 /**
|
danielebarchiesi@4
|
4 * @file
|
danielebarchiesi@4
|
5 * drush integration for rdfx.
|
danielebarchiesi@4
|
6 */
|
danielebarchiesi@4
|
7
|
danielebarchiesi@4
|
8 /**
|
danielebarchiesi@4
|
9 * Implementation of hook_drush_command().
|
danielebarchiesi@4
|
10 *
|
danielebarchiesi@4
|
11 * In this hook, you specify which commands your
|
danielebarchiesi@4
|
12 * drush module makes available, what it does and
|
danielebarchiesi@4
|
13 * description.
|
danielebarchiesi@4
|
14 *
|
danielebarchiesi@4
|
15 * Notice how this structure closely resembles how
|
danielebarchiesi@4
|
16 * you define menu hooks.
|
danielebarchiesi@4
|
17 *
|
danielebarchiesi@4
|
18 * @See drush_parse_command() for a list of recognized keys.
|
danielebarchiesi@4
|
19 *
|
danielebarchiesi@4
|
20 * @return
|
danielebarchiesi@4
|
21 * An associative array describing your command(s).
|
danielebarchiesi@4
|
22 */
|
danielebarchiesi@4
|
23 function rdfx_drush_command() {
|
danielebarchiesi@4
|
24 $items = array();
|
danielebarchiesi@4
|
25
|
danielebarchiesi@4
|
26 $items['rdf-download'] = array(
|
danielebarchiesi@4
|
27 'callback' => 'rdfx_drush_arc2_download',
|
danielebarchiesi@4
|
28 'description' => dt('Downloads the required ARC2 library from http://github.com/semsol/arc2'),
|
danielebarchiesi@4
|
29 'aliases' => array('rdfdl'),
|
danielebarchiesi@4
|
30 'arguments' => array(
|
danielebarchiesi@4
|
31 'path' => dt('Optional. A path to the rdfx module. If omitted Drush will use the default location.'),
|
danielebarchiesi@4
|
32 ),
|
danielebarchiesi@4
|
33 );
|
danielebarchiesi@4
|
34 return $items;
|
danielebarchiesi@4
|
35 }
|
danielebarchiesi@4
|
36
|
danielebarchiesi@4
|
37 /**
|
danielebarchiesi@4
|
38 * Implementation of hook_drush_help().
|
danielebarchiesi@4
|
39 *
|
danielebarchiesi@4
|
40 * This function is called whenever a drush user calls
|
danielebarchiesi@4
|
41 * 'drush help <name-of-your-command>'
|
danielebarchiesi@4
|
42 *
|
danielebarchiesi@4
|
43 * @param
|
danielebarchiesi@4
|
44 * A string with the help section (prepend with 'drush:')
|
danielebarchiesi@4
|
45 *
|
danielebarchiesi@4
|
46 * @return
|
danielebarchiesi@4
|
47 * A string with the help text for your command.
|
danielebarchiesi@4
|
48 */
|
danielebarchiesi@4
|
49 function rdfx_drush_help($section) {
|
danielebarchiesi@4
|
50 switch ($section) {
|
danielebarchiesi@4
|
51 case 'drush:rdf-download':
|
danielebarchiesi@4
|
52 return dt("Downloads the required ARC2 library from http://github.com/semsol/arc2. Include the optional path.");
|
danielebarchiesi@4
|
53 }
|
danielebarchiesi@4
|
54 }
|
danielebarchiesi@4
|
55
|
danielebarchiesi@4
|
56 /**
|
danielebarchiesi@4
|
57 * Example drush command callback.
|
danielebarchiesi@4
|
58 *
|
danielebarchiesi@4
|
59 * This is where the action takes place.
|
danielebarchiesi@4
|
60 *
|
danielebarchiesi@4
|
61 * In this function, all of Drupals API is (usually) available, including
|
danielebarchiesi@4
|
62 * any functions you have added in your own modules/themes.
|
danielebarchiesi@4
|
63 *
|
danielebarchiesi@4
|
64 * To print something to the terminal window, use drush_print().
|
danielebarchiesi@4
|
65 *
|
danielebarchiesi@4
|
66 */
|
danielebarchiesi@4
|
67 function rdfx_drush_arc2_download() {
|
danielebarchiesi@4
|
68 $args = func_get_args();
|
danielebarchiesi@4
|
69 if ($args[0]) {
|
danielebarchiesi@4
|
70 $path = $args[0];
|
danielebarchiesi@4
|
71 }
|
danielebarchiesi@4
|
72 else {
|
danielebarchiesi@4
|
73 $path = drush_get_context('DRUSH_DRUPAL_ROOT');
|
danielebarchiesi@4
|
74 if (module_exists('libraries')) {
|
danielebarchiesi@4
|
75 $path .= '/' . libraries_get_path('ARC2');
|
danielebarchiesi@4
|
76 }
|
danielebarchiesi@4
|
77 else {
|
danielebarchiesi@4
|
78 $path .= '/' . drupal_get_path('module', 'rdfx') . '/vendor';
|
danielebarchiesi@4
|
79 }
|
danielebarchiesi@4
|
80 }
|
danielebarchiesi@4
|
81
|
danielebarchiesi@4
|
82 // Create the path if it does not exist yet.
|
danielebarchiesi@4
|
83 if (!is_dir($path)) {
|
danielebarchiesi@4
|
84 drush_mkdir($path);
|
danielebarchiesi@4
|
85 }
|
danielebarchiesi@4
|
86
|
danielebarchiesi@4
|
87 if (is_dir($path . '/arc')) {
|
danielebarchiesi@4
|
88 drush_log('ARC2 already present. No download required.', 'ok');
|
danielebarchiesi@4
|
89 }
|
danielebarchiesi@4
|
90 elseif (drush_op('chdir', $path) &&
|
danielebarchiesi@4
|
91 drush_shell_exec('wget --no-check-certificate -O arc.tar.gz http://github.com/semsol/arc2/tarball/master') &&
|
danielebarchiesi@4
|
92 drush_shell_exec('tar zxvf arc.tar.gz') &&
|
danielebarchiesi@4
|
93 drush_shell_exec('mv semsol-arc2-* arc') &&
|
danielebarchiesi@4
|
94 drush_shell_exec('rm arc.tar.gz')) {
|
danielebarchiesi@4
|
95 drush_log(dt('The latest ARC2 library has been downloaded to @path', array('@path' => $path)), 'success');
|
danielebarchiesi@4
|
96 }
|
danielebarchiesi@4
|
97 else {
|
danielebarchiesi@4
|
98 drush_log(dt('Drush was unable to download the ARC2 library to @path', array('@path' => $path)), 'error');
|
danielebarchiesi@4
|
99 }
|
danielebarchiesi@4
|
100 }
|
danielebarchiesi@4
|
101
|
danielebarchiesi@4
|
102 /**
|
danielebarchiesi@4
|
103 * Implements drush_MODULE_post_COMMAND().
|
danielebarchiesi@4
|
104 */
|
danielebarchiesi@4
|
105 function drush_rdfx_post_pm_enable() {
|
danielebarchiesi@4
|
106 $extensions = func_get_args();
|
danielebarchiesi@4
|
107 // Deal with comma delimited extension list.
|
danielebarchiesi@4
|
108 if (strpos($extensions[0], ',') !== FALSE) {
|
danielebarchiesi@4
|
109 $extensions = explode(',', $extensions[0]);
|
danielebarchiesi@4
|
110 }
|
danielebarchiesi@4
|
111
|
danielebarchiesi@4
|
112 if (in_array('rdfx', $extensions) && !drush_get_option('skip')) {
|
danielebarchiesi@4
|
113 rdfx_drush_arc2_download();
|
danielebarchiesi@4
|
114 }
|
danielebarchiesi@4
|
115 }
|