|
6 | 6 |
|
7 | 7 | from coala_quickstart.Constants import ( |
8 | 8 | IMPORTANT_BEAR_LIST, ALL_CAPABILITIES, DEFAULT_CAPABILTIES) |
9 | | -from coala_quickstart.Strings import BEAR_HELP |
| 9 | +from coala_quickstart.Strings import PRINT_BEARS, BEAR_HELP |
10 | 10 | from coala_quickstart.generation.SettingsFilling import is_autofill_possible |
11 | 11 | from coalib.bearlib.abstractions.LinterClass import LinterClass |
12 | 12 | from coalib.settings.ConfigurationGathering import get_filtered_bears |
@@ -203,38 +203,48 @@ def get_non_optional_settings_bears(bears): |
203 | 203 |
|
204 | 204 | def remove_unusable_bears(bears, unusable_bears): |
205 | 205 | """ |
206 | | - From the bears dict, filter the bears appearing in unusable_bears. |
| 206 | + From the bears dict, filter the bears appearing in unusable_bears |
| 207 | + and save them under “unusable” key for printing later. |
207 | 208 |
|
208 | 209 | :param bears: |
209 | 210 | A dict with language name as key and bear classes as value. |
210 | 211 | :param unusable_bears: |
211 | 212 | A collection of Bear classes. |
212 | 213 | """ |
213 | | - for language, language_bears in bears.items(): |
| 214 | + for language, language_bears in bears['usable'].items(): |
214 | 215 | for bear in tuple(language_bears): |
215 | 216 | if bear in unusable_bears: |
216 | | - bears[language].remove(bear) |
| 217 | + bears['usable'][language].remove(bear) |
| 218 | + bears['unusable'][language] = bears['unusable'].get( |
| 219 | + language, ()) + (bear, ) |
217 | 220 |
|
218 | 221 |
|
219 | | -def print_relevant_bears(printer, relevant_bears, label='relevant'): |
| 222 | +def print_relevant_bears(printer, relevant_bears): |
220 | 223 | """ |
221 | | - Prints the relevant bears in sections separated by language. |
| 224 | + Prints both the usable and unusable, relevant bears |
| 225 | + in sections indexed by language. |
222 | 226 |
|
223 | 227 | :param printer: |
224 | 228 | A ``ConsolePrinter`` object used for console interactions. |
225 | 229 | :param relevant_bears: |
226 | | - A dict with language name as key and bear classes as value. |
| 230 | + An ``OrderedDict`` indexed by “usable” and “unusable” bears stored in |
| 231 | + dictionaries that use language as key and bear classes as value. |
227 | 232 | """ |
228 | | - if label == 'relevant': |
229 | | - printer.print(BEAR_HELP) |
230 | | - |
231 | | - printer.print('\nBased on the languages used in project the following ' |
232 | | - 'bears have been identified to be %s:' % label) |
233 | | - for language in relevant_bears: |
234 | | - printer.print(' [' + language + ']', color='green') |
235 | | - for bear in relevant_bears[language]: |
236 | | - printer.print(' ' + bear.name, color='cyan') |
237 | | - printer.print('') |
| 233 | + printer.print(BEAR_HELP) |
| 234 | + |
| 235 | + # Don't print anything for empty bear sets |
| 236 | + nonempty_label_bears = ( |
| 237 | + label for label in relevant_bears if len(relevant_bears[label]) > 0) |
| 238 | + |
| 239 | + for label_bears in nonempty_label_bears: |
| 240 | + printer.print(PRINT_BEARS[label_bears]['msg']) |
| 241 | + for language in relevant_bears[label_bears]: |
| 242 | + printer.print(' [' + language + ']', |
| 243 | + color=PRINT_BEARS[label_bears]['colors'][0]) |
| 244 | + for bear in relevant_bears[label_bears][language]: |
| 245 | + printer.print(' ' + bear.name, |
| 246 | + color=PRINT_BEARS[label_bears]['colors'][1]) |
| 247 | + printer.print('') |
238 | 248 |
|
239 | 249 |
|
240 | 250 | def generate_requirements_map(bears): |
|
0 commit comments