version: 'BSIPA-{branch}-{build}'

environment:
  bsipa_version: '4.0.0-beta.1'
  gh_token:
    secure: E42gl/yepETuoLSwbJZ1GmEIPK6cCJu6zkd59NA21XiICtEV6COOLW7aehi1tcVU

  do_deploy: true
  matrix:
    - BUILD_DOC: 'no'
    - BUILD_DOC: 'yes'

pull_requests:
  do_not_increment_build_number: true

install:
  - git submodule update --init --recursive
  - nuget restore
  - ps: |
        if (-Not $env:APPVEYOR_PULL_REQUEST_TITLE -And $env:BUILD_DOC -Eq 'yes')
        {
            #git checkout $env:APPVEYOR_REPO_BRANCH -q
            choco install docfx -y
        }

image: Visual Studio 2019

configuration: Release
platform: 
 - x64-Net4
 - x86-Net4
 - x64-Net3
 - x86-Net3
  
artifacts: # When Net3 is added, this will need to be moved to the for block to only run for Net4 builds
  - path: BSIPA-ModList/bin/Release
    name: ModList
  - path: BSIPA-Meta/bin/$(platform)/$(configuration) 
    name: BSIPA-$(platform)

matrix:
  exclude:
    # Don't exclude Release_Net4|x64
    - BUILD_DOC: 'yes' # Add one of these for most configuration sets, so we don't dupe
      platform: x86-Net4
    - BUILD_DOC: 'yes' # Add one of these for most configuration sets, so we don't dupe
      platform: x64-Net3
    - BUILD_DOC: 'yes' # Add one of these for most configuration sets, so we don't dupe
      platform: x86-Net3

before_build:
- ps: |
      echo $env:Configuration $env:Platform $env:BuildingInsideVisualStudio
      
for:
-
  matrix:
    except:
    - BUILD_DOC: 'yes'

  skip_tags: true
- 
  matrix:
    except:
    - BUILD_DOC: 'no'

  artifacts:
  environment:
    do_deploy: false
  skip_tags: false
  build_script:
  - ps: |
        if ($env:APPVEYOR_REPO_BRANCH -eq 'master')
        {
            cd docs
            
            function Git-Do {
                git config --global core.autocrlf true
                git config --global credential.helper store
                Add-Content "$HOME\.git-credentials" "https://$($env:gh_token):x-oauth-basic@github.com`n"
                git config --global user.email $env:APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL
                git config --global user.name $env:APPVEYOR_REPO_COMMIT_AUTHOR
                git clone -q "https://github.com/beat-saber-modding-group/BeatSaber-IPA-Reloaded.git" -b gh-pages origin_site
            
                if (-Not (Test-Path origin_site/tags))
                { New-Item -ItemType directory -Path origin_site/tags }
            }
            
            function Do-DocFX
            {
                Add-Content link_branch.json "{`"_gitContribute`":{`"sourceBranch`":`"$env:APPVEYOR_REPO_COMMIT`",`"apiSpecFolder`":`"docs/override`"}}"
                #& docfx metadata
                #& docfx build --globalMetadataFiles link_branch.json @Args
                #if ($lastexitcode -ne 0){
                #    throw [System.Exception] "docfx build failed with exit code $lastexitcode."
                #}
                powershell .\build.ps1
                if ($lastexitcode -ne 0){
                    throw [System.Exception] "docfx build failed with exit code $lastexitcode."
                }
            }
            
            if ($env:APPVEYOR_REPO_TAG -eq "true")
            { # Copy current site into tags
                & Do-DocFX
                
                & Git-Do
                
                cd origin_site # make things a bit easier
                
                $tagPath = "tags/$env:APPVEYOR_REPO_TAG_NAME"
                Move-Item ../_site $tagPath
                
                git add -A 2>&1
                git commit -q -a -m "Saved tag $env:APPVEYOR_REPO_TAG_NAME" 2>&1
            }
            elseif (-Not $env:APPVEYOR_PULL_REQUEST_TITLE)
            { # Generate docs
                & Do-DocFX 
                
                & Git-Do
                
                Move-Item origin_site/.git _site
                Move-Item origin_site/tags _site
                
                CD _site
                git add -A 2>&1
                git commit -q -a -m "$env:APPVEYOR_REPO_COMMIT_MESSAGE -- Generated Docs" 2>&1
            }
            
            git push -q origin gh-pages 2>&1 
        }

branches:
  except:
    - gh-pages

cache:
  - '%LocalAppData%\NuGet\v3-cache' # NuGet v3

build:
  verbosity: normal
  project: BSIPA.sln

deploy:
- provider: GitHub
  release: BSIPA $(bsipa_version)-draft
  tag: $(bsipa_version)-d
  description: |
    **Build:** [$(bsipa_version)-$(APPVEYOR_BUILD_NUMBER)](https://ci.appveyor.com/project/nike4613/beatsaber-ipa-reloaded-9smsb/builds/$(APPVEYOR_BUILD_ID))
    **Latest Commit:** $(APPVEYOR_REPO_COMMIT)
    - `$(APPVEYOR_REPO_COMMIT_MESSAGE)`
    - `$(APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED)`
  auth_token:
    secure: KhF3q/zWEFwrW0QeZLqE3NAkWR4u9iVhsmcyzXvwwJ28fUy+MzW4CWBx3RxNM60t
  artifact: '/.*[^_]\.zip/'
  draft: true
  force_update: true
  on:
    branch: master
    APPVEYOR_REPO_TAG: false
    do_deploy: true
