Загрузка данных


name: Build TrollStore IPA

on:
  push:
    branches: [ "main", "master" ]
  workflow_dispatch:

jobs:
  build:
    runs-on: macos-14

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Clean & Compile App
        run: |
          rm -rf Dopamine.app Payload Dopamine.ipa
          mkdir -p Dopamine.app
          
          # Компиляция всех Swift-файлов
          swiftc -sdk $(xcrun --sdk iphoneos --show-sdk-path) \
            -target arm64-apple-ios16.2 \
            -emit-executable \
            -o Dopamine.app/Dopamine \
            Sources/Dopamine/App.swift \
            Sources/Dopamine/Models/StickStore.swift \
            Sources/Dopamine/Views/MainTabView.swift \
            Sources/Dopamine/Views/CounterView.swift \
            Sources/Dopamine/Views/CalendarAnalyticsView.swift \
            Sources/Dopamine/Views/HistoryView.swift

      - name: Install Dependencies & Generate Icon
        run: |
          python3 -m pip install Pillow --break-system-packages
          
          python3 -c "
          from PIL import Image, ImageDraw

          img = Image.new('RGB', (1024, 1024), color='#1C1C1E')
          draw = ImageDraw.Draw(img)

          center = 512
          radius = 320
          draw.ellipse([center - radius, center - radius, center + radius, center + radius], fill='#FF5E00')

          radius_inner = 180
          draw.ellipse([center - radius_inner, center - radius_inner, center + radius_inner, center + radius_inner], fill='#FF9500')

          img.save('Dopamine.app/AppIcon60x60@2x.png')
          img.save('Dopamine.app/AppIcon60x60@3x.png')
          "

      - name: Create & Convert Info.plist
        run: |
          cat <<EOF > Dopamine.app/Info.plist
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
          <plist version="1.0">
          <dict>
              <key>CFBundleExecutable</key>
              <string>Dopamine</string>
              <key>CFBundleIdentifier</key>
              <string>com.app.dopamine</string>
              <key>CFBundleName</key>
              <string>Dopamine</string>
              <key>CFBundleDisplayName</key>
              <string>Dopamine</string>
              <key>CFBundlePackageType</key>
              <string>APPL</string>
              <key>CFBundleShortVersionString</key>
              <string>1.0</string>
              <key>CFBundleVersion</key>
              <string>1</string>
              <key>LSRequiresIPhoneOS</key>
              <true/>
              <key>MinimumOSVersion</key>
              <string>16.2</string>
              <key>UILaunchScreen</key>
              <dict/>
              <key>CFBundleIcons</key>
              <dict>
                  <key>CFBundlePrimaryIcon</key>
                  <dict>
                      <key>CFBundleIconFiles</key>
                      <array>
                          <string>AppIcon60x60</string>
                      </array>
                      <key>UIPrerenderedIcon</key>
                      <true/>
                  </dict>
              </dict>
          </dict>
          EOF

          # Конвертируем plist в правильный бинарный формат Apple
          plutil -convert binary1 Dopamine.app/Info.plist

      - name: Ad-hoc Code Sign
        run: |
          # Подписываем приложение для распознавания бандла системами iOS/TrollStore
          codesign -s - --force --deep Dopamine.app

      - name: Package into IPA
        run: |
          mkdir -p Payload
          cp -R Dopamine.app Payload/
          zip -qr Dopamine.ipa Payload/

      - name: Upload IPA Artifact
        uses: actions/upload-artifact@v4
        with:
          name: Dopamine-TrollStore
          path: Dopamine.ipa