diff --git a/xcode/aux_scripts/cpd_script.php b/xcode/aux_scripts/cpd_script.php new file mode 100644 index 0000000..4516660 --- /dev/null +++ b/xcode/aux_scripts/cpd_script.php @@ -0,0 +1,10 @@ +duplication as $duplication) { + $files = $duplication->xpath('file'); + foreach ($files as $file) { + echo $file['path'].':'.$file['line'].':1: warning: '.$duplication['lines'].' copy-pasted lines from: ' + .implode(', ', array_map(function ($otherFile) { return $otherFile['path'].':'.$otherFile['line']; }, + array_filter($files, function ($f) use (&$file) { return $f != $file; }))).PHP_EOL; + } +} +?> diff --git a/xcode/aux_scripts/download_file.sh b/xcode/aux_scripts/download_file.sh new file mode 100755 index 0000000..9bfcbc7 --- /dev/null +++ b/xcode/aux_scripts/download_file.sh @@ -0,0 +1,15 @@ +file_name=$1 +file_link=$2 + +folder="Downloads" +file_path="./${folder}/${file_name}" + +# make folder if not exist +if ! [ -e ${folder} ]; then + mkdir ${folder} +fi + +# download file if not downloaded +if ! [ -e ${file_path} ]; then + curl -L ${file_link} -o ${file_path} +fi diff --git a/xcode/aux_scripts/import_strings.php b/xcode/aux_scripts/import_strings.php new file mode 100644 index 0000000..14050c9 --- /dev/null +++ b/xcode/aux_scripts/import_strings.php @@ -0,0 +1,48 @@ +$value) { + $ios_strings.='"'.$key.'" = "'.str_replace('%s', '%@', str_replace('"','\"', str_replace("\n", '\n', $value))).'";'.PHP_EOL; + } + $ios_strings = preg_replace('/(\\\\)(u)(\d{4})/', '$1U$3', $ios_strings); + + $lproj = $localization.$languageName.'.lproj/'; + createFolder($lproj); + file_put_contents($lproj.'Localizable.strings', $ios_strings); + + if($isBase) { + createFolder($localization.'Base.lproj/'); + file_put_contents($localization.'Base.lproj/Localizable.strings', $ios_strings); + $ios_swift_strings = 'import Foundation'.PHP_EOL. + 'import LeadKit'.PHP_EOL.PHP_EOL. + '// swiftlint:disable superfluous_disable_command'.PHP_EOL. + '// swiftlint:disable line_length'.PHP_EOL. + '// swiftlint:disable file_length'.PHP_EOL. + '// swiftlint:disable identifier_name'.PHP_EOL.PHP_EOL. + 'extension String {'.PHP_EOL; + foreach ($json as $key=>$value) { + $value_without_linefeed = preg_replace("/\r|\n/", " ", $value); + $ios_swift_strings .= "\t/// ".$value_without_linefeed."\n\t".'static let '.preg_replace_callback('/_(.?)/', function ($m) { return strtoupper($m[1]); }, $key).' = "'.$key.'".localized()'."\n".PHP_EOL; + } + $ios_swift_strings .= '}'.PHP_EOL; + file_put_contents($localization.'String+Localization.swift', $ios_swift_strings); + } + } +?> diff --git a/xcode/build_phases/api_generator.sh b/xcode/build_phases/api_generator.sh new file mode 100644 index 0000000..e7566a9 --- /dev/null +++ b/xcode/build_phases/api_generator.sh @@ -0,0 +1,9 @@ +VERSION=$1 +FILE_NAME="api-generator-${VERSION}.jar" + +# download api generator +link="https://dl.bintray.com/touchin/touchin-tools/ru/touchin/api-generator/${VERSION}/${FILE_NAME}" +. build-scripts/xcode/aux_scripts/download_file.sh ${FILE_NAME} ${link} + +# execute api generator +java -jar "Downloads/${FILE_NAME}" -s common/api -o ${PROJECT_NAME}/Generated -t api-generator-templates/Swift -a generate-client-code diff --git a/xcode/build_phases/copy_paste_detection.sh b/xcode/build_phases/copy_paste_detection.sh new file mode 100644 index 0000000..c987619 --- /dev/null +++ b/xcode/build_phases/copy_paste_detection.sh @@ -0,0 +1,6 @@ +# running CPD +echo ${EXECUTABLE_NAME} +pmd cpd --files ${EXECUTABLE_NAME} --exclude ${EXECUTABLE_NAME}/Generated --minimum-tokens 50 --language swift --encoding UTF-8 --format net.sourceforge.pmd.cpd.XMLRenderer > cpd-output.xml --failOnViolation true + +# running script +php ./build-scripts/xcode/aux_scripts/cpd_script.php -cpd-xml cpd-output.xml diff --git a/xcode/build_phases/localization.sh b/xcode/build_phases/localization.sh new file mode 100644 index 0000000..bb03150 --- /dev/null +++ b/xcode/build_phases/localization.sh @@ -0,0 +1,14 @@ +LOCALIZATION_PATH="${PROJECT_NAME}/Resources/Localization" +STRINGS_FOLDER="common/strings" + +if ! [ -e ${LOCALIZATION_PATH} ]; then + echo "${PROJECT_DIR}/${LOCALIZATION_PATH} path does not exist. Add these folders and try again." + exit 1 +fi + +if ! [ -e "${PROJECT_DIR}/${STRINGS_FOLDER}" ]; then +echo "${PROJECT_DIR}/${STRINGS_FOLDER} path does not exist. Submodule with strings should be named common and contain strings folder." + exit 1 +fi + +php build-scripts/xcode/aux_scripts/import_strings.php ${PROJECT_NAME} ${STRINGS_FOLDER}