-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathExport.php
More file actions
125 lines (85 loc) · 3.28 KB
/
Export.php
File metadata and controls
125 lines (85 loc) · 3.28 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
<?php
namespace Tdwesten\StatamicBuilder\Console;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;
use Statamic\Facades\YAML;
class Export extends Command
{
protected $signature = 'statamic-builder:export';
protected $description = 'Export blueprints and fieldsets from the Statamic Builder to YAML.';
protected $name = 'Statamic Builder Export';
public function handle()
{
$this->line('Exporting blueprints and fieldsets...');
$this->newLine();
$this->exportBlueprints();
$this->exportFieldSets();
$this->exportCollections();
$this->newLine();
$this->info('All done!');
}
private function exportCollections()
{
$namespaces = collect(config('statamic.builder.collections', []));
$namespaces->each(function ($collections): void {
$collections = collect($collections);
$collections->each(function ($collection): void {
$this->exportCollection($collection);
});
});
}
private function exportCollection($collection)
{
$filesystem = Storage::build([
'driver' => 'local',
'root' => base_path('resources/collections'),
]);
$data = (new $collection)->register();
$path = base_path("resources/collections/{$data->handle()}.yaml");
$yaml = YAML::dump($data->toArray());
$this->line("Exporting collection [{$data->handle()}] to [{$path}]");
$filesystem->put("{$data->handle()}.yaml", $yaml);
}
private function exportBlueprints()
{
$namespaces = collect(config('statamic.builder.blueprints', []));
$namespaces->each(function ($blueprints, $namespace): void {
$blueprints = collect($blueprints);
$blueprints->each(function ($blueprint, $handle) use ($namespace): void {
$this->exportBlueprint($namespace, $handle, $blueprint);
});
});
}
private function exportBlueprint($namespace, $handle, $blueprint)
{
$namespace = str_replace('.', '/', $namespace);
$filesystem = Storage::build([
'driver' => 'local',
'root' => base_path('resources/blueprints'),
]);
$path = base_path("resources/blueprints/{$namespace}/{$handle}.yaml");
$yaml = YAML::dump((new $blueprint($handle))->toArray());
$this->line("Exporting blueprint [{$namespace}.{$handle}] to [{$path}]");
$filesystem->put("{$namespace}/{$handle}.yaml", $yaml);
}
private function exportFieldSets()
{
$namespaces = collect(config('statamic.builder.fieldsets', []));
$namespaces->each(function ($fieldset): void {
$this->exportFieldset($fieldset);
});
}
private function exportFieldset($fieldset)
{
$fieldset = new $fieldset;
$handle = $fieldset->getSlug();
$filesystem = Storage::build([
'driver' => 'local',
'root' => base_path('resources/fieldsets'),
]);
$path = base_path("resources/fieldsets/{$handle}.yaml");
$yaml = YAML::dump($fieldset->fieldsetToArray());
$this->line("Exporting fieldset [{$handle}] to [{$path}]");
$filesystem->put("{$handle}.yaml", $yaml);
}
}