-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathpublish.php
More file actions
128 lines (106 loc) · 2.61 KB
/
Copy pathpublish.php
File metadata and controls
128 lines (106 loc) · 2.61 KB
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
class Feather_Publish_Task {
/**
* Register all the gear and themes and publish all their assets.
*
* @return void
*/
public function run()
{
$this->theme() and $this->gear();
echo PHP_EOL . PHP_EOL . "All theme and plugin assets have been published...";
return true;
}
/**
* Register all the gears and publish all their assets.
*
* @param array $parameters
* @return void
*/
public function gear($parameters = array())
{
$publish = empty($parameters) ? null : array_shift($parameters);
$this->publish($publish, path('gears') . DS, 'gears');
return true;
}
/**
* Register all the themes and publish all their assets.
*
* @param array $parameters
* @return void
*/
public function theme($parameters = array())
{
$publish = empty($parameters) ? null : array_shift($parameters);
$this->publish($publish, path('themes') . DS, 'themes');
return true;
}
/**
* Publish a theme or plugins assets.
*
* @param string $publish
* @param string $path
* @param string $type
* @return void
*/
private function publish($publish, $path, $type)
{
if(file_exists($path))
{
ob_start();
$publisher = new Laravel\CLI\Tasks\Bundle\Publisher;
$published = 0;
foreach(new FilesystemIterator($path) as $item)
{
if($item->isDir() and ($publish == $item->getFilename() or is_null($publish)))
{
$name = $item->getFilename();
if(file_exists($item->getPathname() . DS . 'public'))
{
// To publish the assets we must first register the bundle. Afterwards
// we can run the publish task.
Bundle::register($this->name($name, $type), array(
'location' => 'path: ' . $item->getPathname(),
'handles' => null,
'auto' => false
));
ob_start();
$publisher->publish($this->name($name, $type));
if(str_contains(ob_get_clean(), 'published'))
{
echo "[{$type}] Assets for '{$name}' have been published." . PHP_EOL;
$published++;
}
else
{
echo "[{$type}] Could not publish assets for '{$name}'." . PHP_EOL;
}
}
}
}
if(($string = ob_get_clean()) == '')
{
echo "[{$type}] There were no assets to publish.";
}
else
{
echo $string . "[{$type}] Total published: {$published}" . PHP_EOL . PHP_EOL;
}
}
else
{
echo "Could not locate the Feather {$type} directory. Please check your installation.";
}
}
/**
* Name given to theme or gear.
*
* @param string $name
* @param string $type
* @return string
*/
private function name($name, $type)
{
return "feather/{$type}/{$name}";
}
}