mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-17 15:09:31 +02:00
Productivity: Create createRootCoordinator.sh
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
The `buildable` contains templates with source files that build.
|
||||
The `buildable` folder contains templates with source files that build.
|
||||
|
||||
The goal is to turn these templates as Xcode templates. They are part of the Riot project in order to ensure they build
|
||||
|
||||
# ScreenTemplate
|
||||
This is the boilerplate to create a screen that follows the MVVM-C pattern within the Riot app.
|
||||
This is the boilerplate to create a screen that follows the MVVM-C pattern used within the Riot app.
|
||||
|
||||
To use it (before it becomes an Xcode template):
|
||||
|
||||
@@ -18,7 +18,39 @@ The boilerplate to create a root coordinator and its presenter bridge that can b
|
||||
|
||||
To use it (before it becomes an Xcode template):
|
||||
|
||||
- `./createFlowCoordinator.sh MyFlowCoordinator [subFolder]`
|
||||
- Import the created folder in the Xcode project
|
||||
- `./createRootCoordinator.sh Folder MyRootCoordinatorName [DefaultScreenName]`
|
||||
- Import created files in the Xcode project
|
||||
|
||||
`subFolder` is an option subfolder under `Riot/Modules/`
|
||||
|
||||
# Usage example
|
||||
Following commands:
|
||||
|
||||
```
|
||||
./createScreen.sh MyFlowDir/MyFirstScreenDir MyFirstScreen
|
||||
./createRootCoordinator.sh MyFlowDir MyFlow MyFirstScreen
|
||||
```
|
||||
|
||||
generate in `Riot/Modules`:
|
||||
|
||||
```
|
||||
Riot/Modules/MyFlowDir
|
||||
├── MyFirstScreenDir
|
||||
│ ├── MyFirstScreenCoordinator.swift
|
||||
│ ├── MyFirstScreenCoordinatorType.swift
|
||||
│ ├── MyFirstScreenViewAction.swift
|
||||
│ ├── MyFirstScreenViewController.storyboard
|
||||
│ ├── MyFirstScreenViewController.swift
|
||||
│ ├── MyFirstScreenViewModel.swift
|
||||
│ ├── MyFirstScreenViewModelType.swift
|
||||
│ └── MyFirstScreenViewState.swift
|
||||
├── MyFlowCoordinator.swift
|
||||
├── MyFlowCoordinatorBridgePresenter.swift
|
||||
└── MyFlowCoordinatorType.swift
|
||||
```
|
||||
|
||||
It is then ready to use:
|
||||
|
||||
```
|
||||
MyFlowCoordinatorBridgePresenter *presenter = [[MyFlowCoordinatorBridgePresenter alloc] initWithSession:session];
|
||||
[presenter presentFrom:self animated:YES];
|
||||
```
|
||||
|
||||
37
Tools/Templates/createRootCoordinator.sh
Executable file
37
Tools/Templates/createRootCoordinator.sh
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ ! $# -eq 2 ] && [ ! $# -eq 3 ] ; then
|
||||
echo "Usage: ./createRootCoordinator.sh Folder MyRootCoordinatorName [DefaultScreenName]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
OUTPUT_DIR="../../Riot/Modules"/$1
|
||||
COORDINATOR_NAME=$2
|
||||
COORDINATOR_VAR_NAME=`echo $COORDINATOR_NAME | awk '{ print tolower(substr($0, 1, 1)) substr($0, 2) }'`
|
||||
SCREEN_NAME=$3
|
||||
SCREEN_VAR_NAME=`echo $SCREEN_NAME | awk '{ print tolower(substr($0, 1, 1)) substr($0, 2) }'`
|
||||
|
||||
MODULE_DIR="../../Riot/Modules"
|
||||
|
||||
echo "Create folder ${OUTPUT_DIR}"
|
||||
|
||||
mkdir -p $OUTPUT_DIR
|
||||
cp -R buildable/FlowCoordinatorTemplate/ $OUTPUT_DIR/
|
||||
|
||||
cd $OUTPUT_DIR
|
||||
for file in FlowTemplate*
|
||||
do
|
||||
if [ -f "$file" ]; then
|
||||
echo "Building ${file/FlowTemplate/$COORDINATOR_NAME}..."
|
||||
perl -p -i -e "s/FlowTemplate/"$COORDINATOR_NAME"/g" $file
|
||||
perl -p -i -e "s/flowTemplate/"$COORDINATOR_VAR_NAME"/g" $file
|
||||
|
||||
if [ -n "$SCREEN_NAME" ]; then
|
||||
perl -p -i -e "s/TemplateScreen/"$SCREEN_NAME"/g" $file
|
||||
perl -p -i -e "s/templateScreen/"$SCREEN_VAR_NAME"/g" $file
|
||||
fi
|
||||
|
||||
mv ${file} ${file/FlowTemplate/$COORDINATOR_NAME}
|
||||
fi
|
||||
done
|
||||
Reference in New Issue
Block a user