<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>true</ImplicitUsings>
        <SatelliteResourceLanguages>en</SatelliteResourceLanguages>
        <Version>5.2.0</Version>

        <!-- Output/build -->
        <RunWorkingDirectory>$(MSBuildProjectDirectory)</RunWorkingDirectory>
        <OutputType>exe</OutputType>
        <ApplicationIcon>ellie_icon.ico</ApplicationIcon>

        <!-- Analysis/Warnings -->
        <!--    <AnalysisMode>Recommended</AnalysisMode>-->
        <!--    <AnalysisModeGlobalization>None</AnalysisModeGlobalization>-->
        <NoWarn>CS1066;CS8981</NoWarn>

        <!-- Profile-guided optimization -->
        <TieredPGO>true</TieredPGO>
        <DebugType>embedded</DebugType>

    </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AngleSharp" Version="1.1.2">
      <PrivateAssets>all</PrivateAssets>
      <Publish>True</Publish>
    </PackageReference>
    <PackageReference Include="CodeHollow.FeedReader" Version="1.2.6" />
    <PackageReference Include="CommandLineParser" Version="2.9.1" />
    <PackageReference Include="Discord.Net" Version="3.15.3" />
    <PackageReference Include="CoreCLR-NCalc" Version="3.1.246" />
    <PackageReference Include="Google.Apis.Urlshortener.v1" Version="1.41.1.138" />
    <PackageReference Include="Google.Apis.YouTube.v3" Version="1.68.0.3414" />
    <PackageReference Include="Google.Apis.Customsearch.v1" Version="1.49.0.2084" />
    
    <PackageReference Include="Google.Protobuf" Version="3.28.2" />
    <PackageReference Include="Grpc" Version="2.46.6" />
    <PackageReference Include="Grpc.Net.Client" Version="2.62.0" />
    <PackageReference Include="Grpc.Tools" Version="2.66.0" PrivateAssets="All" />
    
    <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.5.0" />

    <PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />

    <PackageReference Include="MorseCode.ITask" Version="2.0.3" />
    <PackageReference Include="NetEscapades.Configuration.Yaml" Version="3.1.0" />

    <!-- DI -->
    <!--        <PackageReference Include="Ninject" Version="3.3.6"/>-->
    <!--        <PackageReference Include="Ninject.Extensions.Conventions" Version="3.3.0"/>-->
    <!--        <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />-->
    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" />
    <PackageReference Include="DryIoc.dll" Version="5.4.3" />
    <!--        <PackageReference Include="Scrutor" Version="4.2.0" />-->

    <PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" />
    <PackageReference Include="Microsoft.SyndicationFeed.ReaderWriter" Version="1.0.2" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
    <PackageReference Include="NonBlocking" Version="2.1.2" />
    <PackageReference Include="OneOf" Version="3.0.263" />
    <PackageReference Include="OneOf.SourceGenerator" Version="3.0.263" />
    <PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
    <PackageReference Include="Serilog.Sinks.Seq" Version="7.0.1" />

    <PackageReference Include="SixLabors.Fonts" Version="2.0.4" />
    <PackageReference Include="SixLabors.ImageSharp" Version="3.1.5" />
    <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="2.1.4" />
    <PackageReference Include="SixLabors.Shapes" Version="1.0.0-beta0009" />
    <PackageReference Include="StackExchange.Redis" Version="2.8.0" />
    <PackageReference Include="YamlDotNet" Version="15.1.4" />
    <PackageReference Include="SharpToken" Version="2.0.3" />

    <PackageReference Include="JetBrains.Annotations" Version="2023.3.0" />


    <!-- Db-related packages -->
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.8" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.4">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>

    <PackageReference Include="linq2db.EntityFrameworkCore" Version="8.1.0" />

    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.8" />
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.4" />

    <PackageReference Include="EFCore.NamingConventions" Version="8.0.3" />

    <!-- Used by stream notifications -->
    <PackageReference Include="TwitchLib.Api" Version="3.4.1" />

    <!-- sqlselectcsv and stock -->
    <PackageReference Include="CsvHelper" Version="32.0.3" />

  </ItemGroup>

  <ItemGroup>
        <ProjectReference Include="..\EllieBot.GrpcApiBase\EllieBot.GrpcApiBase.csproj" />
        <ProjectReference Include="..\Ellie.Marmalade\Ellie.Marmalade.csproj" />
        <ProjectReference Include="..\EllieBot.Voice\EllieBot.Voice.csproj" />
        <ProjectReference Include="..\EllieBot.Generators\EllieBot.Generators.csproj" OutputItemType="Analyzer" />
    </ItemGroup>

    <ItemGroup>
        <AdditionalFiles Include="data\strings\responses\responses.en-US.json" />
    </ItemGroup>

    <ItemGroup>
        <None Update="data\**\*">
            <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
        <None Update="creds.yml">
            <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </None>
        <None Update="creds_example.yml">
            <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </None>
    </ItemGroup>
  
    <ItemGroup>
        <Protobuf Include="..\EllieBot.Coordinator\Protos\coordinator.proto">
            <Link>_common\CoordinatorProtos\coordinator.proto</Link>
<!--            <GrpcServices>Client</GrpcServices>-->
        </Protobuf>
    </ItemGroup>

    <PropertyGroup Condition=" '$(Configuration)' == 'GlobalEllie' ">
        <!-- Define trace doesn't seem to affect the build at all so I had to remove $(DefineConstants)-->
        <DefineTrace>false</DefineTrace>
        <DefineConstants>GLOBAL_ELLIE</DefineConstants>
        <NoWarn>$(NoWarn);CS1573;CS1591</NoWarn>
        <Optimize>true</Optimize>
        <DebugType>portable</DebugType>
        <DebugSymbols>false</DebugSymbols>
    </PropertyGroup>
</Project>