1 | <?php |
||
2 | /** |
||
3 | * The file that defines to modify files after install the project. |
||
4 | * |
||
5 | * @link https://github.com/maab16 |
||
6 | * @since 1.0.0 |
||
7 | */ |
||
8 | |||
9 | namespace CodexShaper\Composer; |
||
10 | |||
11 | use Composer\Script\Event; |
||
12 | use Illuminate\Filesystem\Filesystem; |
||
13 | |||
14 | /** |
||
15 | * The composer script class. |
||
16 | * |
||
17 | * Here set all the logic that implement after install the project. |
||
18 | * |
||
19 | * @since 1.0.0 |
||
20 | * |
||
21 | * @author Md Abu Ahsan basir <[email protected]> |
||
22 | */ |
||
23 | class ComposerScripts |
||
24 | { |
||
25 | /** |
||
26 | * Handle the post-install Composer event. |
||
27 | * |
||
28 | * @param \Composer\Script\Event $event The composer event. |
||
0 ignored issues
–
show
|
|||
29 | * |
||
30 | * @return void |
||
31 | */ |
||
32 | public static function post_install(Event $event) |
||
33 | { |
||
34 | require_once $event->getComposer()->getConfig()->get('vendor-dir').'/autoload.php'; |
||
35 | } |
||
36 | |||
37 | /** |
||
38 | * Handle the post-update Composer event. |
||
39 | * |
||
40 | * @param \Composer\Script\Event $event The composer event. |
||
41 | * |
||
42 | * @return void |
||
43 | */ |
||
44 | public static function post_update(Event $event) |
||
45 | { |
||
46 | require_once $event->getComposer()->getConfig()->get('vendor-dir').'/autoload.php'; |
||
47 | } |
||
48 | |||
49 | /** |
||
50 | * Handle the post-autoload-dump Composer event. |
||
51 | * |
||
52 | * @param \Composer\Script\Event $event The composer event. |
||
53 | * |
||
54 | * @return void |
||
55 | */ |
||
56 | public static function post_autoload_dump(Event $event) |
||
57 | { |
||
58 | require_once $event->getComposer()->getConfig()->get('vendor-dir').'/autoload.php'; |
||
59 | |||
60 | $dir = $event->getComposer()->getConfig()->get('vendor-dir').'/../'; |
||
0 ignored issues
–
show
|
|||
61 | $root = dirname($event->getComposer()->getConfig()->get('vendor-dir')); |
||
62 | |||
63 | $vendor_name = strtolower(basename($root)); |
||
64 | $partials = explode('-', $vendor_name); |
||
65 | $camel_case_partials = []; |
||
66 | foreach ($partials as $partial) { |
||
67 | $camel_case_partials[] = ucfirst(strtolower($partial)); |
||
68 | } |
||
69 | $camel_case = implode('_', $camel_case_partials); |
||
70 | $snake_case = implode('_', $partials); |
||
71 | |||
72 | $files = [ |
||
73 | '/admin/class-wpb-admin.php', |
||
74 | '/admin/class-wpb-admin-menu.php', |
||
75 | '/admin/class-wpb-admin-submenu.php', |
||
76 | '/admin/partials/wpb-admin-display.php', |
||
77 | '/admin/css/wpb-admin.css', |
||
78 | '/admin/js/wpb-admin.js', |
||
79 | '/app/Exceptions/Handler.php', |
||
80 | '/app/Http/Controllers/ProductController.php', |
||
81 | '/app/Http/Middleware/AuthMiddleware.php', |
||
82 | '/app/Http/Middleware/VerifyCsrfToken.php', |
||
83 | '/app/Http/Kernel.php', |
||
84 | '/app/User.php', |
||
85 | '/app/Post.php', |
||
86 | '/bootstrap/app.php', |
||
87 | '/config/app.php', |
||
88 | '/config/database.php', |
||
89 | '/config/view.php', |
||
90 | '/database/migrations/class-create-customers-table.php', |
||
91 | '/database/seeds/class-customers-table.php', |
||
92 | '/includes/class-wpb-activator.php', |
||
93 | '/includes/class-wpb-deactivator.php', |
||
94 | '/includes/class-wpb-i18n.php', |
||
95 | '/includes/class-wpb-loader.php', |
||
96 | '/includes/class-wpb.php', |
||
97 | '/public/class-wpb-public.php', |
||
98 | '/public/partials/wpb-public-display.php', |
||
99 | '/public/css/wpb-public.css', |
||
100 | '/public/js/wpb-public.js', |
||
101 | '/resources/js/admin/main.js', |
||
102 | '/resources/js/admin/router/index.js', |
||
103 | '/resources/js/frontend/main.js', |
||
104 | '/resources/js/spa/main.js', |
||
105 | '/routes/web.php', |
||
106 | '/routes/api.php', |
||
107 | '/src/Contracts/Http/Kernel.php', |
||
108 | '/src/Contracts/ExceptionHandler.php', |
||
109 | '/src/Database/Eloquent/Scopes/PostAuthorScope.php', |
||
110 | '/src/Database/Eloquent/Scopes/PostStatusScope.php', |
||
111 | '/src/Database/Eloquent/Scopes/PostTypeScope.php', |
||
112 | '/src/Database/DB.php', |
||
113 | '/src/Exceptions/Handler.php', |
||
114 | '/src/Http/Events/RequestHandled.php', |
||
115 | '/src/Http/Kernel.php', |
||
116 | '/src/helpers.php', |
||
117 | '/src/Support/Facades/Config.php', |
||
118 | '/src/Support/Facades/Route.php', |
||
119 | '/src/Application.php', |
||
120 | '/tests/Application.php', |
||
121 | '/wpb.php', |
||
122 | ]; |
||
123 | |||
124 | foreach ($files as $file) { |
||
125 | $file = $root.$file; |
||
126 | if (file_exists($file)) { |
||
127 | $filesystem = new Filesystem(); |
||
128 | |||
129 | $contents = $filesystem->get($file); |
||
130 | $contents = str_replace('wpb_', $snake_case.'_', $contents); |
||
131 | $contents = str_replace('wpb', $vendor_name, $contents); |
||
132 | $contents = str_replace('WPB_APP_ROOT', strtoupper($camel_case).'_APP_ROOT', $contents); |
||
133 | $contents = str_replace('WPB_FILE', strtoupper($camel_case).'_FILE', $contents); |
||
134 | $contents = str_replace('WPB_PATH', strtoupper($camel_case).'_PATH', $contents); |
||
135 | $contents = str_replace('WPB_INCLUDES', strtoupper($camel_case).'_INCLUDES', $contents); |
||
136 | $contents = str_replace('WPB_URL', strtoupper($camel_case).'_URL', $contents); |
||
137 | $contents = str_replace('WPB_ASSETS', strtoupper($camel_case).'_ASSETS', $contents); |
||
138 | $contents = str_replace('WPB_VERSION', strtoupper($camel_case).'_VERSION', $contents); |
||
139 | $contents = str_replace('WPB', $camel_case, $contents); |
||
140 | $filesystem->put( |
||
141 | $file, |
||
142 | $contents |
||
143 | ); |
||
144 | |||
145 | $dir = dirname($file); |
||
146 | $file_name = basename($file); |
||
147 | $new_file_name = str_replace('wpb', $vendor_name, $file_name); |
||
148 | |||
149 | if ($file_name !== $new_file_name) { |
||
150 | rename($file, $dir.'/'.$new_file_name); |
||
151 | } |
||
152 | } |
||
153 | } |
||
154 | |||
155 | static::update_composer($filesystem, $root, $camel_case); |
||
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
|
|||
156 | } |
||
157 | |||
158 | /** |
||
159 | * Replace bootstrap file. |
||
160 | * |
||
161 | * @since 1.0.0 |
||
162 | * |
||
163 | * @param Illuminate\Filesystem\Filesystem $filesystem The illuminate filesystem. |
||
0 ignored issues
–
show
|
|||
164 | * @param string $root The string is unique root path for each plugin. |
||
165 | * @param string $camel_case This string is camel case of project name. |
||
166 | * |
||
167 | * @return void |
||
168 | */ |
||
169 | protected static function update_bootstrap($filesystem, $root, $camel_case) |
||
170 | { |
||
171 | $file = $root.'/bootstrap/app.php'; |
||
172 | if (file_exists($file)) { |
||
173 | $contents = $filesystem->get($file); |
||
174 | $contents = str_replace('WPB_APP_ROOT', strtoupper($camel_case).'_APP_ROOT', $contents); |
||
175 | $filesystem->put( |
||
176 | $file, |
||
177 | $contents |
||
178 | ); |
||
179 | } |
||
180 | } |
||
181 | |||
182 | /** |
||
183 | * Update composer. |
||
184 | * |
||
185 | * @param Illuminate\Filesystem\Filesystem $filesystem The illuminate filesystem. |
||
186 | * @param string $root The app root. |
||
187 | * @param string $camel_case The composer event. |
||
188 | * |
||
189 | * @return void |
||
190 | */ |
||
191 | protected static function update_composer($filesystem, $root, $camel_case) |
||
192 | { |
||
193 | $file = $root.'/composer.json'; |
||
194 | if (file_exists($file)) { |
||
195 | $contents = $filesystem->get($file); |
||
196 | $contents = str_replace('WPB', $camel_case, $contents); |
||
197 | $filesystem->put( |
||
198 | $file, |
||
199 | $contents |
||
200 | ); |
||
201 | } |
||
202 | } |
||
203 | } |
||
204 |
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"]
, you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths