PluginProbe ʕ •ᴥ•ʔ
Kirki – Freeform Page Builder, Website Builder & Customizer / 6.0.13
Kirki – Freeform Page Builder, Website Builder & Customizer v6.0.13
6.1.1 6.1.0 6.0.14 6.0.13 6.0.12 6.0.11 6.0.10 6.0.9 6.0.8 6.0.7 6.0.6 6.0.5 6.0.4 6.0.3 6.0.2 6.0.1 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 4.0.19 4.0.20 4.0.21 4.0.22 4.0.23 4.0.24 4.1 4.2.0 5.0.0 5.1.0 5.1.1 5.2.0 5.2.1 5.2.2 5.2.3 6.0.0 trunk 3.0.40 3.0.41 3.0.42 3.0.43 3.0.44 3.0.45 3.1.0 3.1.1 3.1.2
kirki / libraries / framework / Console / Commands / MakeProviderCommand.php
kirki / libraries / framework / Console / Commands Last commit date
FreshCommand.php 3 weeks ago MakeClassCommand.php 3 weeks ago MakeControllerCommand.php 3 weeks ago MakeMigrationCommand.php 3 weeks ago MakeModelCommand.php 3 weeks ago MakeProviderCommand.php 3 weeks ago MakeRequestCommand.php 3 weeks ago MakeSeederCommand.php 3 weeks ago MigrateCommand.php 3 weeks ago SeedCommand.php 3 weeks ago
MakeProviderCommand.php
170 lines
1 <?php
2
3 /**
4 * Generates a service provider class stub in the application providers directory.
5 * Creates register and boot method shells ready for container bindings.
6 * Aligns new providers with the framework ServiceProvider contract.
7 *
8 * @package Framework
9 * @subpackage Console\Commands
10 * @since 1.0.0
11 */
12 namespace Kirki\Framework\Console\Commands;
13
14 \defined('ABSPATH') || exit;
15 use Kirki\Framework\Console\CommandBase;
16 use Kirki\Framework\Console\Synopsis;
17 use Kirki\Framework\Supports\Facades\File;
18 use Kirki\Framework\Supports\Str;
19 use function Kirki\Framework\app;
20 use function Kirki\Framework\app_path;
21 class MakeProviderCommand extends CommandBase
22 {
23 /**
24 * The arguments
25 *
26 * @var array
27 *
28 * @since 1.0.0
29 */
30 protected $args;
31 /**
32 * The arguments
33 *
34 * @var array
35 *
36 * @since 1.0.0
37 */
38 protected $assoc;
39 /**
40 * The base path for the request
41 *
42 * @var string
43 *
44 * @since 1.0.0
45 */
46 protected $output_dir;
47 /**
48 * Initialize the command
49 *
50 * @return void
51 *
52 * @since 1.0.0
53 */
54 public function __construct()
55 {
56 parent::__construct();
57 $this->output_dir = app_path('Providers');
58 }
59 /**
60 * Run the command
61 *
62 * @param mixed $args The positional arguments.
63 * @param mixed $assoc The associative arguments.
64 *
65 * @return void
66 *
67 * @since 1.0.0
68 */
69 public function run($args, $assoc)
70 {
71 $this->args = $args;
72 $this->assoc = $assoc;
73 $this->create();
74 }
75 /**
76 * Check if the command passed the validation
77 *
78 * @param mixed $args The positional arguments.
79 * @param mixed $assoc The associative arguments.
80 *
81 * @return bool
82 *
83 * @since 1.0.0
84 */
85 protected function passed($args, $assoc)
86 {
87 return !empty($args[0]);
88 }
89 /**
90 * Create a new model file
91 *
92 * @return void
93 *
94 * @since 1.0.0
95 */
96 protected function create()
97 {
98 $data = $this->data();
99 $provider_class = $data['provider_class'];
100 $namespace = $data['namespace'];
101 $output_file = $data['output_file'];
102 $content = $this->populate_stub($data);
103 if (File::exists($output_file)) {
104 \WP_CLI::error('Request file already exists.');
105 }
106 File::put($output_file, $content);
107 \WP_CLI::success(\sprintf('Request [%s] created successfully.', $namespace . "\\" . $provider_class));
108 }
109 /**
110 * Make the data for the request
111 *
112 * @return array
113 *
114 * @since 1.0.0
115 */
116 protected function data()
117 {
118 $provider_class = Str::pascal($this->args[0]);
119 $data = ['stub' => $this->get_stub(), 'namespace' => app()->qualify_app_namespace('Providers'), 'provider_class' => $provider_class, 'output_file' => \sprintf('%s/%s.php', $this->output_dir, $provider_class)];
120 $folder = $this->assoc['folder'] ?? null;
121 if ($folder) {
122 $data['namespace'] = \sprintf('%s\\%s', $data['namespace'], Str::pascal($folder));
123 $data['output_file'] = \sprintf('%s/%s/%s.php', $this->output_dir, $folder, $provider_class);
124 }
125 return $data;
126 }
127 /**
128 * Get the stub content
129 *
130 * @return string
131 *
132 * @since 1.0.0
133 */
134 protected function get_stub()
135 {
136 $stub_path = $this->stub_path() . '/provider.stub';
137 if (File::missing($stub_path)) {
138 \WP_CLI::error('Request stub not found: ' . $stub_path);
139 }
140 return File::get($stub_path);
141 }
142 /**
143 * Populate the stub content
144 *
145 * @param mixed $data The data payload.
146 *
147 * @return string
148 *
149 * @since 1.0.0
150 */
151 protected function populate_stub($data)
152 {
153 $stub = $data['stub'];
154 $provider_class = $data['provider_class'];
155 $namespace = $data['namespace'];
156 return Str::replace(['{{class_name}}', '{{namespace}}'], [$provider_class, $namespace], $stub);
157 }
158 /**
159 * Prepare the command's synopsis and other metadata
160 *
161 * @return void
162 *
163 * @since 1.0.0
164 */
165 protected function prepare()
166 {
167 $this->summary('Create a new provider class')->description("## EXAMPLES \n\n wp kirki make:provider ExampleServiceProvider")->synopsis(Synopsis::type('positional')->name('name')->description('The provider name'));
168 }
169 }
170