-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgetid3.drush.inc
82 lines (76 loc) · 3.02 KB
/
getid3.drush.inc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
/**
* @file
* Drush integration for getID3.
*/
/**
* Implements hook_drush_command().
*/
function getid3_drush_command() {
$items['getid3-download'] = array(
'callback' => 'drush_getid3_download',
'description' => dt('Downloads the required getID3 library from SourceForge.net.'),
'arguments' => array(
'path' => dt('Optional. A path to the download folder. If omitted Drush will use the default location (sites/all/libraries/getid3).'),
),
);
return $items;
}
/**
* Implements drush_MODULE_pre_COMMAND().
*
* This automatically downloads the library when the module is being installed.
*/
function drush_getid3_pre_pm_enable() {
$modules = func_get_args();
if (in_array('getid3', $modules)) {
drush_getid3_download();
}
}
/**
* Download the getID3 library from SourceForge.
*/
function drush_getid3_download() {
$args = func_get_args();
if (!empty($args[0])) {
$library_path = $args[0];
}
else {
$library_path = drush_get_context('DRUSH_BACKDROP_ROOT') . '/sites/all/libraries/getid3';
}
if (!file_exists($library_path)) {
// TODO: It would be great if we could use GETID3_RECOMMEND_VERSION.
$version = '1.9.9';
$filename = 'getID3-1.9.9-20141218.zip';
$md5 = "fc9a902d9ee09b281c4b35926bf00f0b";
$url = "http://downloads.sourceforge.net/project/getid3/getID3%28%29%201.x/{$version}/{$filename}";
// Create the directory.
if (!drush_shell_exec('mkdir -p %s', $library_path)) {
return drush_set_error('GETID3_MKDIR', dt('Drush was unable to create the getID3 directory at @path.', array('@path' => $library_path)));
}
$zipfile_path = $library_path . '/' . $filename;
drush_register_file_for_deletion($zipfile_path);
// Download the file.
if (!drush_shell_exec('wget -O %s %s', $zipfile_path, $url)) {
return drush_set_error('GETID3_FETCH', dt('Drush was unable to download the getID3 library to @path.', array('@path' => $zipfile_path)));
}
// Check MD5 hash.
if (md5_file($zipfile_path) != $md5) {
return drush_set_error('GETID3_MD5', dt('The downloaded file @path was corrupted. Expected MD5 checksum: @md5.', array('@path' => $zipfile_path, '@md5' => $md5)));
}
// Unzip it the file -- using the "update" option to avoid being prompted
// about overwriting files.
if (!drush_shell_exec('unzip -u %s -d %s', $zipfile_path, $library_path)) {
return drush_set_error('GETID3_UNZIP', dt('Drush was unable to unzip the archive @path.', array('@path' => $zipfile_path)));
}
// Delete the demos. They're a security risk.
$demos_path = $library_path . '/demos';
if (!drush_shell_exec('rm -r %s', $demos_path)) {
return drush_set_error('GETID3_RM', dt("Drush was unable to remove getID3's demos directory. You should do so manually.", array('@path' => $demos_path)));
}
drush_log(dt('getID3 has been installed to @path.', array('@path' => $library_path)), 'success');
}
else {
drush_log(dt('getID3 was already installed to @path.', array('@path' => $library_path)), 'success');
}
}