krzyzanowskim / Natalie

Natalie - Storyboard Code Generator (for Swift)
http://blog.krzyzanowskim.com/2015/04/15/natalie-storyboard-code-generator/
MIT License
1.17k stars 74 forks source link

Regenerate Storyboards.swift only if needed #60

Closed Frizlab closed 9 years ago

Frizlab commented 9 years ago

The proposed run script build phase in the Readme will re-generate Storyboards.swift at each build. The generation in itself is long. Add to this that Xcode have to re-compile the generated file each time, it took me three builds to get annoyed…

Here’s a proposed script that detects whether re-generating the file is actually needed before re-generating it.

echo "Natalie Generator: Determining if generated Swift file is up-to-date."

NATALIE_PATH="$PROJECT_DIR/Dependencies/natalie/natalie.swift"

GO=0
BASE_PATH="$PROJECT_DIR/$PROJECT_NAME"
OUTPUT_PATH="$BASE_PATH/Storyboards.swift"
if [ ! -e "$OUTPUT_PATH" ]; then
    GO=1
elif [ -n "$(find "$BASE_PATH" -type f -name "*.storyboard" -newer "$OUTPUT_PATH" -print -quit)" ]; then
    GO=1
fi

if [ $GO -eq 1 ]; then
    echo "Natalie Generator: Generated Swift is out-of-date; re-generating..."
    "$NATALIE_PATH" "$PROJECT_DIR/$PROJECT_NAME" >"$OUTPUT_PATH"
    echo "Natalie Generator: Done."
else
    echo "Natalie Generator: Generated Swift is up-to-date; skipping re-generation."
fi
krzyzanowskim commented 9 years ago

👏

krzyzanowskim commented 9 years ago
echo "Natalie Generator: Determining if generated Swift file is up-to-date."

NATALIE_PATH="../natalie.swift"

if [ -f $NATALIE_PATH ]
then
    BASE_PATH="$PROJECT_DIR/$PROJECT_NAME"
    OUTPUT_PATH="$BASE_PATH/Storyboards.swift"
    if [ ! -e "$OUTPUT_PATH" ] || [ -n "$(find "$BASE_PATH" -type f -name "*.storyboard" -newer "$OUTPUT_PATH" -print -quit)" ]; then
        echo "Natalie Generator: Generated Swift is out-of-date; re-generating..."
        "$NATALIE_PATH" "$PROJECT_DIR/$PROJECT_NAME" > "$PROJECT_DIR/$PROJECT_NAME/Storyboards.swift"
        echo "Natalie Generator: Done."
    else
        echo "Natalie Generator: Generated Swift is up-to-date; skipping re-generation."
    fi
fi