@@ -43,6 +43,8 @@ HAS_RUBY := $(filter ruby,$(LANGUAGES))
4343HAS_GO := $(filter go,$(LANGUAGES ) )
4444HAS_JAVASCRIPT := $(filter javascript,$(LANGUAGES ) )
4545HAS_RUST := $(filter rust,$(LANGUAGES ) )
46+ HAS_SWIFT := $(filter swift,$(LANGUAGES ) )
47+ HAS_KOTLIN := $(filter kotlin,$(LANGUAGES ) )
4648
4749# ---------------------------------------------------------------------------
4850# .PHONY declarations
@@ -283,6 +285,39 @@ _lint: _check-config
283285 exit $$ overall_exit; \
284286 fi ; \
285287 fi ; \
288+ if [ -n " $( HAS_SWIFT) " ]; then \
289+ ran_languages=" $$ {ran_languages}\" swift\" ," ; \
290+ swift_files=$$(find . -name '*.swift' -not -path './.git/*' -not -path './.build/*' -not -path './DerivedData/*' 2>/dev/null ) ; \
291+ if [ -n " $$ swift_files" ]; then \
292+ swiftlint lint --strict || { overall_exit=1; failed_languages=" $$ {failed_languages}\" swift\" ," ; }; \
293+ else \
294+ echo ' {"level":"info","msg":"skipping swift lint: no .swift files found","language":"swift"}' >&2 ; \
295+ fi ; \
296+ if [ " $( DEVRAIL_FAIL_FAST) " = " 1" ] && [ $$ overall_exit -ne 0 ]; then \
297+ end_time=$$(date +%s%3N ) ; \
298+ duration=$$((end_time - start_time ) ); \
299+ echo " {\" target\" :\" lint\" ,\" status\" :\" fail\" ,\" duration_ms\" :$$ duration,\" languages\" :[$$ {ran_languages%,}],\" failed\" :[$$ {failed_languages%,}]}" ; \
300+ exit $$ overall_exit; \
301+ fi ; \
302+ fi ; \
303+ if [ -n " $( HAS_KOTLIN) " ]; then \
304+ ran_languages=" $$ {ran_languages}\" kotlin\" ," ; \
305+ kt_files=$$(find . \( -name '*.kt' -o -name '*.kts' \ ) -not -path ' ./.git/*' -not -path ' ./build/*' -not -path ' ./.gradle/*' 2> /dev/null); \
306+ if [ -n " $$ kt_files" ]; then \
307+ ktlint || { overall_exit=1; failed_languages=" $$ {failed_languages}\" kotlin:ktlint\" ," ; }; \
308+ else \
309+ echo ' {"level":"info","msg":"skipping kotlin lint: no .kt/.kts files found","language":"kotlin"}' >&2 ; \
310+ fi ; \
311+ if [ -f " detekt.yml" ] && [ -n " $$ kt_files" ]; then \
312+ detekt-cli --build-upon-default-config --config detekt.yml || { overall_exit=1; failed_languages=" $$ {failed_languages}\" kotlin:detekt\" ," ; }; \
313+ fi ; \
314+ if [ " $( DEVRAIL_FAIL_FAST) " = " 1" ] && [ $$ overall_exit -ne 0 ]; then \
315+ end_time=$$(date +%s%3N ) ; \
316+ duration=$$((end_time - start_time ) ); \
317+ echo " {\" target\" :\" lint\" ,\" status\" :\" fail\" ,\" duration_ms\" :$$ duration,\" languages\" :[$$ {ran_languages%,}],\" failed\" :[$$ {failed_languages%,}]}" ; \
318+ exit $$ overall_exit; \
319+ fi ; \
320+ fi ; \
286321 end_time=$$(date +%s%3N ) ; \
287322 duration=$$((end_time - start_time ) ); \
288323 if [ $$ overall_exit -eq 0 ]; then \
@@ -401,6 +436,36 @@ _format: _check-config
401436 exit $$ overall_exit; \
402437 fi ; \
403438 fi ; \
439+ if [ -n " $( HAS_SWIFT) " ]; then \
440+ ran_languages=" $$ {ran_languages}\" swift\" ," ; \
441+ swift_files=$$(find . -name '*.swift' -not -path './.git/*' -not -path './.build/*' -not -path './DerivedData/*' 2>/dev/null ) ; \
442+ if [ -n " $$ swift_files" ]; then \
443+ swift-format lint --strict -r . || { overall_exit=1; failed_languages=" $$ {failed_languages}\" swift\" ," ; }; \
444+ else \
445+ echo ' {"level":"info","msg":"skipping swift format: no .swift files found","language":"swift"}' >&2 ; \
446+ fi ; \
447+ if [ " $( DEVRAIL_FAIL_FAST) " = " 1" ] && [ $$ overall_exit -ne 0 ]; then \
448+ end_time=$$(date +%s%3N ) ; \
449+ duration=$$((end_time - start_time ) ); \
450+ echo " {\" target\" :\" format\" ,\" status\" :\" fail\" ,\" duration_ms\" :$$ duration,\" languages\" :[$$ {ran_languages%,}],\" failed\" :[$$ {failed_languages%,}]}" ; \
451+ exit $$ overall_exit; \
452+ fi ; \
453+ fi ; \
454+ if [ -n " $( HAS_KOTLIN) " ]; then \
455+ ran_languages=" $$ {ran_languages}\" kotlin\" ," ; \
456+ kt_files=$$(find . \( -name '*.kt' -o -name '*.kts' \ ) -not -path ' ./.git/*' -not -path ' ./build/*' -not -path ' ./.gradle/*' 2> /dev/null); \
457+ if [ -n " $$ kt_files" ]; then \
458+ ktlint --format --dry-run || { overall_exit=1; failed_languages=" $$ {failed_languages}\" kotlin\" ," ; }; \
459+ else \
460+ echo ' {"level":"info","msg":"skipping kotlin format: no .kt/.kts files found","language":"kotlin"}' >&2 ; \
461+ fi ; \
462+ if [ " $( DEVRAIL_FAIL_FAST) " = " 1" ] && [ $$ overall_exit -ne 0 ]; then \
463+ end_time=$$(date +%s%3N ) ; \
464+ duration=$$((end_time - start_time ) ); \
465+ echo " {\" target\" :\" format\" ,\" status\" :\" fail\" ,\" duration_ms\" :$$ duration,\" languages\" :[$$ {ran_languages%,}],\" failed\" :[$$ {failed_languages%,}]}" ; \
466+ exit $$ overall_exit; \
467+ fi ; \
468+ fi ; \
404469 end_time=$$(date +%s%3N ) ; \
405470 duration=$$((end_time - start_time ) ); \
406471 if [ $$ overall_exit -eq 0 ]; then \
@@ -519,6 +584,36 @@ _fix: _check-config
519584 exit $$ overall_exit; \
520585 fi ; \
521586 fi ; \
587+ if [ -n " $( HAS_SWIFT) " ]; then \
588+ ran_languages=" $$ {ran_languages}\" swift\" ," ; \
589+ swift_files=$$(find . -name '*.swift' -not -path './.git/*' -not -path './.build/*' -not -path './DerivedData/*' 2>/dev/null ) ; \
590+ if [ -n " $$ swift_files" ]; then \
591+ swift-format format -i -r . || { overall_exit=1; failed_languages=" $$ {failed_languages}\" swift\" ," ; }; \
592+ else \
593+ echo ' {"level":"info","msg":"skipping swift fix: no .swift files found","language":"swift"}' >&2 ; \
594+ fi ; \
595+ if [ " $( DEVRAIL_FAIL_FAST) " = " 1" ] && [ $$ overall_exit -ne 0 ]; then \
596+ end_time=$$(date +%s%3N ) ; \
597+ duration=$$((end_time - start_time ) ); \
598+ echo " {\" target\" :\" fix\" ,\" status\" :\" fail\" ,\" duration_ms\" :$$ duration,\" languages\" :[$$ {ran_languages%,}],\" failed\" :[$$ {failed_languages%,}]}" ; \
599+ exit $$ overall_exit; \
600+ fi ; \
601+ fi ; \
602+ if [ -n " $( HAS_KOTLIN) " ]; then \
603+ ran_languages=" $$ {ran_languages}\" kotlin\" ," ; \
604+ kt_files=$$(find . \( -name '*.kt' -o -name '*.kts' \ ) -not -path ' ./.git/*' -not -path ' ./build/*' -not -path ' ./.gradle/*' 2> /dev/null); \
605+ if [ -n " $$ kt_files" ]; then \
606+ ktlint --format || { overall_exit=1; failed_languages=" $$ {failed_languages}\" kotlin\" ," ; }; \
607+ else \
608+ echo ' {"level":"info","msg":"skipping kotlin fix: no .kt/.kts files found","language":"kotlin"}' >&2 ; \
609+ fi ; \
610+ if [ " $( DEVRAIL_FAIL_FAST) " = " 1" ] && [ $$ overall_exit -ne 0 ]; then \
611+ end_time=$$(date +%s%3N ) ; \
612+ duration=$$((end_time - start_time ) ); \
613+ echo " {\" target\" :\" fix\" ,\" status\" :\" fail\" ,\" duration_ms\" :$$ duration,\" languages\" :[$$ {ran_languages%,}],\" failed\" :[$$ {failed_languages%,}]}" ; \
614+ exit $$ overall_exit; \
615+ fi ; \
616+ fi ; \
522617 end_time=$$(date +%s%3N ) ; \
523618 duration=$$((end_time - start_time ) ); \
524619 if [ $$ overall_exit -eq 0 ]; then \
@@ -656,6 +751,37 @@ _test: _check-config
656751 exit $$ overall_exit; \
657752 fi ; \
658753 fi ; \
754+ if [ -n " $( HAS_SWIFT) " ]; then \
755+ swift_files=$$(find . -name '*.swift' -not -path './.git/*' -not -path './.build/*' -not -path './DerivedData/*' 2>/dev/null ) ; \
756+ if [ -n " $$ swift_files" ] && [ -f " Package.swift" ]; then \
757+ ran_languages=" $$ {ran_languages}\" swift\" ," ; \
758+ swift test || { overall_exit=1; failed_languages=" $$ {failed_languages}\" swift\" ," ; }; \
759+ else \
760+ skipped_languages=" $$ {skipped_languages}\" swift\" ," ; \
761+ echo ' {"level":"info","msg":"skipping swift tests: no .swift files or Package.swift found","language":"swift"}' >&2 ; \
762+ fi ; \
763+ if [ " $( DEVRAIL_FAIL_FAST) " = " 1" ] && [ $$ overall_exit -ne 0 ]; then \
764+ end_time=$$(date +%s%3N ) ; \
765+ duration=$$((end_time - start_time ) ); \
766+ echo " {\" target\" :\" test\" ,\" status\" :\" fail\" ,\" duration_ms\" :$$ duration,\" languages\" :[$$ {ran_languages%,}],\" failed\" :[$$ {failed_languages%,}],\" skipped\" :[$$ {skipped_languages%,}]}" ; \
767+ exit $$ overall_exit; \
768+ fi ; \
769+ fi ; \
770+ if [ -n " $( HAS_KOTLIN) " ]; then \
771+ if [ -f " build.gradle.kts" ] || [ -f " build.gradle" ]; then \
772+ ran_languages=" $$ {ran_languages}\" kotlin\" ," ; \
773+ gradle test || { overall_exit=1; failed_languages=" $$ {failed_languages}\" kotlin\" ," ; }; \
774+ else \
775+ skipped_languages=" $$ {skipped_languages}\" kotlin\" ," ; \
776+ echo ' {"level":"info","msg":"skipping kotlin tests: no build.gradle.kts or build.gradle found","language":"kotlin"}' >&2 ; \
777+ fi ; \
778+ if [ " $( DEVRAIL_FAIL_FAST) " = " 1" ] && [ $$ overall_exit -ne 0 ]; then \
779+ end_time=$$(date +%s%3N ) ; \
780+ duration=$$((end_time - start_time ) ); \
781+ echo " {\" target\" :\" test\" ,\" status\" :\" fail\" ,\" duration_ms\" :$$ duration,\" languages\" :[$$ {ran_languages%,}],\" failed\" :[$$ {failed_languages%,}],\" skipped\" :[$$ {skipped_languages%,}]}" ; \
782+ exit $$ overall_exit; \
783+ fi ; \
784+ fi ; \
659785 end_time=$$(date +%s%3N ) ; \
660786 duration=$$((end_time - start_time ) ); \
661787 if [ -z " $$ {ran_languages}" ] && [ -n " $$ {skipped_languages}" ]; then \
@@ -797,6 +923,25 @@ _security: _check-config
797923 exit $$ overall_exit; \
798924 fi ; \
799925 fi ; \
926+ if [ -n " $( HAS_SWIFT) " ]; then \
927+ skipped_languages=" $$ {skipped_languages}\" swift\" ," ; \
928+ echo ' {"level":"info","msg":"skipping swift security: no language-specific scanner","language":"swift"}' >&2 ; \
929+ fi ; \
930+ if [ -n " $( HAS_KOTLIN) " ]; then \
931+ if [ -f " build.gradle.kts" ] || [ -f " build.gradle" ]; then \
932+ ran_languages=" $$ {ran_languages}\" kotlin\" ," ; \
933+ gradle dependencyCheckAnalyze || { overall_exit=1; failed_languages=" $$ {failed_languages}\" kotlin:owasp\" ," ; }; \
934+ else \
935+ skipped_languages=" $$ {skipped_languages}\" kotlin\" ," ; \
936+ echo ' {"level":"info","msg":"skipping kotlin security: no build.gradle.kts or build.gradle found","language":"kotlin"}' >&2 ; \
937+ fi ; \
938+ if [ " $( DEVRAIL_FAIL_FAST) " = " 1" ] && [ $$ overall_exit -ne 0 ]; then \
939+ end_time=$$(date +%s%3N ) ; \
940+ duration=$$((end_time - start_time ) ); \
941+ echo " {\" target\" :\" security\" ,\" status\" :\" fail\" ,\" duration_ms\" :$$ duration,\" languages\" :[$$ {ran_languages%,}],\" failed\" :[$$ {failed_languages%,}]}" ; \
942+ exit $$ overall_exit; \
943+ fi ; \
944+ fi ; \
800945 end_time=$$(date +%s%3N ) ; \
801946 duration=$$((end_time - start_time ) ); \
802947 if [ -z " $$ {ran_languages}" ] && [ -n " $$ {skipped_languages}" ]; then \
0 commit comments