build(deps): update dependency com.gradleup.shadow:shadow-gradle-plug… #9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Project Setup | |
| on: | |
| push: | |
| branches: [master, main] | |
| workflow_dispatch: | |
| jobs: | |
| setup: | |
| name: Setup Project | |
| if: ${{ !github.event.repository.is_template }} | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Check if already initialized | |
| id: check | |
| run: | | |
| if grep -q "re.neotamia.javatemplate" buildSrc/src/main/kotlin/neotamia-build.gradle.kts; then | |
| echo "initialized=false" >> $GITHUB_OUTPUT | |
| else | |
| echo "initialized=true" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Run setup script | |
| if: steps.check.outputs.initialized == 'false' | |
| run: | | |
| REPO_NAME="${{ github.event.repository.name }}" | |
| REPO_OWNER="${{ github.repository_owner }}" | |
| # Sanitize names | |
| LOW_OWNER=$(echo "$REPO_OWNER" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]//g') | |
| LOW_NAME=$(echo "$REPO_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]//g') | |
| # camelCase: my-repo -> myRepo | |
| CAMEL_NAME=$(echo "$REPO_NAME" | sed -r 's/(^|[_-])([a-z])/\U\2/g' | sed 's/[^a-zA-Z0-9]//g' | sed 's/^./\l&/') | |
| # PascalCase: my-repo -> MyRepo | |
| PASCAL_NAME=$(echo "$REPO_NAME" | sed -r 's/(^|[_-])([a-z])/\U\2/g' | sed 's/[^a-zA-Z0-9]//g') | |
| echo "Setting up project for $REPO_OWNER/$REPO_NAME" | |
| echo "Package: re.$LOW_OWNER.$LOW_NAME" | |
| # 1. Replace strings in all files | |
| find . -type f -not -path '*/.*' -not -name 'project-setup.yml' > files.txt | |
| while read -r f; do | |
| if grep -qI . "$f"; then | |
| sed -i "s/re\.neotamia\.javatemplate/re.$LOW_OWNER.$LOW_NAME/g" "$f" | |
| sed -i "s/java-template/$REPO_NAME/g" "$f" | |
| sed -i "s/JavaTemplate/$PASCAL_NAME/g" "$f" | |
| sed -i "s/javaTemplate/$CAMEL_NAME/g" "$f" | |
| sed -i "s/Java Template/$REPO_NAME/g" "$f" | |
| sed -i "s/neotamia-build/$LOW_NAME-build/g" "$f" | |
| fi | |
| done < files.txt | |
| rm files.txt | |
| # 2. Replace Owner only in specific files to avoid breaking external actions | |
| files_to_replace_owner="README.md CONTRIBUTING.md buildSrc/src/main/kotlin/neotamia-build.gradle.kts settings.gradle.kts" | |
| for f in $files_to_replace_owner; do | |
| if [ -f "$f" ]; then | |
| sed -i "s/NeoTamia/$REPO_OWNER/g" "$f" | |
| fi | |
| done | |
| # 3. Rename directories to match new package | |
| find . -type d -path "*/re/neotamia/javatemplate" | while read -r dir; do | |
| base_path=$(echo "$dir" | sed 's|/re/neotamia/javatemplate$||') | |
| new_parent="$base_path/re/$LOW_OWNER" | |
| mkdir -p "$new_parent" | |
| mv "$dir" "$new_parent/$LOW_NAME" | |
| # Clean up old empty directories | |
| rmdir "$(dirname "$dir")" 2>/dev/null || true | |
| done | |
| # 4. Rename neotamia-build.gradle.kts | |
| mv buildSrc/src/main/kotlin/neotamia-build.gradle.kts "buildSrc/src/main/kotlin/$LOW_NAME-build.gradle.kts" | |
| - name: Commit changes | |
| if: steps.check.outputs.initialized == 'false' | |
| uses: stefanzweifel/git-auto-commit-action@04702edda442b2e678b25b537cec683a1493fcb9 # v7 | |
| with: | |
| commit_message: "chore: project setup for ${{ github.event.repository.name }}" | |
| push_options: '--force' | |
| - name: Remove setup workflow | |
| if: steps.check.outputs.initialized == 'false' || github.event_name == 'workflow_dispatch' | |
| run: rm .github/workflows/project-setup.yml | |
| - name: Commit removal | |
| if: steps.check.outputs.initialized == 'false' || github.event_name == 'workflow_dispatch' | |
| uses: stefanzweifel/git-auto-commit-action@04702edda442b2e678b25b537cec683a1493fcb9 # v7 | |
| with: | |
| commit_message: "chore: remove setup workflow" |