diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..71cd104 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,401 @@ +# This workflow will build a Swift project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-swift + +name: main + +on: + push: + branches: + - main + - develop + paths: + - .github/workflows/** + - .swiftlint.yml + - Package.swift + - Punycode.podspec + - Punycode.xcodeproj/** + - Source/** + - Tests/** + # pull_request: + # branches: + # - develop + # # branches-ignore: + # # - "release/**" + # # - "feature/**" + # paths: + # - .github/workflows/** + # - .swiftlint.yml + # - Package.swift + # - Punycode.podspec + # - Punycode.xcodeproj/** + # - Source/** + # - Tests/** + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + swiftlint: + name: SwiftLint + runs-on: macos-14 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install SwiftLint + run: brew install swiftlint + - name: Lint + run: | + set -o pipefail + swiftlint lint --quiet | sed -E 's/^(.*):([0-9]+):([0-9]+): (warning|error|[^:]+): (.*)/::\4 title=Lint error,file=\1,line=\2,col=\3::\5\n\1:\2:\3/' + + ### ref: https://github.com/Alamofire/Alamofire/blob/master/.github/workflows/ci.yml + test_macOS: + name: ${{ matrix.name }} + runs-on: ${{ matrix.runsOn }} + env: + DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + include: + - xcode: "Xcode_15.4" + runsOn: macos-14 + name: "Test: macOS 14, Xcode 15.4, Swift 5.10" + testPlan: "macOS" + outputFilter: xcbeautify --renderer github-actions + coverage: YES + - xcode: "Xcode_15.2" + runsOn: macos-14 + name: "Test: macOS 14, Xcode 15.2, Swift 5.9.2" + testPlan: "macOS" + outputFilter: xcbeautify --renderer github-actions + coverage: NO + - xcode: "Xcode_14.3.1" + runsOn: macOS-13 + name: "Test: macOS 13, Xcode 14.3.1, Swift 5.8.0" + testPlan: "macOS" + outputFilter: xcbeautify --renderer github-actions + coverage: NO + - xcode: "Xcode_14.2" + runsOn: macOS-12 + name: "Test: macOS 12, Xcode 14.2, Swift 5.7.2" + testPlan: "macOS" + outputFilter: xcpretty + coverage: NO + steps: + - uses: actions/checkout@v4 + - name: ${{ matrix.name }} + run: |- + set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Punycode.xcodeproj" -scheme "Punycode" -destination "platform=macOS" -enableCodeCoverage ${{ matrix.coverage }} clean test | ${{ matrix.outputFilter }} + - name: Upload coverage to Codecov + if: ${{ matrix.coverage == 'YES' }} + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: true + verbose: true + needs: swiftlint + + test_Catalyst: + name: ${{ matrix.name }} + runs-on: ${{ matrix.runsOn }} + env: + DEVELOPER_DIR: /Applications/${{ matrix.xcode }}.app/Contents/Developer + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + include: + - xcode: "Xcode_15.4" + name: "Test: Catalyst 15.4" + runsOn: macos-14 + - xcode: "Xcode_14.3.1" + name: "Test: Catalyst 14.3.1" + runsOn: macOS-13 + steps: + - uses: actions/checkout@v4 + - name: Catalyst + run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Punycode.xcodeproj" -scheme "Punycode" -destination "platform=macOS" clean test 2>&1 | xcbeautify --renderer github-actions + needs: swiftlint + + test_iOS: + name: ${{ matrix.name }} + runs-on: ${{ matrix.runsOn }} + env: + DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + include: + - destination: "OS=17.5,name=iPhone 15 Pro" + name: "Test: iOS 17.6" + testPlan: "iOS" + xcode: "Xcode_15.4" + runsOn: macos-14 + - destination: "OS=16.4,name=iPhone 14 Pro" + name: "Test: iOS 16.4" + testPlan: "iOS" + xcode: "Xcode_14.3.1" + runsOn: macOS-13 + - destination: "OS=15.5,name=iPhone 13 Pro" + name: "Test: iOS 15.5" + testPlan: "iOS" + xcode: "Xcode_13.4.1" + runsOn: macOS-12 + steps: + - uses: actions/checkout@v4 + - name: ${{ matrix.name }} + run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Punycode.xcodeproj" -scheme "Punycode" -destination "${{ matrix.destination }}" clean test 2>&1 | xcbeautify --renderer github-actions + needs: swiftlint + + test_tvOS: + name: ${{ matrix.name }} + runs-on: ${{ matrix.runsOn }} + env: + DEVELOPER_DIR: /Applications/${{ matrix.xcode }}.app/Contents/Developer + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + include: + - destination: "OS=17.5,name=Apple TV" + name: "Test: tvOS 17.5" + testPlan: "tvOS" + xcode: "Xcode_15.4" + runsOn: macos-14 + - destination: "OS=16.4,name=Apple TV" + name: "Test: tvOS 16.4" + testPlan: "tvOS" + xcode: "Xcode_14.3.1" + runsOn: macOS-13 + - destination: "OS=15.4,name=Apple TV" + name: "Test: tvOS 15.4" + testPlan: "tvOS" + xcode: "Xcode_13.4.1" + runsOn: macOS-12 + steps: + - uses: actions/checkout@v4 + - name: ${{ matrix.name }} + run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Punycode.xcodeproj" -scheme "Punycode" -destination "${{ matrix.destination }}" clean test 2>&1 | xcbeautify --renderer github-actions + needs: swiftlint + + test_visionOS: + name: ${{ matrix.name }} + runs-on: ${{ matrix.runsOn }} + env: + DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + include: + - destination: "OS=1.2,name=Apple Vision Pro" + name: "Test: visionOS 1.2" + testPlan: "visionOS" + scheme: "Punycode" + xcode: "Xcode_15.4" + runsOn: macos-14 + steps: + - uses: actions/checkout@v4 + - name: ${{ matrix.name }} + run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Punycode.xcodeproj" -scheme "${{ matrix.scheme }}" -destination "${{ matrix.destination }}" clean test 2>&1 | xcbeautify --renderer github-actions + needs: swiftlint + + test_watchOS: + name: ${{ matrix.name }} + runs-on: ${{ matrix.runsOn }} + env: + DEVELOPER_DIR: /Applications/${{ matrix.xcode }}.app/Contents/Developer + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + include: + - destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" + name: "Test: watchOS 10.5" + testPlan: "watchOS" + xcode: "Xcode_15.4" + runsOn: macos-14 + - destination: "OS=9.4,name=Apple Watch Series 8 (45mm)" + name: "Test: watchOS 9.4" + testPlan: "watchOS" + xcode: "Xcode_14.3.1" + runsOn: macOS-13 + - destination: "OS=8.5,name=Apple Watch Series 7 - 45mm" + name: "Test: watchOS 8.5" + testPlan: "watchOS" + xcode: "Xcode_13.4.1" + runsOn: macOS-12 + steps: + - uses: actions/checkout@v4 + - name: ${{ matrix.name }} + run: set -o pipefail && env NSUnbufferedIO=YES xcodebuild -project "Punycode.xcodeproj" -scheme "Punycode" -destination "${{ matrix.destination }}" clean test 2>&1 | xcbeautify --renderer github-actions + needs: swiftlint + + SPM: + name: ${{ matrix.name }} + runs-on: ${{ matrix.runsOn }} + env: + DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + include: + - xcode: "Xcode_15.4" + runsOn: macOS-14 + name: "SPM: macOS 14, Swift 5.10" + outputFilter: xcbeautify --renderer github-actions + - xcode: "Xcode_15.2" + runsOn: macOS-14 + name: "SPM: macOS 14, Swift 5.9.2" + outputFilter: xcbeautify --renderer github-actions + - xcode: "Xcode_14.3.1" + runsOn: macOS-13 + name: "SPM: macOS 13, Swift 5.8.0" + outputFilter: xcbeautify --renderer github-actions + - xcode: "Xcode_14.2" + runsOn: macOS-12 + name: "SPM: macOS 12, Swift 5.7.2" + outputFilter: xcpretty + - xcode: "Xcode_13.3.1" + runsOn: macOS-12 + name: "SPM: macOS 12, Swift 5.6.0" + outputFilter: xcpretty + - xcode: "Xcode_13.2.1" + runsOn: macOS-12 + name: "SPM: macOS 12, Swift 5.5.2" + outputFilter: xcpretty + steps: + - uses: actions/checkout@v4 + - name: Test SPM + run: swift test -c debug 2>&1 | ${{ matrix.outputFilter }} + needs: [test_macOS, test_Catalyst, test_iOS, test_tvOS, test_watchOS, test_visionOS] + + carthage: + name: ${{ matrix.name }} + runs-on: ${{ matrix.runsOn }} + env: + DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" + strategy: + fail-fast: true + matrix: + include: + - xcode: "Xcode_15.4" + runsOn: macOS-14 + name: "Carthage: macOS" + platform: "macos" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + name: "Carthage: iOS" + platform: "ios" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + name: "Carthage: tvOS" + platform: "tvos" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + name: "Carthage: watchOS" + platform: "watchos" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + name: "Carthage: visionOS" + platform: "visionos" + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Run SwiftLint and Build Carthage for ${{ matrix.platform }} + run: | + carthage build \ + --no-skip-current \ + --platform ${{ matrix.platform }} \ + --use-xcframeworks \ + --cache-builds + needs: SPM + + cocoapods: + name: "Pods: ${{ matrix.platform }}, ${{ matrix.configuration }}" + runs-on: ${{ matrix.runsOn }} + env: + DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" + strategy: + fail-fast: true + matrix: + include: + - xcode: "Xcode_15.4" + runsOn: macOS-14 + platform: "macos" + configuration: "Release" + name: "Pods: macOS, Release" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + platform: "macos" + configuration: "Debug" + name: "Pods: macOS, Debug" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + platform: "ios" + configuration: "Release" + name: "Pods: iOS, Release" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + platform: "ios" + configuration: "Debug" + name: "Pods: iOS, Debug" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + platform: "tvos" + configuration: "Release" + name: "Pods: tvOS, Release" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + platform: "tvos" + configuration: "Debug" + name: "Pods: tvOS, Debug" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + platform: "watchos" + configuration: "Release" + name: "Pods: watchOS, Release" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + platform: "watchos" + configuration: "Debug" + name: "Pods: watchOS, Debug" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + platform: "visionos" + configuration: "Release" + name: "Pods: visionOS, Release" + - xcode: "Xcode_15.4" + runsOn: macOS-14 + platform: "visionos" + configuration: "Debug" + name: "Pods: visionOS, Debug" + steps: + - name: Update CocoaPods + if: ${{ matrix.platform == 'visionos' }} + run: gem install cocoapods + - name: Checkout + uses: actions/checkout@v4 + - name: Pod lib lint + run: | + pod lib lint --verbose \ + --configuration=${{ matrix.configuration }} \ + --platforms=${{ matrix.platform }} \ + Punycode.podspec + - name: Pod lib lint - Use Static Frameworks + run: | + pod lib lint --verbose --use-static-frameworks \ + --configuration=${{ matrix.configuration }} \ + --platforms=${{ matrix.platform }} \ + Punycode.podspec + # - name: Pod Push + # if: github.ref == 'refs/heads/main' + # run: | + # pod repo update + # pod trunk push Punycode.podspec --allow-warnings + needs: carthage diff --git a/.gitignore b/.gitignore index e150406..a6321a4 100644 --- a/.gitignore +++ b/.gitignore @@ -66,13 +66,10 @@ fastlane/report.xml fastlane/Preview.html fastlane/screenshots/**/*.png fastlane/test_output +fastlane/reports # Direnv .envrc # Ruby -.bundle -.ruby-version - -# Python -.python-version +.bundle \ No newline at end of file diff --git a/.mise.toml b/.mise.toml new file mode 100644 index 0000000..688ecae --- /dev/null +++ b/.mise.toml @@ -0,0 +1,9 @@ +[tools] +python = "3.11.9" +ruby = "3.2.5" + +[env] +_.python.venv = ".venv" +EXPANDED_CODE_SIGN_IDENTITY="" +EXPANDED_CODE_SIGN_IDENTITY_NAME="" +EXPANDED_PROVISIONING_PROFILE="" \ No newline at end of file diff --git a/.swift-version b/.swift-version index 819e07a..6e63660 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -5.0 +5.0 \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 73930a9..0000000 --- a/.travis.yml +++ /dev/null @@ -1,75 +0,0 @@ -language: objective-c -os: osx -osx_image: xcode11.5 - -branches: - only: - - master - - develop -# - "/^v?[0-9\\.]+/" - -cache: - bundler: true - cocoapods: true - directories: - - Carthage - -env: - global: - - XCODE_PROJECT="Punycode.xcodeproj" - - IOS_SCHEME="Punycode-iOS" - - TVOS_SCHEME="Punycode-tvOS" - - MACOS_SCHEME="Punycode-macOS" - -matrix: - include: - # iOS Tests - - env: SCHEME="$IOS_SCHEME" DESTINATION="OS=13.5,name=iPhone 11 Pro" RUN_TESTS="YES" LINT="NO" COVERAGE="YES" CODECOV_FLAG="ios13" - - env: SCHEME="$IOS_SCHEME" DESTINATION="OS=12.4,name=iPhone X" RUN_TESTS="YES" LINT="NO" COVERAGE="YES" CODECOV_FLAG="ios12" - - env: SCHEME="$IOS_SCHEME" DESTINATION="OS=11.4,name=iPhone 7" RUN_TESTS="YES" LINT="YES" COVERAGE="NO" CODECOV_FLAG="ios11" - - env: SCHEME="$IOS_SCHEME" DESTINATION="OS=10.3.1,name=iPhone 6" RUN_TESTS="YES" LINT="NO" COVERAGE="NO" CODECOV_FLAG="ios10" - # tvOS Tests - - env: SCHEME="$TVOS_SCHEME" DESTINATION="OS=13.4,name=Apple TV 4K" RUN_TESTS="YES" LINT="NO" COVERAGE="NO" CODECOV_FLAG="tvos13" - - env: SCHEME="$TVOS_SCHEME" DESTINATION="OS=12.4,name=Apple TV 4K" RUN_TESTS="YES" LINT="NO" COVERAGE="NO" CODECOV_FLAG="tvos12" - - env: SCHEME="$TVOS_SCHEME" DESTINATION="OS=11.4,name=Apple TV" RUN_TESTS="YES" LINT="NO" COVERAGE="NO" CODECOV_FLAG="tvos11" - # macOS Tests - - env: SCHEME="$MACOS_SCHEME" DESTINATION="arch=x86_64" RUN_TESTS="YES" LINT="NO" COVERAGE="NO" CODECOV_FLAG="macos" - -before_install: - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then - gem install cocoapods --no-document --quiet; - gem install xcpretty --no-document --quiet; - pod repo update; - brew update; - brew outdated carthage || brew upgrade carthage; - fi - -install: - - ./install-swiftlint.sh; - -script: - - set -o pipefail; - - swift -version; - - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then - xcrun simctl list; - xcodebuild -version; - xcodebuild -showsdks; - xcodebuild -list; - fi - - - if [ "$RUN_TESTS" == "YES" ]; then - xcodebuild clean test -project "$XCODE_PROJECT" -scheme "$SCHEME" -destination "$DESTINATION" -enableCodeCoverage $COVERAGE | xcpretty -c; - elif [ "$RUN_TESTS" == "NO" ]; then - xcodebuild clean build -project "$XCODE_PROJECT" -scheme "$SCHEME" -destination "$DESTINATION" -configuration Release | xcpretty -c; - fi - - - if [ "$LINT" == "YES" ]; then - swiftlint; - carthage build --no-skip-current; - fi - -after_success: - - if [ "$COVERAGE" == "YES" ]; then - bash <(curl -s https://codecov.io/bash) -J 'Punycode' -cF "$CODECOV_FLAG"; - fi diff --git a/Gemfile b/Gemfile index b09edb1..25e9aa3 100644 --- a/Gemfile +++ b/Gemfile @@ -11,3 +11,6 @@ gem "travis" gem "fastlane" gem "slather" gem "xcpretty" + +plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') +eval_gemfile(plugins_path) if File.exist?(plugins_path) diff --git a/Gemfile.lock b/Gemfile.lock index a3ad578..db948c0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,285 +1,359 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.2) - activesupport (4.2.11.3) - i18n (~> 0.7) + CFPropertyList (3.0.7) + base64 + nkf + rexml + activesupport (5.2.8.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) - addressable (2.7.0) - public_suffix (>= 2.0.2, < 5.0) - algoliasearch (1.27.3) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) + artifactory (3.0.17) atomos (0.1.3) - aws-eventstream (1.1.0) - aws-partitions (1.331.0) - aws-sdk-core (3.100.0) - aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.239.0) - aws-sigv4 (~> 1.1) - jmespath (~> 1.0) - aws-sdk-kms (1.34.1) - aws-sdk-core (~> 3, >= 3.99.0) - aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.69.0) - aws-sdk-core (~> 3, >= 3.99.0) + aws-eventstream (1.3.0) + aws-partitions (1.968.0) + aws-sdk-core (3.201.5) + aws-eventstream (~> 1, >= 1.3.0) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.9) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.88.0) + aws-sdk-core (~> 3, >= 3.201.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3 (1.159.0) + aws-sdk-core (~> 3, >= 3.201.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.1) - aws-sigv4 (1.2.0) + aws-sigv4 (~> 1.5) + aws-sigv4 (1.9.1) aws-eventstream (~> 1, >= 1.0.2) - babosa (1.0.3) - backports (3.17.2) - claide (1.0.3) - clamp (1.3.1) - cocoapods (1.8.4) - activesupport (>= 4.0.2, < 5) + babosa (1.0.4) + base64 (0.2.0) + claide (1.1.0) + clamp (1.3.2) + cocoapods (1.15.2) + addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.8.4) + cocoapods-core (= 1.15.2) cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 1.2.2, < 2.0) + cocoapods-downloader (>= 2.1, < 3.0) cocoapods-plugins (>= 1.0.0, < 2.0) cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-stats (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.4.0, < 2.0) + cocoapods-trunk (>= 1.6.0, < 2.0) cocoapods-try (>= 1.1.0, < 2.0) colored2 (~> 3.1) escape (~> 0.0.4) fourflusher (>= 2.3.0, < 3.0) gh_inspector (~> 1.0) - molinillo (~> 0.6.6) + molinillo (~> 0.8.0) nap (~> 1.0) - ruby-macho (~> 1.4) - xcodeproj (>= 1.11.1, < 2.0) + ruby-macho (>= 2.3.0, < 3.0) + xcodeproj (>= 1.23.0, < 2.0) cocoapods-clean (0.0.1) - cocoapods-core (1.8.4) - activesupport (>= 4.0.2, < 6) + cocoapods-core (1.15.2) + activesupport (>= 5.0, < 8) + addressable (~> 2.8) algoliasearch (~> 1.0) concurrent-ruby (~> 1.1) fuzzy_match (~> 2.0.4) nap (~> 1.0) - cocoapods-deintegrate (1.0.4) - cocoapods-downloader (1.3.0) + netrc (~> 0.11) + public_suffix (~> 4.0) + typhoeus (~> 1.0) + cocoapods-deintegrate (1.0.5) + cocoapods-downloader (2.1) cocoapods-plugins (1.0.0) nap - cocoapods-search (1.0.0) - cocoapods-stats (1.1.0) - cocoapods-trunk (1.5.0) + cocoapods-search (1.0.1) + cocoapods-trunk (1.6.0) nap (>= 0.8, < 2.0) netrc (~> 0.11) cocoapods-try (1.2.0) colored (1.2) colored2 (3.1.2) - commander-fastlane (4.4.6) - highline (~> 1.7.2) - concurrent-ruby (1.1.6) - connection_pool (2.2.3) - declarative (0.0.10) - declarative-option (0.1.0) - digest-crc (0.5.1) - domain_name (0.5.20190701) - unf (>= 0.0.5, < 1.0.0) - dotenv (2.7.5) - emoji_regex (1.0.1) + commander (4.6.0) + highline (~> 2.0.0) + concurrent-ruby (1.3.4) + declarative (0.0.20) + digest-crc (0.6.5) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.6.20240107) + dotenv (2.8.1) + emoji_regex (3.2.3) escape (0.0.4) - ethon (0.12.0) - ffi (>= 1.3.0) - excon (0.75.0) - faraday (0.17.3) - multipart-post (>= 1.2, < 3) - faraday-cookie_jar (0.0.6) - faraday (>= 0.7.4) + ethon (0.16.0) + ffi (>= 1.15.0) + excon (0.111.0) + faraday (1.10.3) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.7) + faraday (>= 0.8.0) http-cookie (~> 1.0.0) - faraday_middleware (0.14.0) - faraday (>= 0.7.4, < 1.0) - fastimage (2.1.7) - fastlane (2.149.1) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.2) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + faraday_middleware (1.2.0) + faraday (~> 1.0) + fastimage (2.3.1) + fastlane (2.222.0) CFPropertyList (>= 2.3, < 4.0.0) - addressable (>= 2.3, < 3.0.0) + addressable (>= 2.8, < 3.0.0) + artifactory (~> 3.0) aws-sdk-s3 (~> 1.0) - babosa (>= 1.0.2, < 2.0.0) + babosa (>= 1.0.3, < 2.0.0) bundler (>= 1.12.0, < 3.0.0) - colored - commander-fastlane (>= 4.4.6, < 5.0.0) + colored (~> 1.2) + commander (~> 4.6) dotenv (>= 2.1.1, < 3.0.0) - emoji_regex (>= 0.1, < 2.0) + emoji_regex (>= 0.1, < 4.0) excon (>= 0.71.0, < 1.0.0) - faraday (>= 0.17, < 2.0) + faraday (~> 1.0) faraday-cookie_jar (~> 0.0.6) - faraday_middleware (>= 0.13.1, < 2.0) + faraday_middleware (~> 1.0) fastimage (>= 2.1.0, < 3.0.0) gh_inspector (>= 1.1.2, < 2.0.0) - google-api-client (>= 0.37.0, < 0.39.0) - google-cloud-storage (>= 1.15.0, < 2.0.0) - highline (>= 1.7.2, < 2.0.0) + google-apis-androidpublisher_v3 (~> 0.3) + google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-env (>= 1.6.0, < 2.0.0) + google-cloud-storage (~> 1.31) + highline (~> 2.0) + http-cookie (~> 1.0.5) json (< 3.0.0) - jwt (~> 2.1.0) + jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) - multi_xml (~> 0.5) - multipart-post (~> 2.0.0) + multipart-post (>= 2.0.0, < 3.0.0) + naturally (~> 2.2) + optparse (>= 0.1.1, < 1.0.0) plist (>= 3.1.0, < 4.0.0) - public_suffix (~> 2.0.0) - rubyzip (>= 1.3.0, < 2.0.0) - security (= 0.1.3) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.5) simctl (~> 1.6.3) - slack-notifier (>= 2.0.0, < 3.0.0) terminal-notifier (>= 2.0.0, < 3.0.0) - terminal-table (>= 1.4.5, < 2.0.0) + terminal-table (~> 3) tty-screen (>= 0.6.3, < 1.0.0) tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) - xcpretty-travis-formatter (>= 0.0.3) - ffi (1.13.1) + xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) + fastlane-plugin-versioning (0.6.0) + ffi (1.17.0-aarch64-linux-gnu) + ffi (1.17.0-aarch64-linux-musl) + ffi (1.17.0-arm-linux-gnu) + ffi (1.17.0-arm-linux-musl) + ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x86-linux-gnu) + ffi (1.17.0-x86-linux-musl) + ffi (1.17.0-x86_64-darwin) + ffi (1.17.0-x86_64-linux-gnu) + ffi (1.17.0-x86_64-linux-musl) fourflusher (2.3.1) fuzzy_match (2.0.4) - gh (0.14.0) - addressable - backports - faraday (~> 0.8) + gh (0.18.0) + activesupport (~> 5.0) + addressable (~> 2.4) + faraday (~> 1.0) + faraday_middleware (~> 1.0) multi_json (~> 1.0) - net-http-persistent (>= 2.7) + net-http-persistent (~> 2.9) net-http-pipeline gh_inspector (1.1.3) - google-api-client (0.38.0) + google-apis-androidpublisher_v3 (0.54.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-core (0.11.3) addressable (~> 2.5, >= 2.5.1) - googleauth (~> 0.9) - httpclient (>= 2.8.1, < 3.0) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) mini_mime (~> 1.0) representable (~> 3.0) - retriable (>= 2.0, < 4.0) - signet (~> 0.12) - google-cloud-core (1.5.0) - google-cloud-env (~> 1.0) + retriable (>= 2.0, < 4.a) + rexml + google-apis-iamcredentials_v1 (0.17.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-playcustomapp_v1 (0.13.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-storage_v1 (0.31.0) + google-apis-core (>= 0.11.0, < 2.a) + google-cloud-core (1.7.1) + google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) - google-cloud-env (1.3.2) - faraday (>= 0.17.3, < 2.0) - google-cloud-errors (1.0.1) - google-cloud-storage (1.26.2) - addressable (~> 2.5) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) + google-cloud-errors (1.4.0) + google-cloud-storage (1.47.0) + addressable (~> 2.8) digest-crc (~> 0.4) - google-api-client (~> 0.33) - google-cloud-core (~> 1.2) - googleauth (~> 0.9) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.31.0) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (0.13.0) - faraday (>= 0.17.3, < 2.0) + googleauth (1.8.1) + faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) - memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) - signet (~> 0.14) - highline (1.7.10) - http-cookie (1.0.3) + signet (>= 0.16, < 2.a) + highline (2.0.3) + http-cookie (1.0.7) domain_name (~> 0.5) httpclient (2.8.3) - i18n (0.9.5) + i18n (1.14.5) concurrent-ruby (~> 1.0) - jmespath (1.4.0) - json (2.3.0) - jwt (2.1.0) - launchy (2.5.0) - addressable (~> 2.7) - memoist (0.16.2) - mini_magick (4.10.1) - mini_mime (1.0.2) - mini_portile2 (2.4.0) - minitest (5.14.1) - molinillo (0.6.6) - multi_json (1.14.1) - multi_xml (0.6.0) - multipart-post (2.0.0) - nanaimo (0.2.6) + jmespath (1.6.2) + json (2.7.2) + json_pure (2.7.2) + jwt (2.8.2) + base64 + launchy (2.4.3) + addressable (~> 2.3) + mini_magick (4.13.2) + mini_mime (1.1.5) + minitest (5.25.1) + molinillo (0.8.0) + multi_json (1.15.0) + multipart-post (2.4.1) + nanaimo (0.3.0) nap (1.1.0) - naturally (2.2.0) - net-http-persistent (4.0.0) - connection_pool (~> 2.2) + naturally (2.2.1) + net-http-persistent (2.9.4) net-http-pipeline (1.0.1) netrc (0.11.0) - nokogiri (1.10.9) - mini_portile2 (~> 2.4.0) - os (1.1.0) - plist (3.5.0) - public_suffix (2.0.5) + nkf (0.2.0) + nokogiri (1.16.7-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.7-arm-linux) + racc (~> 1.4) + nokogiri (1.16.7-arm64-darwin) + racc (~> 1.4) + nokogiri (1.16.7-x86-linux) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.16.7-x86_64-linux) + racc (~> 1.4) + optparse (0.5.0) + os (1.1.4) + plist (3.7.1) + public_suffix (4.0.7) pusher-client (0.6.2) json websocket (~> 1.0) - representable (3.0.4) + racc (1.8.1) + rake (13.2.1) + representable (3.2.0) declarative (< 0.1.0) - declarative-option (< 0.2.0) + trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) + rexml (3.3.6) + strscan rouge (2.0.7) - ruby-macho (1.4.0) - rubyzip (1.3.0) - security (0.1.3) - signet (0.14.0) - addressable (~> 2.3) - faraday (>= 0.17.3, < 2.0) + ruby-macho (2.5.1) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + security (0.1.5) + signet (0.19.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) - simctl (1.6.8) + simctl (1.6.10) CFPropertyList naturally - slack-notifier (2.3.2) - slather (2.4.9) + slather (2.8.3) CFPropertyList (>= 2.2, < 4) - activesupport (>= 4.0.2, < 5) + activesupport clamp (~> 1.3) - nokogiri (~> 1.8) - xcodeproj (~> 1.7) + nokogiri (>= 1.14.3) + xcodeproj (~> 1.21) + strscan (3.1.0) terminal-notifier (2.0.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) thread_safe (0.3.6) - travis (1.8.13) - backports - faraday (~> 0.9) - faraday_middleware (~> 0.9, >= 0.9.1) + trailblazer-option (0.1.2) + travis (1.11.1) + faraday (~> 1.0) + faraday_middleware (~> 1.0) gh (~> 0.13) - highline (~> 1.6) - launchy (~> 2.1) + highline (~> 2.0) + json_pure (~> 2.3) + launchy (~> 2.1, < 2.5.0) pusher-client (~> 0.4) - typhoeus (~> 0.6, >= 0.6.8) tty-cursor (0.7.1) - tty-screen (0.8.0) + tty-screen (0.8.2) tty-spinner (0.9.3) tty-cursor (~> 0.7) - typhoeus (0.8.0) - ethon (>= 0.8.0) - tzinfo (1.2.7) + typhoeus (1.4.1) + ethon (>= 0.9.0) + tzinfo (1.2.11) thread_safe (~> 0.1) uber (0.1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.7.7) - unicode-display_width (1.7.0) - websocket (1.2.8) + unicode-display_width (2.5.0) + websocket (1.2.11) word_wrap (1.0.0) - xcodeproj (1.16.0) + xcodeproj (1.25.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) - nanaimo (~> 0.2.6) + nanaimo (~> 0.3.0) + rexml (>= 3.3.2, < 4.0) xcpretty (0.3.0) rouge (~> 2.0.7) - xcpretty-travis-formatter (1.0.0) + xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) PLATFORMS - ruby + aarch64-linux + aarch64-linux-gnu + aarch64-linux-musl + arm-linux + arm-linux-gnu + arm-linux-musl + arm64-darwin + x86-linux + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux + x86_64-linux-gnu + x86_64-linux-musl DEPENDENCIES cocoapods cocoapods-clean cocoapods-deintegrate fastlane + fastlane-plugin-versioning slather travis xcpretty BUNDLED WITH - 2.1.4 + 2.5.17 diff --git a/Punycode.podspec b/Punycode.podspec index 053b65e..8a31ba9 100644 --- a/Punycode.podspec +++ b/Punycode.podspec @@ -1,18 +1,20 @@ Pod::Spec.new do |s| - s.name = "Punycode" - s.version = "2.1.1" - s.summary = "A Pure Swift library for encode and decode punycoded strings supporting iOS, macOS, and tvOS." - s.homepage = "https://github.com/gumob/PunycodeSwift" - s.license = { :type => "MIT", :file => "LICENSE" } - s.author = { "gumob" => "hello@gumob.com" } - s.frameworks = 'Foundation' - s.requires_arc = true - s.source = { :git => "https://github.com/gumob/PunycodeSwift.git", :tag => "#{s.version}" } - s.source_files = "Source/*.{swift}" - s.ios.deployment_target = "10.0" - s.osx.deployment_target = "10.12" - s.tvos.deployment_target = "12.0" - s.swift_version = '5.0' + s.name = "Punycode" + s.version = "3.0.0" + s.summary = "A Pure Swift library for encode and decode punycoded strings supporting iOS, macOS, tvOS, watchOS, and visionOS." + s.homepage = "https://github.com/gumob/PunycodeSwift" + s.license = { :type => "MIT", :file => "LICENSE" } + s.author = { "Kojiro Futamura" => "gumob.dev@gmail.com" } + s.frameworks = 'Foundation' + s.requires_arc = true + s.source = { :git => "https://github.com/gumob/PunycodeSwift.git", :tag => "#{s.version}" } + s.source_files = "Source/*.{swift}" + s.osx.deployment_target = "10.13" + s.ios.deployment_target = "12.0" + s.tvos.deployment_target = "12.0" + s.watchos.deployment_target = "4.0" + s.visionos.deployment_target = "1.0" + s.swift_version = '5.0' end diff --git a/Punycode.xcodeproj/project.pbxproj b/Punycode.xcodeproj/project.pbxproj index dc57b0f..c726488 100644 --- a/Punycode.xcodeproj/project.pbxproj +++ b/Punycode.xcodeproj/project.pbxproj @@ -3,394 +3,191 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 56; objects = { /* Begin PBXBuildFile section */ - A77CE44C21A29F90009AFD9B /* Punycode.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77CE44B21A29F90009AFD9B /* Punycode.swift */; }; - A77CE44D21A29F90009AFD9B /* Punycode.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77CE44B21A29F90009AFD9B /* Punycode.swift */; }; - A77CE44E21A29F90009AFD9B /* Punycode.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77CE44B21A29F90009AFD9B /* Punycode.swift */; }; - A7A0ECE7219EB279004FBE05 /* Punycode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7A0ECDD219EB279004FBE05 /* Punycode.framework */; }; - A7A0ED3A219EC0FD004FBE05 /* Punycode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7A0ED14219EB6C8004FBE05 /* Punycode.framework */; }; - A7A0ED65219EC8D1004FBE05 /* Punycode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7A0ED42219EC3E3004FBE05 /* Punycode.framework */; }; - A7A1431A219F008C003FB96A /* PunycodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7A14318219F0075003FB96A /* PunycodeTests.swift */; }; - A7A1431B219F008D003FB96A /* PunycodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7A14318219F0075003FB96A /* PunycodeTests.swift */; }; - A7A1431C219F008D003FB96A /* PunycodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7A14318219F0075003FB96A /* PunycodeTests.swift */; }; - A7A1433D219F011F003FB96A /* Punycode.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A14326219F00CA003FB96A /* Punycode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A7A1433E219F0120003FB96A /* Punycode.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A14326219F00CA003FB96A /* Punycode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A7A1433F219F0121003FB96A /* Punycode.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A14326219F00CA003FB96A /* Punycode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DFABE0ADF9F4B99688DFEAD8 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFABE29101B196631B97D29A /* Extensions.swift */; }; - DFABE100D73A4A4AB92B249C /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFABED31BB1FF40D654368A4 /* Helpers.swift */; }; - DFABE1C490BEEDF8690A61C5 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFABE29101B196631B97D29A /* Extensions.swift */; }; - DFABE363A64EC2A5EF006C31 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFABED31BB1FF40D654368A4 /* Helpers.swift */; }; - DFABE489EBA14C073EDCC269 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFABED31BB1FF40D654368A4 /* Helpers.swift */; }; - DFABE8B806E3049DAA9DD07C /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFABE29101B196631B97D29A /* Extensions.swift */; }; + A745A0A12C7ABB7C005625EF /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A745A09E2C7ABB7C005625EF /* Extensions.swift */; }; + A745A0A22C7ABB7C005625EF /* Punycode.swift in Sources */ = {isa = PBXBuildFile; fileRef = A745A09F2C7ABB7C005625EF /* Punycode.swift */; }; + A745A0A32C7ABB7C005625EF /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = A745A0A02C7ABB7C005625EF /* Helpers.swift */; }; + A75359B82C7ABA7D00564274 /* Punycode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A75359AF2C7ABA7C00564274 /* Punycode.framework */; }; + A75359BD2C7ABA7D00564274 /* PunycodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A75359BC2C7ABA7D00564274 /* PunycodeTests.swift */; }; + A75359BE2C7ABA7D00564274 /* Punycode.h in Headers */ = {isa = PBXBuildFile; fileRef = A75359B22C7ABA7C00564274 /* Punycode.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - A7A0ECE8219EB279004FBE05 /* PBXContainerItemProxy */ = { + A75359B92C7ABA7D00564274 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = A7A0ECD4219EB279004FBE05 /* Project object */; + containerPortal = A75359A62C7ABA7C00564274 /* Project object */; proxyType = 1; - remoteGlobalIDString = A7A0ECDC219EB279004FBE05; + remoteGlobalIDString = A75359AE2C7ABA7C00564274; remoteInfo = Punycode; }; - A7A0ED1E219EB6C9004FBE05 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = A7A0ECD4219EB279004FBE05 /* Project object */; - proxyType = 1; - remoteGlobalIDString = A7A0ED13219EB6C8004FBE05; - remoteInfo = "Punycode-macOS"; - }; - A7A0ED4C219EC3E3004FBE05 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = A7A0ECD4219EB279004FBE05 /* Project object */; - proxyType = 1; - remoteGlobalIDString = A7A0ED41219EC3E3004FBE05; - remoteInfo = "Punycode-tvOS"; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - A77CE44B21A29F90009AFD9B /* Punycode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Punycode.swift; sourceTree = ""; }; - A7A0ECDD219EB279004FBE05 /* Punycode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Punycode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A7A0ECE6219EB279004FBE05 /* Punycode-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Punycode-iOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - A7A0ED14219EB6C8004FBE05 /* Punycode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Punycode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A7A0ED1C219EB6C9004FBE05 /* Punycode-macOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Punycode-macOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - A7A0ED42219EC3E3004FBE05 /* Punycode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Punycode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A7A0ED4A219EC3E3004FBE05 /* Punycode-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Punycode-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - A7A14318219F0075003FB96A /* PunycodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PunycodeTests.swift; sourceTree = ""; }; - A7A14319219F0075003FB96A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A7A14326219F00CA003FB96A /* Punycode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Punycode.h; sourceTree = ""; }; - A7A14327219F00CA003FB96A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DFABE29101B196631B97D29A /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; - DFABED31BB1FF40D654368A4 /* Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Helpers.swift; sourceTree = ""; }; + A745A09E2C7ABB7C005625EF /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; + A745A09F2C7ABB7C005625EF /* Punycode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Punycode.swift; sourceTree = ""; }; + A745A0A02C7ABB7C005625EF /* Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Helpers.swift; sourceTree = ""; }; + A75359AF2C7ABA7C00564274 /* Punycode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Punycode.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A75359B22C7ABA7C00564274 /* Punycode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Punycode.h; sourceTree = ""; }; + A75359B72C7ABA7D00564274 /* PunycodeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PunycodeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + A75359BC2C7ABA7D00564274 /* PunycodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PunycodeTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - A7A0ECDA219EB279004FBE05 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ECE3219EB279004FBE05 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - A7A0ECE7219EB279004FBE05 /* Punycode.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ED11219EB6C8004FBE05 /* Frameworks */ = { + A75359AC2C7ABA7C00564274 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - A7A0ED19219EB6C9004FBE05 /* Frameworks */ = { + A75359B42C7ABA7D00564274 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A7A0ED3A219EC0FD004FBE05 /* Punycode.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ED3F219EC3E3004FBE05 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ED47219EC3E3004FBE05 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - A7A0ED65219EC8D1004FBE05 /* Punycode.framework in Frameworks */, + A75359B82C7ABA7D00564274 /* Punycode.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - A7A0ECD3219EB279004FBE05 = { + A75359A52C7ABA7C00564274 = { isa = PBXGroup; children = ( - A7A1431D219F00CA003FB96A /* Source */, - A7A14317219F0075003FB96A /* Tests */, - A7A0ECDE219EB279004FBE05 /* Products */, + A75359B12C7ABA7C00564274 /* Source */, + A75359BB2C7ABA7D00564274 /* Tests */, + A75359B02C7ABA7C00564274 /* Products */, ); sourceTree = ""; }; - A7A0ECDE219EB279004FBE05 /* Products */ = { + A75359B02C7ABA7C00564274 /* Products */ = { isa = PBXGroup; children = ( - A7A0ECDD219EB279004FBE05 /* Punycode.framework */, - A7A0ECE6219EB279004FBE05 /* Punycode-iOSTests.xctest */, - A7A0ED14219EB6C8004FBE05 /* Punycode.framework */, - A7A0ED1C219EB6C9004FBE05 /* Punycode-macOSTests.xctest */, - A7A0ED42219EC3E3004FBE05 /* Punycode.framework */, - A7A0ED4A219EC3E3004FBE05 /* Punycode-tvOSTests.xctest */, + A75359AF2C7ABA7C00564274 /* Punycode.framework */, + A75359B72C7ABA7D00564274 /* PunycodeTests.xctest */, ); name = Products; sourceTree = ""; }; - A7A14317219F0075003FB96A /* Tests */ = { + A75359B12C7ABA7C00564274 /* Source */ = { isa = PBXGroup; children = ( - A7A14319219F0075003FB96A /* Info.plist */, - A7A14318219F0075003FB96A /* PunycodeTests.swift */, + A75359B22C7ABA7C00564274 /* Punycode.h */, + A745A09F2C7ABB7C005625EF /* Punycode.swift */, + A745A09E2C7ABB7C005625EF /* Extensions.swift */, + A745A0A02C7ABB7C005625EF /* Helpers.swift */, ); - path = Tests; + path = Source; sourceTree = ""; }; - A7A1431D219F00CA003FB96A /* Source */ = { + A75359BB2C7ABA7D00564274 /* Tests */ = { isa = PBXGroup; children = ( - A7A14327219F00CA003FB96A /* Info.plist */, - A7A14326219F00CA003FB96A /* Punycode.h */, - A77CE44B21A29F90009AFD9B /* Punycode.swift */, - DFABE29101B196631B97D29A /* Extensions.swift */, - DFABED31BB1FF40D654368A4 /* Helpers.swift */, + A75359BC2C7ABA7D00564274 /* PunycodeTests.swift */, ); - path = Source; + path = Tests; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - A7A0ECD8219EB279004FBE05 /* Headers */ = { + A75359AA2C7ABA7C00564274 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A7A1433D219F011F003FB96A /* Punycode.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ED0F219EB6C8004FBE05 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - A7A1433E219F0120003FB96A /* Punycode.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ED3D219EC3E3004FBE05 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - A7A1433F219F0121003FB96A /* Punycode.h in Headers */, + A75359BE2C7ABA7D00564274 /* Punycode.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - A7A0ECDC219EB279004FBE05 /* Punycode-iOS */ = { + A75359AE2C7ABA7C00564274 /* Punycode */ = { isa = PBXNativeTarget; - buildConfigurationList = A7A0ECF1219EB279004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-iOS" */; + buildConfigurationList = A75359C12C7ABA7D00564274 /* Build configuration list for PBXNativeTarget "Punycode" */; buildPhases = ( - A7A0ECD8219EB279004FBE05 /* Headers */, - A7A0ECD9219EB279004FBE05 /* Sources */, - A7A0ECDA219EB279004FBE05 /* Frameworks */, - A7A0ECDB219EB279004FBE05 /* Resources */, + A75359AA2C7ABA7C00564274 /* Headers */, + A75359AB2C7ABA7C00564274 /* Sources */, + A75359AC2C7ABA7C00564274 /* Frameworks */, + A75359AD2C7ABA7C00564274 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = "Punycode-iOS"; + name = Punycode; productName = Punycode; - productReference = A7A0ECDD219EB279004FBE05 /* Punycode.framework */; + productReference = A75359AF2C7ABA7C00564274 /* Punycode.framework */; productType = "com.apple.product-type.framework"; }; - A7A0ECE5219EB279004FBE05 /* Punycode-iOSTests */ = { + A75359B62C7ABA7D00564274 /* PunycodeTests */ = { isa = PBXNativeTarget; - buildConfigurationList = A7A0ECF4219EB279004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-iOSTests" */; + buildConfigurationList = A75359C42C7ABA7D00564274 /* Build configuration list for PBXNativeTarget "PunycodeTests" */; buildPhases = ( - A7A0ECE2219EB279004FBE05 /* Sources */, - A7A0ECE3219EB279004FBE05 /* Frameworks */, - A7A0ECE4219EB279004FBE05 /* Resources */, + A75359B32C7ABA7D00564274 /* Sources */, + A75359B42C7ABA7D00564274 /* Frameworks */, + A75359B52C7ABA7D00564274 /* Resources */, ); buildRules = ( ); dependencies = ( - A7A0ECE9219EB279004FBE05 /* PBXTargetDependency */, + A75359BA2C7ABA7D00564274 /* PBXTargetDependency */, ); - name = "Punycode-iOSTests"; + name = PunycodeTests; productName = PunycodeTests; - productReference = A7A0ECE6219EB279004FBE05 /* Punycode-iOSTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - A7A0ED13219EB6C8004FBE05 /* Punycode-macOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = A7A0ED25219EB6C9004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-macOS" */; - buildPhases = ( - A7A0ED0F219EB6C8004FBE05 /* Headers */, - A7A0ED10219EB6C8004FBE05 /* Sources */, - A7A0ED11219EB6C8004FBE05 /* Frameworks */, - A7A0ED12219EB6C8004FBE05 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Punycode-macOS"; - productName = "Punycode-macOS"; - productReference = A7A0ED14219EB6C8004FBE05 /* Punycode.framework */; - productType = "com.apple.product-type.framework"; - }; - A7A0ED1B219EB6C9004FBE05 /* Punycode-macOSTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = A7A0ED28219EB6C9004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-macOSTests" */; - buildPhases = ( - A7A0ED18219EB6C9004FBE05 /* Sources */, - A7A0ED19219EB6C9004FBE05 /* Frameworks */, - A7A0ED1A219EB6C9004FBE05 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - A7A0ED1F219EB6C9004FBE05 /* PBXTargetDependency */, - ); - name = "Punycode-macOSTests"; - productName = "Punycode-macOSTests"; - productReference = A7A0ED1C219EB6C9004FBE05 /* Punycode-macOSTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - A7A0ED41219EC3E3004FBE05 /* Punycode-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = A7A0ED53219EC3E3004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-tvOS" */; - buildPhases = ( - A7A0ED3D219EC3E3004FBE05 /* Headers */, - A7A0ED3E219EC3E3004FBE05 /* Sources */, - A7A0ED3F219EC3E3004FBE05 /* Frameworks */, - A7A0ED40219EC3E3004FBE05 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Punycode-tvOS"; - productName = "Punycode-tvOS"; - productReference = A7A0ED42219EC3E3004FBE05 /* Punycode.framework */; - productType = "com.apple.product-type.framework"; - }; - A7A0ED49219EC3E3004FBE05 /* Punycode-tvOSTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = A7A0ED56219EC3E3004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-tvOSTests" */; - buildPhases = ( - A7A0ED46219EC3E3004FBE05 /* Sources */, - A7A0ED47219EC3E3004FBE05 /* Frameworks */, - A7A0ED48219EC3E3004FBE05 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - A7A0ED4D219EC3E3004FBE05 /* PBXTargetDependency */, - ); - name = "Punycode-tvOSTests"; - productName = "Punycode-tvOSTests"; - productReference = A7A0ED4A219EC3E3004FBE05 /* Punycode-tvOSTests.xctest */; + productReference = A75359B72C7ABA7D00564274 /* PunycodeTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - A7A0ECD4219EB279004FBE05 /* Project object */ = { + A75359A62C7ABA7C00564274 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1010; - LastUpgradeCheck = 1020; - ORGANIZATIONNAME = Gumob; + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1540; + LastUpgradeCheck = 1540; TargetAttributes = { - A7A0ECDC219EB279004FBE05 = { - CreatedOnToolsVersion = 10.1; - LastSwiftMigration = 1020; + A75359AE2C7ABA7C00564274 = { + CreatedOnToolsVersion = 15.4; + LastSwiftMigration = 1540; }; - A7A0ECE5219EB279004FBE05 = { - CreatedOnToolsVersion = 10.1; - LastSwiftMigration = 1020; - }; - A7A0ED13219EB6C8004FBE05 = { - CreatedOnToolsVersion = 10.1; - LastSwiftMigration = 1010; - }; - A7A0ED1B219EB6C9004FBE05 = { - CreatedOnToolsVersion = 10.1; - }; - A7A0ED41219EC3E3004FBE05 = { - CreatedOnToolsVersion = 10.1; - LastSwiftMigration = 1010; - }; - A7A0ED49219EC3E3004FBE05 = { - CreatedOnToolsVersion = 10.1; + A75359B62C7ABA7D00564274 = { + CreatedOnToolsVersion = 15.4; }; }; }; - buildConfigurationList = A7A0ECD7219EB279004FBE05 /* Build configuration list for PBXProject "Punycode" */; - compatibilityVersion = "Xcode 9.3"; + buildConfigurationList = A75359A92C7ABA7C00564274 /* Build configuration list for PBXProject "Punycode" */; + compatibilityVersion = "Xcode 14.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); - mainGroup = A7A0ECD3219EB279004FBE05; - productRefGroup = A7A0ECDE219EB279004FBE05 /* Products */; + mainGroup = A75359A52C7ABA7C00564274; + productRefGroup = A75359B02C7ABA7C00564274 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - A7A0ECDC219EB279004FBE05 /* Punycode-iOS */, - A7A0ECE5219EB279004FBE05 /* Punycode-iOSTests */, - A7A0ED13219EB6C8004FBE05 /* Punycode-macOS */, - A7A0ED1B219EB6C9004FBE05 /* Punycode-macOSTests */, - A7A0ED41219EC3E3004FBE05 /* Punycode-tvOS */, - A7A0ED49219EC3E3004FBE05 /* Punycode-tvOSTests */, + A75359AE2C7ABA7C00564274 /* Punycode */, + A75359B62C7ABA7D00564274 /* PunycodeTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - A7A0ECDB219EB279004FBE05 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ECE4219EB279004FBE05 /* Resources */ = { + A75359AD2C7ABA7C00564274 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - A7A0ED12219EB6C8004FBE05 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ED1A219EB6C9004FBE05 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ED40219EC3E3004FBE05 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ED48219EC3E3004FBE05 /* Resources */ = { + A75359B52C7ABA7D00564274 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,89 +197,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - A7A0ECD9219EB279004FBE05 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DFABE1C490BEEDF8690A61C5 /* Extensions.swift in Sources */, - DFABE363A64EC2A5EF006C31 /* Helpers.swift in Sources */, - A77CE44C21A29F90009AFD9B /* Punycode.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ECE2219EB279004FBE05 /* Sources */ = { + A75359AB2C7ABA7C00564274 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A7A1431A219F008C003FB96A /* PunycodeTests.swift in Sources */, + A745A0A22C7ABB7C005625EF /* Punycode.swift in Sources */, + A745A0A32C7ABB7C005625EF /* Helpers.swift in Sources */, + A745A0A12C7ABB7C005625EF /* Extensions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A7A0ED10219EB6C8004FBE05 /* Sources */ = { + A75359B32C7ABA7D00564274 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DFABE0ADF9F4B99688DFEAD8 /* Extensions.swift in Sources */, - DFABE489EBA14C073EDCC269 /* Helpers.swift in Sources */, - A77CE44D21A29F90009AFD9B /* Punycode.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ED18219EB6C9004FBE05 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A7A1431B219F008D003FB96A /* PunycodeTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ED3E219EC3E3004FBE05 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DFABE8B806E3049DAA9DD07C /* Extensions.swift in Sources */, - DFABE100D73A4A4AB92B249C /* Helpers.swift in Sources */, - A77CE44E21A29F90009AFD9B /* Punycode.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A7A0ED46219EC3E3004FBE05 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A7A1431C219F008D003FB96A /* PunycodeTests.swift in Sources */, + A75359BD2C7ABA7D00564274 /* PunycodeTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - A7A0ECE9219EB279004FBE05 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = A7A0ECDC219EB279004FBE05 /* Punycode-iOS */; - targetProxy = A7A0ECE8219EB279004FBE05 /* PBXContainerItemProxy */; - }; - A7A0ED1F219EB6C9004FBE05 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = A7A0ED13219EB6C8004FBE05 /* Punycode-macOS */; - targetProxy = A7A0ED1E219EB6C9004FBE05 /* PBXContainerItemProxy */; - }; - A7A0ED4D219EC3E3004FBE05 /* PBXTargetDependency */ = { + A75359BA2C7ABA7D00564274 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = A7A0ED41219EC3E3004FBE05 /* Punycode-tvOS */; - targetProxy = A7A0ED4C219EC3E3004FBE05 /* PBXContainerItemProxy */; + target = A75359AE2C7ABA7C00564274 /* Punycode */; + targetProxy = A75359B92C7ABA7D00564274 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - A7A0ECEF219EB279004FBE05 /* Debug */ = { + A75359BF2C7ABA7D00564274 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; @@ -501,19 +252,20 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = ""; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -527,27 +279,30 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MACOSX_DEPLOYMENT_TARGET = 10.12; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TVOS_DEPLOYMENT_TARGET = 12.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; + WATCHOS_DEPLOYMENT_TARGET = 4.0; + XROS_DEPLOYMENT_TARGET = 1.0; }; name = Debug; }; - A7A0ECF0219EB279004FBE05 /* Release */ = { + A75359C02C7ABA7D00564274 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; @@ -566,19 +321,20 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = ""; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; @@ -586,393 +342,188 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MACOSX_DEPLOYMENT_TARGET = 10.12; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 10.13; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; - SDKROOT = iphoneos; SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; + TVOS_DEPLOYMENT_TARGET = 12.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; + WATCHOS_DEPLOYMENT_TARGET = 4.0; + XROS_DEPLOYMENT_TARGET = 1.0; }; name = Release; }; - A7A0ECF2219EB279004FBE05 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.gumob.Punycode; - PRODUCT_NAME = "$(PROJECT_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - A7A0ECF3219EB279004FBE05 /* Release */ = { + A75359C22C7ABA7D00564274 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + BUILD_LIBRARY_FOR_DISTRIBUTION = YES; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist"; + ENABLE_MODULE_VERIFIER = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.gumob.Punycode; - PRODUCT_NAME = "$(PROJECT_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - A7A0ECF5219EB279004FBE05 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.gumob.Punycode-iOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - A7A0ECF6219EB279004FBE05 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.gumob.Punycode-iOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - A7A0ED26219EB6C9004FBE05 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( "@executable_path/../Frameworks", "@loader_path/Frameworks", ); + MACOSX_DEPLOYMENT_TARGET = 10.13; + MARKETING_VERSION = 3.0.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; PRODUCT_BUNDLE_IDENTIFIER = com.gumob.Punycode; - PRODUCT_NAME = "$(PROJECT_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = macosx; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = auto; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_INSTALL_OBJC_HEADER = NO; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,7"; }; name = Debug; }; - A7A0ED27219EB6C9004FBE05 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.gumob.Punycode; - PRODUCT_NAME = "$(PROJECT_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - A7A0ED29219EB6C9004FBE05 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COMBINE_HIDPI_IMAGES = YES; - DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.12; - PRODUCT_BUNDLE_IDENTIFIER = "com.gumob.Punycode-macOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = macosx; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - A7A0ED2A219EB6C9004FBE05 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - COMBINE_HIDPI_IMAGES = YES; - DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - "@loader_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.12; - PRODUCT_BUNDLE_IDENTIFIER = "com.gumob.Punycode-macOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = macosx; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - A7A0ED54219EC3E3004FBE05 /* Debug */ = { + A75359C32C7ABA7D00564274 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + BUILD_LIBRARY_FOR_DISTRIBUTION = YES; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist"; + ENABLE_MODULE_VERIFIER = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.gumob.Punycode; - PRODUCT_NAME = "$(PROJECT_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 11.0; - }; - name = Debug; - }; - A7A0ED55219EC3E3004FBE05 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = ""; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "@executable_path/../Frameworks", "@loader_path/Frameworks", ); + MACOSX_DEPLOYMENT_TARGET = 10.13; + MARKETING_VERSION = 3.0.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; PRODUCT_BUNDLE_IDENTIFIER = com.gumob.Punycode; - PRODUCT_NAME = "$(PROJECT_NAME:c99extidentifier)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = auto; SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_INSTALL_OBJC_HEADER = NO; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 11.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,7"; }; name = Release; }; - A7A0ED57219EC3E3004FBE05 /* Debug */ = { + A75359C52C7ABA7D00564274 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.gumob.Punycode-tvOSTests"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MARKETING_VERSION = 3.0.0; + PRODUCT_BUNDLE_IDENTIFIER = com.gumob.PunycodeTests; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 11.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,7"; }; name = Debug; }; - A7A0ED58219EC3E3004FBE05 /* Release */ = { + A75359C62C7ABA7D00564274 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.gumob.Punycode-tvOSTests"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MACOSX_DEPLOYMENT_TARGET = 10.13; + MARKETING_VERSION = 3.0.0; + PRODUCT_BUNDLE_IDENTIFIER = com.gumob.PunycodeTests; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = appletvos; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator"; + SUPPORTS_MACCATALYST = YES; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; + SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 11.0; + TARGETED_DEVICE_FAMILY = "1,2,3,4,7"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - A7A0ECD7219EB279004FBE05 /* Build configuration list for PBXProject "Punycode" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A7A0ECEF219EB279004FBE05 /* Debug */, - A7A0ECF0219EB279004FBE05 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - A7A0ECF1219EB279004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A7A0ECF2219EB279004FBE05 /* Debug */, - A7A0ECF3219EB279004FBE05 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - A7A0ECF4219EB279004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-iOSTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A7A0ECF5219EB279004FBE05 /* Debug */, - A7A0ECF6219EB279004FBE05 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - A7A0ED25219EB6C9004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-macOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A7A0ED26219EB6C9004FBE05 /* Debug */, - A7A0ED27219EB6C9004FBE05 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - A7A0ED28219EB6C9004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-macOSTests" */ = { + A75359A92C7ABA7C00564274 /* Build configuration list for PBXProject "Punycode" */ = { isa = XCConfigurationList; buildConfigurations = ( - A7A0ED29219EB6C9004FBE05 /* Debug */, - A7A0ED2A219EB6C9004FBE05 /* Release */, + A75359BF2C7ABA7D00564274 /* Debug */, + A75359C02C7ABA7D00564274 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A7A0ED53219EC3E3004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-tvOS" */ = { + A75359C12C7ABA7D00564274 /* Build configuration list for PBXNativeTarget "Punycode" */ = { isa = XCConfigurationList; buildConfigurations = ( - A7A0ED54219EC3E3004FBE05 /* Debug */, - A7A0ED55219EC3E3004FBE05 /* Release */, + A75359C22C7ABA7D00564274 /* Debug */, + A75359C32C7ABA7D00564274 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A7A0ED56219EC3E3004FBE05 /* Build configuration list for PBXNativeTarget "Punycode-tvOSTests" */ = { + A75359C42C7ABA7D00564274 /* Build configuration list for PBXNativeTarget "PunycodeTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - A7A0ED57219EC3E3004FBE05 /* Debug */, - A7A0ED58219EC3E3004FBE05 /* Release */, + A75359C52C7ABA7D00564274 /* Debug */, + A75359C62C7ABA7D00564274 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = A7A0ECD4219EB279004FBE05 /* Project object */; + rootObject = A75359A62C7ABA7C00564274 /* Project object */; } diff --git a/Punycode.xcodeproj/xcshareddata/xcschemes/Punycode-macOS.xcscheme b/Punycode.xcodeproj/xcshareddata/xcschemes/Punycode-macOS.xcscheme deleted file mode 100644 index 79f1c3a..0000000 --- a/Punycode.xcodeproj/xcshareddata/xcschemes/Punycode-macOS.xcscheme +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Punycode.xcodeproj/xcshareddata/xcschemes/Punycode-tvOS.xcscheme b/Punycode.xcodeproj/xcshareddata/xcschemes/Punycode-tvOS.xcscheme deleted file mode 100644 index f397266..0000000 --- a/Punycode.xcodeproj/xcshareddata/xcschemes/Punycode-tvOS.xcscheme +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Punycode.xcodeproj/xcshareddata/xcschemes/Punycode-iOS.xcscheme b/Punycode.xcodeproj/xcshareddata/xcschemes/Punycode.xcscheme similarity index 54% rename from Punycode.xcodeproj/xcshareddata/xcschemes/Punycode-iOS.xcscheme rename to Punycode.xcodeproj/xcshareddata/xcschemes/Punycode.xcscheme index cd4d8e4..bc16f71 100644 --- a/Punycode.xcodeproj/xcshareddata/xcschemes/Punycode-iOS.xcscheme +++ b/Punycode.xcodeproj/xcshareddata/xcschemes/Punycode.xcscheme @@ -1,10 +1,11 @@ + LastUpgradeVersion = "1540" + version = "1.7"> + buildImplicitDependencies = "YES" + buildArchitectures = "Automatic"> @@ -26,41 +27,21 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - codeCoverageEnabled = "YES" - onlyGenerateCoverageForSpecifiedTargets = "YES" - shouldUseLaunchSchemeArgsEnv = "YES"> - - - - + shouldUseLaunchSchemeArgsEnv = "YES" + shouldAutocreateTestPlan = "YES"> + skipped = "NO" + parallelizable = "YES"> - - - - - - - - - - - - diff --git a/README.md b/README.md index 2f1fc99..a91b702 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,14 @@ +[![Swift Package Manager compatible](https://img.shields.io/badge/Swift_Package_Manager-compatible-orange)](https://github.com/gumob/PunycodeSwift) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg)](https://github.com/gumob/PunycodeSwift) -[![Version](http://img.shields.io/cocoapods/v/Punycode.svg)](http://cocoadocs.org/docsets/Punycode) -[![Platform](http://img.shields.io/cocoapods/p/Punycode.svg)](http://cocoadocs.org/docsets/Punycode) -[![Build Status](https://travis-ci.com/gumob/PunycodeSwift.svg?branch=master)](https://travis-ci.com/gumob/PunycodeSwift) +[![Cocoapods Version](https://img.shields.io/cocoapods/v/Punycode.svg)](https://cocoapods.org/pods/Punycode) +[![Cocoapods Platform](https://img.shields.io/cocoapods/p/Punycode.svg)](https://cocoadocs.org/docsets/Punycode) +[![Build](https://github.com/gumob/PunycodeSwift/actions/workflows/main.yml/badge.svg)](https://github.com/gumob/PunycodeSwift/actions/workflows/main.yml) [![codecov](https://codecov.io/gh/gumob/PunycodeSwift/branch/master/graph/badge.svg)](https://codecov.io/gh/gumob/PunycodeSwift) ![Language](https://img.shields.io/badge/Language-Swift%205.0-orange.svg) -![Language](https://img.shields.io/badge/Language-Swift%204.2-orange.svg) ![Packagist](https://img.shields.io/packagist/l/doctrine/orm.svg) # PunycodeSwift + PunycodeSwift is a pure Swift library to allows you to encode and decode `punycoded` strings by using String extension. ## What is Punycode? @@ -15,24 +16,33 @@ Punycode is a representation of Unicode with the limited ASCII character subset used for Internet host names. Using Punycode, host names containing Unicode characters are transcoded to a subset of ASCII consisting of letters, digits, and hyphen, which is called the Letter-Digit-Hyphen (LDH) subset. For example, München (German name for Munich) is encoded as Mnchen-3ya. [(Wikipedia)](https://en.wikipedia.org/wiki/Punycode) ## Requirements +- macOS 10.13 or later +- iOS 12.0 or later +- tvOS 12.0 or later +- watchOS 4.0 or later +- visionOS 1.0 or later +- Swift 5.0 or later -- iOS 9.3 or later -- macOS 10.12 or later -- tvOS 10.2 or later -- Swift 4.2 or later +## Installation - +### Swift Package Manager +Add the following to your `Package.swift` file. -## Installation +```swift +dependencies: [ + .package(url: "https://github.com/gumob/PunycodeSwift.git", .upToNextMajor(from: "3.0.0")) +] +``` ### Carthage Add the following to your `Cartfile` and follow [these instructions](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application). -``` +```Certfile github "gumob/PunycodeSwift" # Latest (Swift 5.0) -github "gumob/PunycodeSwift" ~> 2.0 # Swift 5.0 +github "gumob/PunycodeSwift" ~> 3.0 # Swift 5.0 +github "gumob/PunycodeSwift" ~> 2.2 # Swift 5.0 github "gumob/PunycodeSwift" ~> 1.0 # Swift 4.2 ``` @@ -41,11 +51,9 @@ github "gumob/PunycodeSwift" ~> 1.0 # Swift 4.2 To integrate Punycode into your project, add the following to your `Podfile`. ```ruby -platform :ios, '9.3' -use_frameworks! - pod 'Punycode' # Latest (Swift 5.0) -pod 'Punycode', '~> 2.0' # Swift 5.0 +pod 'Punycode', '~> 3.0' # Swift 5.0 +pod 'Punycode', '~> 2.2' # Swift 5.0 pod 'Punycode', '~> 1.0' # Swift 4.2 ``` @@ -53,7 +61,7 @@ pod 'Punycode', '~> 1.0' # Swift 4.2 Encode and decode IDNA: -``` +```swift import Punycode var sushi: String = "寿司" @@ -67,7 +75,7 @@ print(sushi) // "寿司" Encode and decode Punycode directly: -``` +```swift import Punycode var sushi: String = "寿司" diff --git a/Requirements.txt b/Requirements.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Source/Extensions.swift b/Source/Extensions.swift index 83bd282..ce69812 100644 --- a/Source/Extensions.swift +++ b/Source/Extensions.swift @@ -1,6 +1,5 @@ // -// Created by kojirof on 2018-11-19. -// Copyright (c) 2018 Gumob. All rights reserved. +// Created by Kojiro Futamura on 2018-11-19. // import Foundation @@ -11,28 +10,28 @@ public extension Substring { /// /// - Returns: Punycode encoded string or nil if the string can't be encoded var punycodeEncoded: String? { - return Punycode().encodePunycode(self) + return Puny().encodePunycode(self) } /// Returns new string decoded from punycode representation (RFC 3492) /// /// - Returns: Original string or nil if the string doesn't contain correct encoding var punycodeDecoded: String? { - return Punycode().decodePunycode(self) + return Puny().decodePunycode(self) } /// Returns new string containing IDNA-encoded hostname /// /// - Returns: IDNA encoded hostname or nil if the string can't be encoded var idnaEncoded: String? { - return Punycode().encodeIDNA(self) + return Puny().encodeIDNA(self) } /// Returns new string containing hostname decoded from IDNA representation /// /// - Returns: Original hostname or nil if the string doesn't contain correct encoding var idnaDecoded: String? { - return Punycode().decodedIDNA(self) + return Puny().decodedIDNA(self) } } diff --git a/Source/Helpers.swift b/Source/Helpers.swift index 96b8984..9f45a92 100644 --- a/Source/Helpers.swift +++ b/Source/Helpers.swift @@ -1,6 +1,5 @@ // -// Created by kojirof on 2018-11-19. -// Copyright (c) 2018 Gumob. All rights reserved. +// Created by Kojiro Futamura on 2018-11-19. // import Foundation diff --git a/Source/Info.plist b/Source/Info.plist deleted file mode 100644 index 5335a92..0000000 --- a/Source/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 2.1.1 - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - - diff --git a/Source/Punycode.h b/Source/Punycode.h index c92b157..68e87d8 100644 --- a/Source/Punycode.h +++ b/Source/Punycode.h @@ -2,8 +2,7 @@ // Punycode.h // Punycode // -// Created by kojirof on 2018/11/16. -// Copyright © 2018 Gumob. All rights reserved. +// Created by Kojiro Futamura on 2024/08/25. // #import diff --git a/Source/Punycode.swift b/Source/Punycode.swift index 0b06bc4..3c383e9 100755 --- a/Source/Punycode.swift +++ b/Source/Punycode.swift @@ -1,11 +1,10 @@ // -// Created by kojirof on 2018-11-19. -// Copyright (c) 2018 Gumob. All rights reserved. +// Created by Kojiro Futamura on 2018-11-19. // import Foundation -public class Punycode { +public class Puny { /// Punycode RFC 3492 /// See https://www.ietf.org/rfc/rfc3492.txt for standard details diff --git a/Tests/Info.plist b/Tests/Info.plist deleted file mode 100644 index 477c248..0000000 --- a/Tests/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 2.1.1 - CFBundleVersion - 1 - - diff --git a/Tests/PunycodeTests.swift b/Tests/PunycodeTests.swift index 5bca5ca..4e8c474 100755 --- a/Tests/PunycodeTests.swift +++ b/Tests/PunycodeTests.swift @@ -1,3 +1,10 @@ +// +// PunycodeTests.swift +// PunycodeTests +// +// Created by Kojiro Futamura on 2024/08/25. +// + import XCTest @testable import Punycode diff --git a/bundle-install.sh b/bundle-install.sh deleted file mode 100755 index c9143e8..0000000 --- a/bundle-install.sh +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/local/bin/bash - -executeCommand () { - local cmd=$1 - echo "$ $cmd" - eval $cmd - echo -} - -function confirmYesOrNo { - MSG=$1 - while : - do - echo -en "${MSG} [Yes/No]: " - read line - case $line in - [yY][eE][sS]) return 1;; - [nN][oO]) return 0 ;; - esac - done -} - -function confirmCommand () { - msg=$1 - id_start=$2 - id_end=$3 - re="^[0-9]+$" - while : - do - echo -en "${msg}" - read input - if [[ ${input} =~ $re ]] ; then - if ((${id_start} <= ${input})) && ((${input} <= ${id_end})); then - return ${input} - fi - else - echo -e "\nPlease input valid id." - fi - done -} - -function split () { - local str=$1 - local delim=$2 - local -a array=() - IFS=$delim read -ra arr <<< $str - echo $arr - # echo ${arr[@]} -} - - -function boolean () { - case $1 in - true) echo true ;; - *) echo false ;; - esac -} - -######################## -# Variable -######################## - -command_items=( -"install:bundle install --clean --path .bundle:Install gems" -"update:bundle update:Update gems" -) -command_items_id_start=0 -command_items_id_end=$((${#command_items[@]} - 1)) - -######################## -# Main -######################## - -# Print commands -echo -echo "Select fastlane command" -echo - -for i in "${!command_items[@]}"; do - command_item=${command_items[$i]} - - IFS=':' read -ra ret <<< "$command_item" - - id=${ret[0]} - command=${ret[1]} - description=${ret[2]} - - printf "%4s $ %-50s %-60s" "[${i}]" "${command}" "${description}" - echo -done - -# Print input dialog -msg="\nInput id to execute. [${command_items_id_start}-${command_items_id_end}]: " -confirmCommand "${msg}" ${command_items_id_start} ${command_items_id_end} -index_to_execute=$? - -selected_command_item=${command_items[$index_to_execute]} -IFS=':' read -ra selected_command_item <<< "$selected_command_item" -selected_command_id=${selected_command_item[0]} -selected_command=${selected_command_item[1]} - -# Execute command -echo -executeCommand "${selected_command}" - -echo -echo "All done." -echo diff --git a/fastlane.sh b/fastlane.sh deleted file mode 100755 index 62d2a79..0000000 --- a/fastlane.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -executeCommand () { - cmd=$1 - echo - echo "$ $cmd" - echo - eval $cmd - echo -} - -executeCommand "bundle exec fastlane" diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 6f89715..a70ec7e 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -13,147 +13,237 @@ ENV["EXPANDED_CODE_SIGN_IDENTITY"] = "" ENV["EXPANDED_CODE_SIGN_IDENTITY_NAME"] = "" ENV["EXPANDED_PROVISIONING_PROFILE"] = "" -default_xcodeproj = ENV["DEFAULT_XCODEPROJ"] -default_podspec = ENV["DEFAULT_PODSPEC"] - -scheme_iOS = ENV["SCHEME_IOS"] -scheme_macOS = ENV["SCHEME_MACOS"] -scheme_tvOS = ENV["SCHEME_TVOS"] - -scheme_iOSTests = ENV["SCHEME_IOS_TEST"] -scheme_macOSTests = ENV["SCHEME_MACOS_TEST"] -scheme_tvOSTests = ENV["SCHEME_TVOS_TEST"] - -framework_info_plist = "./Source/Info.plist" -test_info_plist = "./Tests/Info.plist" +xcodeproj_file="Punycode.xcodeproj" +podspec_file="Punycode.podspec" +scheme = "Punycode" + +desc "Run all jobs" +lane :run_all do + tests + build_spm + build_carthage + lint_cocoapods +end -platform :ios do - desc "Prebuild" - lane :prebuild do - tests - build_carthage - lint_cocoapods +########################################## +# Versioning +########################################## + +desc "Set version number" +lane :set_version do + current_app_version = get_version_number_from_xcodeproj(xcodeproj: xcodeproj_file) + new_app_version = prompt( + text: "Please enter version number (Current: #{current_app_version}): ", + ci_input: current_app_version + ) + regexp = Regexp.new("[0-9]+\.[0-9]+\.[0-9]+") + matched = regexp.match(new_app_version) + if matched then + # Set version number to project + increment_version_number_in_xcodeproj(version_number: new_app_version) + # Set version number to podspec + version_bump_podspec(path: podspec_file, version_number: new_app_version) + UI.message("Changed version from #{current_app_version} to #{new_app_version} ") + else + UI.error("Invalid version number. #{new_app_version}") end +end - ########################################## - # Versioning - ########################################## - - desc "Set version number" - lane :set_version do - current_app_version = get_info_plist_value(path: framework_info_plist, key: 'CFBundleShortVersionString') - new_app_version = prompt( - text: "Please enter version number (Current: #{current_app_version}): ", - ci_input: current_app_version - ) - regexp = Regexp.new("[0-9]+\.[0-9]+\.[0-9]+") - matched = regexp.match(new_app_version) - if matched then - set_info_plist_value(path: framework_info_plist, key: 'CFBundleShortVersionString', value: new_app_version) - set_info_plist_value(path: test_info_plist, key: 'CFBundleShortVersionString', value: new_app_version) - version_bump_podspec(path: default_podspec, version_number: new_app_version) - UI.message("Changed version from #{current_app_version} to #{new_app_version} ") - else - UI.error("Invalid version number. #{new_app_version}") - end +desc "Bump version number" +lane :bump_version do + bump_type = UI.select("Select version position to be upgraded: ", ["patch", "minor", "major"]) + current_app_version = get_version_number_from_xcodeproj(xcodeproj: xcodeproj_file) + current_app_versions = current_app_version.split(".") + current_app_version_patch = current_app_versions[2].to_i + current_app_version_minor = current_app_versions[1].to_i + current_app_version_major = current_app_versions[0].to_i + UI.message(current_app_versions) + if bump_type == "patch" then + current_app_version_patch += 1 + elsif bump_type == "minor" then + current_app_version_patch = 0 + current_app_version_minor += 1 + elsif bump_type == "major" then + current_app_version_patch = 0 + current_app_version_minor = 0 + current_app_version_major += 1 end + new_app_version = [current_app_version_major, current_app_version_minor, current_app_version_patch].join(".") + # Set version number to project + increment_version_number_in_xcodeproj(version_number: new_app_version) + # Set version number to podspec + version_bump_podspec(path: podspec_file, version_number: new_app_version) + UI.message("Changed version from #{current_app_version} to #{new_app_version} ") +end - desc "Bump version number" - lane :bump_version do - bump_type = UI.select("Select version position to be upgraded: ", ["patch", "minor", "major"]) - current_app_version = get_info_plist_value(path: framework_info_plist, key: 'CFBundleShortVersionString') - current_app_versions = current_app_version.split(".") - current_app_version_patch = current_app_versions[2].to_i - current_app_version_minor = current_app_versions[1].to_i - current_app_version_major = current_app_versions[0].to_i - UI.message(current_app_versions) - if bump_type == "patch" then - current_app_version_patch += 1 - elsif bump_type == "minor" then - current_app_version_patch = 0 - current_app_version_minor += 1 - elsif bump_type == "major" then - current_app_version_patch = 0 - current_app_version_minor = 0 - current_app_version_major += 1 - end - new_app_version = [current_app_version_major, current_app_version_minor, current_app_version_patch].join(".") - set_info_plist_value(path: framework_info_plist, key: 'CFBundleShortVersionString', value: new_app_version) - set_info_plist_value(path: test_info_plist, key: 'CFBundleShortVersionString', value: new_app_version) - version_bump_podspec(path: default_podspec, version_number: new_app_version) - UI.message("Changed version from #{current_app_version_major} to #{new_app_version} ") - end +########################################## +# Test +########################################## + +desc "Run all tests" +lane :tests do + xcclean + + desc "Run macOS Tests" + run_tests( + destination: "platform=macOS", + scheme: scheme, + force_quit_simulator: true, + reset_simulator: true, + prelaunch_simulator: false, + code_coverage: true, + open_report: false, + output_files: "report-macos.html,report-macos.junit" + ) + slather( + scheme: scheme, + proj: xcodeproj_file, + output_directory: "./fastlane/reports/macOS", + html: true, + show: false + ) + + desc "Run iOS Tests" + run_tests( + destination: "platform=iOS Simulator,name=iPhone 15 Pro", + scheme: scheme, + force_quit_simulator: true, + reset_simulator: true, + prelaunch_simulator: false, + code_coverage: true, + open_report: false, + output_files: "report-ios.html,report-ios.junit" + ) + slather( + scheme: scheme, + proj: xcodeproj_file, + output_directory: "./fastlane/reports/iOS", + html: true, + show: false + ) + + desc "Run tvOS Tests" + run_tests( + destination: "platform=tvOS Simulator,name=Apple TV 4K (3rd generation)", + scheme: scheme, + force_quit_simulator: true, + reset_simulator: true, + prelaunch_simulator: false, + code_coverage: true, + open_report: false, + output_files: "report-tvos.html,report-tvos.junit" + ) + slather( + scheme: scheme, + proj: xcodeproj_file, + output_directory: "./fastlane/reports/tvOS", + html: true, + show: false + ) + + desc "Run watchOS Tests" + run_tests( + destination: "platform=watchOS Simulator,name=Apple Watch Series 9 (45mm)", + scheme: scheme, + force_quit_simulator: true, + reset_simulator: true, + prelaunch_simulator: false, + code_coverage: true, + open_report: false, + output_files: "report-watchos.html,report-watchos.junit" + ) + slather( + scheme: scheme, + proj: xcodeproj_file, + output_directory: "./fastlane/reports/watchOS", + html: true, + show: false + ) + + desc "Run visionOS Tests" + run_tests( + destination: "platform=visionOS Simulator,name=Apple Vision Pro", + scheme: scheme, + force_quit_simulator: true, + reset_simulator: true, + prelaunch_simulator: false, + code_coverage: true, + open_report: false, + output_files: "report-visionos.html,report-visionos.junit" + ) + slather( + scheme: scheme, + proj: xcodeproj_file, + output_directory: "./fastlane/reports/visionOS", + html: true, + show: false + ) - ########################################## - # Test - ########################################## - - desc "Run Tests" - lane :tests do - xcclean - run_tests( - scheme: scheme_iOS, - devices: ["iPhone X"], -# clean: true, - code_coverage: true - ) -# slather( -# scheme: scheme_iOS, -# proj: default_xcodeproj, -# output_directory: "./reports/iOS", -# html: true, -# show: true -# ) - run_tests( - scheme: scheme_macOS, - destination: "platform=macOS", -# clean: true, - code_coverage: true - ) -# slather( -# scheme: scheme_macOS, -# proj: default_xcodeproj, -# output_directory: "./reports/macOS", -# html: true, -# show: true -# ) - run_tests( - scheme: scheme_tvOS, - devices: ["Apple TV"], -# clean: true, - code_coverage: true - ) -# slather( -# scheme: scheme_tvOS, -# proj: default_xcodeproj, -# output_directory: "./reports/tvOS", -# html: true, -# show: true -# ) - end +end - ########################################## - # Package Manager - ########################################## - - desc "Build Carthage" - lane :build_carthage do |options| - carthage( - command: "build", - verbose: true, - no_skip_current: true - ) - end +########################################## +# Package Manager +########################################## + +desc "Lint Swift Package Manager" +lane :build_spm do |options| + spm( + command: "build", + parallel: true + ) + spm( + command: "test", + parallel: true + ) +end - desc "Lint Cocoapods" - lane :lint_cocoapods do |options| - pod_lib_lint(verbose: true) - end +desc "Build Carthage" +lane :build_carthage do |options| + carthage( + command: "build", + verbose: false, + platform: "Mac", + # use_xcframeworks: true, + no_skip_current: true + ) + carthage( + command: "build", + verbose: false, + platform: "iOS", + use_xcframeworks: true, + no_skip_current: true + ) + carthage( + command: "build", + verbose: false, + platform: "tvOS", + use_xcframeworks: true, + no_skip_current: true + ) + carthage( + command: "build", + verbose: false, + platform: "watchOS", + use_xcframeworks: true, + no_skip_current: true + ) + # carthage( + # command: "build", + # verbose: false, + # platform: "visionOS", + # use_xcframeworks: true, + # no_skip_current: true + # ) +end - desc "Push Cocoapods" - lane :push_cocoapods do |options| - pod_lib_lint(verbose: true) - pod_push(path: default_podspec) - end +desc "Lint Cocoapods" +lane :lint_cocoapods do |options| + pod_lib_lint(verbose: true) +end + +desc "Push Cocoapods" +lane :push_cocoapods do |options| + pod_lib_lint(verbose: true) + pod_push(path: podspec_file) end diff --git a/fastlane/Pluginfile b/fastlane/Pluginfile new file mode 100644 index 0000000..87578f8 --- /dev/null +++ b/fastlane/Pluginfile @@ -0,0 +1,5 @@ +# Autogenerated by fastlane +# +# Ensure this file is checked in to source control! + +gem 'fastlane-plugin-versioning' diff --git a/fastlane/README.md b/fastlane/README.md index 64f0f72..186cf87 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -1,59 +1,70 @@ fastlane documentation -================ +---- + # Installation Make sure you have the latest version of the Xcode command line tools installed: -``` +```sh xcode-select --install ``` -Install _fastlane_ using -``` -[sudo] gem install fastlane -NV -``` -or alternatively using `brew cask install fastlane` +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) # Available Actions -## iOS -### ios prebuild -``` -fastlane ios prebuild -``` -Prebuild -### ios set_version -``` -fastlane ios set_version -``` -Set version number -### ios bump_version -``` -fastlane ios bump_version -``` -Bump version number -### ios tests + +### Run all jobs + +```sh +bundle exec fastlane run_all ``` -fastlane ios tests + +### Set version number + +```sh +bundle exec fastlane set_version ``` -Run Tests -### ios build_carthage + +### Bump version number + +```sh +bundle exec fastlane bump_version ``` -fastlane ios build_carthage + +### Run all tests + +```sh +bundle exec fastlane tests ``` -Build Carthage -### ios lint_cocoapods + +### Build SPM + +```sh +bundle exec fastlane build_spm ``` -fastlane ios lint_cocoapods + +### Build Carthage + +```sh +bundle exec fastlane build_carthage ``` -Lint Cocoapods -### ios push_cocoapods + +### Lint Cocoapods + +```sh +bundle exec fastlane lint_cocoapods ``` -fastlane ios push_cocoapods + +### Push Cocoapods + +```sh +bundle exec fastlane push_cocoapods ``` -Push Cocoapods ---- -This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run. -More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). -The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/install-swiftlint.sh b/install-swiftlint.sh deleted file mode 100755 index 8faac41..0000000 --- a/install-swiftlint.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# Installs the SwiftLint package. -# Tries to get the precompiled .pkg file from Github, but if that -# fails just recompiles from source. - -set -e - -SWIFTLINT_PKG_PATH="/tmp/SwiftLint.pkg" -SWIFTLINT_PKG_URL="https://github.com/realm/SwiftLint/releases/download/0.39.2/SwiftLint.pkg" - -wget --output-document=${SWIFTLINT_PKG_PATH} ${SWIFTLINT_PKG_URL} - -if [[ -f ${SWIFTLINT_PKG_PATH} ]]; then - echo "SwiftLint package exists. Installing it..." - sudo installer -pkg ${SWIFTLINT_PKG_PATH} -target / -else - echo "SwiftLint package doesn't exist. Compiling from source..." && - git clone https://github.com/realm/SwiftLint.git /tmp/SwiftLint && - cd /tmp/SwiftLint && - git submodule update --init --recursive && - sudo make install -fi diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..f9036d7 --- /dev/null +++ b/run.sh @@ -0,0 +1,83 @@ +#!/bin/zsh + +# Check if the 'fzf' command is available in the system +if ! command -v fzf &> /dev/null; then + tput setaf 1; echo "fzf is not installed."; tput sgr0; + exit 1; +fi + +local option_list=( + "fastlane run_all" + "fastlane tests" + "fastlane build_spm" + "fastlane build_carthage" + "fastlane lint_cocoapods" + "fastlane push_cocoapods" + "fastlane set_version" + "fastlane bump_version" + " " + "Xcode - Initialize project" + "Xcode - Clean all build cache" + # " " + # "Carthage - Update all platforms" + # "Cocoapods - Clean all cache" + # "Public Suffix List - Download latest data" +) + +local fastlane_command() { + bundle exec $1 +} + +local xcode_clean() { + xcodebuild clean || \ + xcodebuild -alltargets clean || \ + xcrun --kill-cache || \ + xcrun simctl erase all || \ + rm -rf ~/Library/Developer/Xcode/DerivedData/; +} +local xcode_init() { + bundle_init; + xcode_clean; + # rm -rf ./Carthage/*; + # carthage_update; + # psl_download; +} + +local cocoapods_clean() { + pod cache clean --all; +} + +local psl_download() { + python update-psl.py; +} + +local carthage_update() { + carthage update --platform macos; + carthage update --platform ios; + carthage update --platform tvos; + carthage update --platform watchos; + carthage update --platform visionos; +} + +local bundle_init() { + rm -rf .bundle; + rm -rf Gemfile.lock; + gem install bundler; + bundle install; + bundle update; + bundle exec fastlane add_plugin versioning; +} + +local selected_option=$(printf "%s\n" "${option_list[@]}" | fzf --ansi --prompt="Select a job to execute > ") + +case "$selected_option" in + fastlane*) fastlane_command $selected_option;; + "Xcode - Initialize project") xcode_init;; + "Xcode - Clean all build cache") xcode_clean;; + "Cocoapods - Clean all cache") cocoapods_clean;; + "Carthage - Update all platforms") carthage_update;; + "Public Suffix List - Download latest data") psl_download;; + *) echo "Invalid option $selected_option" && exit 1;; +esac + +exit 0; \ No newline at end of file