17
17
use CodeIgniter \CLI \CLI ;
18
18
use CodeIgniter \Exceptions \LogicException ;
19
19
use Config \App ;
20
+ use ErrorException ;
21
+ use FilesystemIterator ;
20
22
use Locale ;
21
23
use RecursiveDirectoryIterator ;
22
24
use RecursiveIteratorIterator ;
@@ -87,31 +89,45 @@ public function run(array $params)
87
89
$ this ->languagePath = SUPPORTPATH . 'Language ' ;
88
90
}
89
91
90
- $ this ->process ($ optionLocale , $ optionTargetLocale );
91
-
92
- CLI :: write ( ' All operations done! ' );
92
+ if ( $ this ->process ($ optionLocale , $ optionTargetLocale ) === EXIT_SUCCESS ) {
93
+ CLI :: write ( ' All operations done! ' );
94
+ }
93
95
94
96
return EXIT_SUCCESS ;
95
97
}
96
98
97
- private function process (string $ originalLocale , string $ targetLocale ): void
99
+ private function process (string $ originalLocale , string $ targetLocale ): int
98
100
{
99
101
$ originalLocaleDir = $ this ->languagePath . DIRECTORY_SEPARATOR . $ originalLocale ;
100
102
$ targetLocaleDir = $ this ->languagePath . DIRECTORY_SEPARATOR . $ targetLocale ;
101
103
102
104
if (! is_dir ($ originalLocaleDir )) {
103
105
CLI ::error (
104
- 'Error: The " ' . $ originalLocaleDir . '" directory was not found. '
106
+ 'Error: The " ' . clean_path ( $ originalLocaleDir) . '" directory was not found. '
105
107
);
108
+
109
+ return EXIT_ERROR ;
106
110
}
107
111
108
- if (! is_dir ($ targetLocaleDir ) && ! mkdir ($ targetLocaleDir , 0775 )) {
112
+ // Unifying the error - mkdir() may cause an exception.
113
+ try {
114
+ if (! is_dir ($ targetLocaleDir ) && ! mkdir ($ targetLocaleDir , 0775 )) {
115
+ throw new ErrorException ();
116
+ }
117
+ } catch (ErrorException $ e ) {
109
118
CLI ::error (
110
- 'Error: The target directory " ' . $ targetLocaleDir . '" cannot be accessed. '
119
+ 'Error: The target directory " ' . clean_path ( $ targetLocaleDir) . '" cannot be accessed. '
111
120
);
121
+
122
+ return EXIT_ERROR ;
112
123
}
113
124
114
- $ iterator = new RecursiveIteratorIterator (new RecursiveDirectoryIterator ($ originalLocaleDir ));
125
+ $ iterator = new RecursiveIteratorIterator (
126
+ new RecursiveDirectoryIterator (
127
+ $ originalLocaleDir ,
128
+ FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS
129
+ )
130
+ );
115
131
116
132
/**
117
133
* @var list<SplFileInfo> $files
@@ -120,7 +136,7 @@ private function process(string $originalLocale, string $targetLocale): void
120
136
ksort ($ files );
121
137
122
138
foreach ($ files as $ originalLanguageFile ) {
123
- if ($ this -> isIgnoredFile ( $ originalLanguageFile ) ) {
139
+ if ($ originalLanguageFile -> getExtension () !== ' php ' ) {
124
140
continue ;
125
141
}
126
142
@@ -138,6 +154,8 @@ private function process(string $originalLocale, string $targetLocale): void
138
154
$ content = "<?php \n\nreturn " . var_export ($ targetLanguageKeys , true ) . "; \n" ;
139
155
file_put_contents ($ targetLanguageFile , $ content );
140
156
}
157
+
158
+ return EXIT_SUCCESS ;
141
159
}
142
160
143
161
/**
@@ -179,9 +197,4 @@ private function mergeLanguageKeys(array $originalLanguageKeys, array $targetLan
179
197
180
198
return $ mergedLanguageKeys ;
181
199
}
182
-
183
- private function isIgnoredFile (SplFileInfo $ file ): bool
184
- {
185
- return $ file ->isDir () || $ file ->getFilename () === '. ' || $ file ->getFilename () === '.. ' || $ file ->getExtension () !== 'php ' ;
186
- }
187
200
}
0 commit comments