pipeline {
    agent any
    stages {
        stage("Props.Shop") {
            stages {
                stage("Restore") {
                    steps {
                        dotnetRestore project: "Props.Shop/Props.Shop.sln"
                        dotnetRestore project: "Props.Shop/Props.Shop.Tests.sln"
                    }
                }
                stage("Test") {
                    steps {
                        dotnetTest project: "Props.Shop/Props.Shop.Tests.sln", unstableIfErrors: true, unstableIfWarnings: true
                    }
                }
                stage("Publish") {
                    steps {
                        dotnetPublish configuration: 'Release', project: 'Props.Shop/Props.Shop.sln', selfContained: false, unstableIfWarnings: true
                        archiveArtifacts artifacts: 'Props.Shop/**/bin/Release/**/publish/Props.Shop.*', excludes: 'Props.Shop/*.Tests/**/*', fingerprint: true, followSymlinks: false, onlyIfSuccessful: true
                        sh "python3 scripts/load_shop_modules.py"
                    }
                }
            }
        }
        stage("Props") {
            stages {
                stage("Restore") {
                    steps {
                        dotnetRestore project: "Props"
                        dotnetRestore project: "Props.Tests"
                    }
                }
                stage("Test") {
                    steps {
                        dotnetTest project: "Props.Tests", unstableIfErrors: true, unstableIfWarnings: true
                    }
                }
                stage("Publish") {
                    steps {
                        dotnetPublish configuration: 'Release', noRestore: true, project: 'Props', sdk: 'Default .NET SDK'
                        archiveArtifacts artifacts: 'Props/bin/Release/**/publish/Props*', fingerprint: true, followSymlinks: false, onlyIfSuccessful: true
                    }
                }
            }
        }
    }
}