| 
									
										
										
										
											2023-09-13 05:44:33 +08:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							| 
									
										
										
										
											2020-09-08 00:39:47 +08:00
										 |  |  | set -e | 
					
						
							| 
									
										
										
										
											2019-03-13 17:10:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-11 20:41:15 +08:00
										 |  |  | ERROR_COUNT="0" | 
					
						
							| 
									
										
										
										
											2021-08-23 16:08:01 +08:00
										 |  |  | ACCESSIBILITY_ERRORS="$(grep -oP '\"errors\":(\d+),' pa11y-ci-results.json | grep -oP '\d+')" | 
					
						
							| 
									
										
										
										
											2020-09-07 19:17:03 +08:00
										 |  |  | DIRECTIVES="$(grep -r -o  directive public/app/ | wc -l)" | 
					
						
							|  |  |  | CONTROLLERS="$(grep -r -oP 'class .*Ctrl' public/app/ | wc -l)" | 
					
						
							|  |  |  | LEGACY_FORMS="$(grep -r -oP 'LegacyForms;' public/app | wc -l)" | 
					
						
							| 
									
										
										
										
											2024-04-15 22:36:19 +08:00
										 |  |  | BARREL_IMPORTS="$(grep -r -oP '@todo: replace barrel import path' public/app | wc -l)" | 
					
						
							| 
									
										
										
										
											2023-07-07 19:39:52 +08:00
										 |  |  | CLASSNAME_PROP="$(grep -r -o -E --include="*.ts*" "\.*.className=\W.*\W.*" public/app | wc -l)" | 
					
						
							| 
									
										
										
										
											2023-07-06 19:30:46 +08:00
										 |  |  | EMOTION_IMPORTS="$(grep -r -o -E --include="*.ts*" --exclude="*.test*" "\{.*css.*\} from '@emotion/css'" public/app | wc -l)" | 
					
						
							|  |  |  | TS_FILES="$(find public/app -type f -name "*.ts*" -not -name "*.test*" | wc -l)" | 
					
						
							| 
									
										
										
										
											2024-05-03 00:10:31 +08:00
										 |  |  | SCSS_FILES="$(find public packages -name '*.scss' | wc -l)" | 
					
						
							| 
									
										
										
										
											2021-10-18 20:17:02 +08:00
										 |  |  | OUTDATED_DEPENDENCIES="$(yarn outdated --all | grep -oP '[[:digit:]]+ *(?= dependencies are out of date)')" | 
					
						
							| 
									
										
										
										
											2021-06-29 15:29:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-29 22:32:58 +08:00
										 |  |  | echo -e "Typescript errors: $ERROR_COUNT" | 
					
						
							| 
									
										
										
										
											2021-08-23 16:08:01 +08:00
										 |  |  | echo -e "Accessibility errors: $ACCESSIBILITY_ERRORS" | 
					
						
							| 
									
										
										
										
											2019-03-29 22:32:58 +08:00
										 |  |  | echo -e "Directives: $DIRECTIVES" | 
					
						
							|  |  |  | echo -e "Controllers: $CONTROLLERS" | 
					
						
							| 
									
										
										
										
											2020-04-02 22:18:06 +08:00
										 |  |  | echo -e "Legacy forms: $LEGACY_FORMS" | 
					
						
							| 
									
										
										
										
											2024-04-15 22:36:19 +08:00
										 |  |  | echo -e "Barrel imports: $BARREL_IMPORTS" | 
					
						
							| 
									
										
										
										
											2021-06-29 15:29:26 +08:00
										 |  |  | echo -e "Total outdated dependencies: $OUTDATED_DEPENDENCIES" | 
					
						
							| 
									
										
										
										
											2023-07-07 19:39:52 +08:00
										 |  |  | echo -e "ClassName in props: $CLASSNAME_PROP" | 
					
						
							| 
									
										
										
										
											2023-07-06 19:30:46 +08:00
										 |  |  | echo -e "@emotion/css imports: $EMOTION_IMPORTS" | 
					
						
							|  |  |  | echo -e "Total TS files: $TS_FILES" | 
					
						
							| 
									
										
										
										
											2024-05-03 00:10:31 +08:00
										 |  |  | echo -e "Total SCSS files: $SCSS_FILES" | 
					
						
							| 
									
										
										
										
											2019-03-13 17:10:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-04 17:47:13 +08:00
										 |  |  | ESLINT_STATS="" | 
					
						
							|  |  |  | yarn lint:ts --format ./scripts/cli/eslint-stats-reporter.mjs -o eslint-stats.txt | 
					
						
							|  |  |  | while read -r name value | 
					
						
							|  |  |  | do | 
					
						
							|  |  |  |   ESLINT_STATS+=$'\n  ' | 
					
						
							|  |  |  |   # We still report these as "betterer" as the dashboards/other scripts will still look for it there | 
					
						
							|  |  |  |   ESLINT_STATS+="\"grafana.ci-code.betterer.${name}\": \"${value}\"," | 
					
						
							|  |  |  | done <<< "$(cat eslint-stats.txt)" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rm eslint-stats.txt | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-11 17:26:39 +08:00
										 |  |  | I18N_STATS="" | 
					
						
							|  |  |  | while read -r name value | 
					
						
							|  |  |  | do | 
					
						
							|  |  |  |   I18N_STATS+=$'\n  ' | 
					
						
							|  |  |  |   I18N_STATS+="\"grafana.ci-code.i18n.${name}\": \"${value}\"," | 
					
						
							|  |  |  | done <<< "$(yarn i18n:stats)" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-28 22:08:02 +08:00
										 |  |  | THEME_TOKEN_USAGE="" | 
					
						
							|  |  |  | while read -r name value | 
					
						
							|  |  |  | do | 
					
						
							|  |  |  |   THEME_TOKEN_USAGE+=$'\n  ' | 
					
						
							|  |  |  |   THEME_TOKEN_USAGE+="\"grafana.ci-code.themeUsage.${name}\": \"${value}\"," | 
					
						
							|  |  |  | done <<< "$(yarn themes:usage | awk '$4 == "@grafana/theme-token-usage" {print $3}' | awk '{!seen[$0]++}END{for (i in seen) print i, seen[i]}')" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-07 19:17:03 +08:00
										 |  |  | echo "Metrics: {
 | 
					
						
							| 
									
										
										
										
											2023-07-28 22:08:02 +08:00
										 |  |  |   $THEME_TOKEN_USAGE | 
					
						
							| 
									
										
										
										
											2025-09-04 17:47:13 +08:00
										 |  |  |   $ESLINT_STATS | 
					
						
							| 
									
										
										
										
											2023-10-11 17:26:39 +08:00
										 |  |  |   $I18N_STATS | 
					
						
							| 
									
										
										
										
											2020-09-07 19:17:03 +08:00
										 |  |  |   \"grafana.ci-code.strictErrors\": \"${ERROR_COUNT}\", | 
					
						
							| 
									
										
										
										
											2021-08-23 17:36:39 +08:00
										 |  |  |   \"grafana.ci-code.accessibilityErrors\": \"${ACCESSIBILITY_ERRORS}\", | 
					
						
							| 
									
										
										
										
											2020-09-07 19:17:03 +08:00
										 |  |  |   \"grafana.ci-code.directives\": \"${DIRECTIVES}\", | 
					
						
							|  |  |  |   \"grafana.ci-code.controllers\": \"${CONTROLLERS}\", | 
					
						
							| 
									
										
										
										
											2021-02-15 18:15:34 +08:00
										 |  |  |   \"grafana.ci-code.legacyForms\": \"${LEGACY_FORMS}\", | 
					
						
							| 
									
										
										
										
											2023-07-06 19:30:46 +08:00
										 |  |  |   \"grafana.ci-code.dependencies.outdated\": \"${OUTDATED_DEPENDENCIES}\", | 
					
						
							| 
									
										
										
										
											2023-07-07 23:00:57 +08:00
										 |  |  |   \"grafana.ci-code.props.className\": \"${CLASSNAME_PROP}\", | 
					
						
							| 
									
										
										
										
											2023-07-06 19:30:46 +08:00
										 |  |  |   \"grafana.ci-code.imports.emotion\": \"${EMOTION_IMPORTS}\", | 
					
						
							| 
									
										
										
										
											2024-05-03 00:10:31 +08:00
										 |  |  |   \"grafana.ci-code.tsFiles\": \"${TS_FILES}\", | 
					
						
							|  |  |  |   \"grafana.ci-code.scssFiles\": \"${SCSS_FILES}\" | 
					
						
							| 
									
										
										
										
											2020-09-07 19:17:03 +08:00
										 |  |  | }"
 |