Merge pull request #41 from TouchInstinct/ios_build_scripts
Add iOS build phase scripts
This commit is contained in:
commit
9bda77f33c
|
|
@ -0,0 +1,152 @@
|
|||
opt_in_rules:
|
||||
- closure_spacing
|
||||
- closure_end_indentation
|
||||
- conditional_returns_on_newline
|
||||
|
||||
- empty_count
|
||||
- explicit_init
|
||||
- extension_access_modifier
|
||||
|
||||
- fatal_error_message
|
||||
- file_header
|
||||
- first_where
|
||||
- force_unwrapping
|
||||
|
||||
- implicit_return
|
||||
|
||||
- let_var_whitespace
|
||||
|
||||
- multiline_parameters
|
||||
|
||||
- nimble_operator - discuss
|
||||
- number_separator
|
||||
|
||||
- object_literal
|
||||
- overridden_super_call
|
||||
|
||||
- private_outlet
|
||||
- prohibited_super_call
|
||||
|
||||
- redundant_nil_coalescing
|
||||
|
||||
- unneeded_parentheses_in_closure_argument
|
||||
|
||||
- vertical_parameter_alignment_on_call
|
||||
|
||||
excluded:
|
||||
- Carthage
|
||||
- Pods
|
||||
- Generated
|
||||
|
||||
line_length: 128
|
||||
|
||||
cyclomatic_complexity:
|
||||
ignores_case_statements: true
|
||||
|
||||
type_body_length:
|
||||
- 500 # warning
|
||||
- 700 # error
|
||||
|
||||
file_length:
|
||||
warning: 500
|
||||
error: 1200
|
||||
|
||||
function_parameter_count:
|
||||
error: 5
|
||||
|
||||
identifier_name:
|
||||
excluded:
|
||||
- id
|
||||
- ok
|
||||
- URL
|
||||
- x
|
||||
- y
|
||||
- z
|
||||
|
||||
warning_threshold: 1
|
||||
|
||||
custom_rules:
|
||||
uiwebview_disabled:
|
||||
included: ".*.swift"
|
||||
name: "UIWebView Usage Disabled"
|
||||
regex: 'UIWebView'
|
||||
message: "Do not use UIWebView. Use WKWebView Instead. https://developer.apple.com/reference/uikit/uiwebview"
|
||||
severity: error
|
||||
|
||||
native_print:
|
||||
name: "print -> DDLog"
|
||||
regex: '(print|NSLog)\('
|
||||
message: "Please use CocoaLumberjack instead `print` and `NSlog`"
|
||||
severity: error
|
||||
|
||||
zero:
|
||||
name: "Short .zero"
|
||||
regex: '\(top: 0, left: 0, bottom: 0, right: 0\)'
|
||||
message: "Please use short init `.zero`."
|
||||
severity: error
|
||||
|
||||
private_variable:
|
||||
name: "Private variable"
|
||||
regex: '(?<!private\s\w*)let\s\w*(:|(\s=))\sVariable'
|
||||
message: "Please use (file)private with variable."
|
||||
severity: error
|
||||
|
||||
let_variable:
|
||||
name: "Let Variable"
|
||||
regex: 'var\s\w*(:|(\s=))\sVariable'
|
||||
message: "Please make variable using `let`."
|
||||
severity: error
|
||||
|
||||
marks_style:
|
||||
name: "Marks"
|
||||
regex: '// MARK: -?[a-zA-Z0-9]'
|
||||
message: "Marks should follow the following structure: // MARK: - Comment."
|
||||
severity: warning
|
||||
|
||||
no_header_comments:
|
||||
name: "Header Comments"
|
||||
regex: '//\s*Created by.*\s*//\s*Copyright'
|
||||
match_kinds:
|
||||
- comment
|
||||
message: "Template header comments should be removed."
|
||||
|
||||
delegate:
|
||||
name: "Delegate"
|
||||
regex: '(?<!weak\s)var\s\w*(D|d)elegate\w*:'
|
||||
message: "Please use `weak` for `delegate`. "
|
||||
severity: error
|
||||
|
||||
unnecessary_type:
|
||||
name: "Unnecessary Type"
|
||||
regex: '[ @a-zA-Z]*(?:let|var)\s\w*: ([a-zA-Z0-9]*)\?? = \1'
|
||||
message: "Type definition not needed"
|
||||
severity: error
|
||||
|
||||
unowned:
|
||||
name: "Unowned"
|
||||
regex: 'unowned'
|
||||
message: "Please use `weak` instead. "
|
||||
severity: error
|
||||
|
||||
inout_keyword:
|
||||
name: "Inout"
|
||||
regex: 'inout'
|
||||
message: "Don't use inout arguments"
|
||||
severity: error
|
||||
match_kinds: keyword
|
||||
|
||||
continue_keyword:
|
||||
name: "Continue"
|
||||
regex: 'continue'
|
||||
message: "Don't use continue instruction"
|
||||
severity: error
|
||||
match_kinds: keyword
|
||||
|
||||
cyrillic_strings:
|
||||
name: "Cyrillic strings"
|
||||
regex: '[а-яА-Я]+'
|
||||
message: "Localize or translate"
|
||||
severity: error
|
||||
match_kinds:
|
||||
- identifier
|
||||
- string
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
foreach (simplexml_load_file('cpd-output.xml')->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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
$PROJECT_NAME = $argv[1];
|
||||
$COMMON_STRINGS_PATH = $argv[2];
|
||||
|
||||
function createFolder($path) {
|
||||
if (!file_exists($path)) {
|
||||
mkdir($path, 0777, true);
|
||||
}
|
||||
}
|
||||
|
||||
$localization = './'.$PROJECT_NAME.'/Resources/Localization/';
|
||||
|
||||
foreach (glob($COMMON_STRINGS_PATH.'/*.json') as $file) {
|
||||
$languageName = array_pop(explode('_', basename($file, '.json')));
|
||||
$isBase = strpos($file, 'default') !== false;
|
||||
|
||||
$jsonFile = file_get_contents($file);
|
||||
$json = json_decode($jsonFile);
|
||||
|
||||
$ios_strings = "";
|
||||
foreach ($json as $key=>$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);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -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}" --specification-path common/api --output-path ${PROJECT_NAME}/Generated --templates-path api-generator-templates/Swift --action generate-client-code --single-file true
|
||||
|
|
@ -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
|
||||
|
|
@ -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}
|
||||
|
|
@ -0,0 +1 @@
|
|||
${PODS_ROOT}/SwiftLint/swiftlint autocorrect --path ${PROJECT_NAME} && ${PODS_ROOT}/SwiftLint/swiftlint --path ${PROJECT_NAME} --config ${PROJECT_DIR}/build-scripts/xcode/.swiftlint.yml
|
||||
Loading…
Reference in New Issue