diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml new file mode 100644 index 0000000000..7a3808b425 --- /dev/null +++ b/.github/workflows/ci-build.yml @@ -0,0 +1,100 @@ +name: Build + +on: + push: + branches: [ main ] + pull_request: + types: [opened, synchronize, reopened, closed] + branches: [ main ] + +env: + configuration: Release + productNamespacePrefix: "XamlNameReferenceGenerator" + +jobs: + build: + runs-on: windows-latest + outputs: + nbgv: ${{ steps.nbgv.outputs.SemVer2 }} + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + submodules: 'recursive' + + - name: Install .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 5.0.100-rc.2.20479.15 + + - name: NBGV + id: nbgv + uses: dotnet/nbgv@master + with: + setAllVars: true + + - name: NuGet Restore + run: dotnet restore + working-directory: src + + - name: Add MSBuild to PATH + uses: microsoft/setup-msbuild@v1 + + - name: Build + run: dotnet build --configuration ${{ env.configuration }} + working-directory: src + + - name: Run Unit Tests and Generate Coverage + uses: glennawatson/coverlet-msbuild@v1 + with: + project-files: 'src/**/*.Tests.csproj' + no-build: true + exclude-filter: '[${{env.productNamespacePrefix}}.*.Tests.*]*' + include-filter: '[${{env.productNamespacePrefix}}*]*' + output-format: cobertura + output: '../../artifacts/' + configuration: ${{ env.configuration }} + working-directory: src + + - name: Create NuGet Artifacts + uses: actions/upload-artifact@master + with: + name: nuget + path: '**/*.nupkg' + + release: + runs-on: ubuntu-latest + needs: build + if: contains(github.event.pull_request.labels.*.name, 'release') && github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged == true + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Download NuGet Packages + uses: actions/download-artifact@v2 + with: + name: nuget + + - name: Changelog + uses: glennawatson/ChangeLog@v1 + id: changelog + + - name: Create Release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + with: + tag_name: ${{ needs.build.outputs.nbgv }} + release_name: ${{ needs.build.outputs.nbgv }} + body: | + ${{ steps.changelog.outputs.commitLog }} + + - name: NuGet Push + env: + NUGET_AUTH_TOKEN: ${{ secrets.NUGET_API_KEY }} + SOURCE_URL: https://api.nuget.org/v3/index.json + run: | + dotnet nuget push -s ${{ env.SOURCE_URL }} -k ${{ env.NUGET_AUTH_TOKEN }} **/*.nupkg diff --git a/LICENSE b/LICENSE index d4e7454c76..edf33d139a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020 Artyom V. Gorchakov +Copyright (c) 2020 Artyom V. Gorchakov and Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/Directory.build.props b/src/Directory.build.props new file mode 100644 index 0000000000..8a5a1d810e --- /dev/null +++ b/src/Directory.build.props @@ -0,0 +1,18 @@ + + + XamlNameReferenceGenerator + MIT + https://github.com/worldbeater/XamlNameReferenceGenerator/ + Generates typed x:Name references to Avalonia controls declared in XAML. + https://github.com/worldbeater/XamlNameReferenceGenerator/releases + https://github.com/worldbeater/XamlNameReferenceGenerator + git + true + + + + + + + + diff --git a/src/XamlNameReferenceGenerator.Sandbox/XamlNameReferenceGenerator.Sandbox.csproj b/src/XamlNameReferenceGenerator.Sandbox/XamlNameReferenceGenerator.Sandbox.csproj index 3a0161fe8f..64a75d8c5f 100644 --- a/src/XamlNameReferenceGenerator.Sandbox/XamlNameReferenceGenerator.Sandbox.csproj +++ b/src/XamlNameReferenceGenerator.Sandbox/XamlNameReferenceGenerator.Sandbox.csproj @@ -3,6 +3,7 @@ Exe net5 preview + false diff --git a/src/XamlNameReferenceGenerator.Tests/XamlNameReferenceGenerator.Tests.csproj b/src/XamlNameReferenceGenerator.Tests/XamlNameReferenceGenerator.Tests.csproj index 5b1aa47d9c..d67d7b0cb9 100644 --- a/src/XamlNameReferenceGenerator.Tests/XamlNameReferenceGenerator.Tests.csproj +++ b/src/XamlNameReferenceGenerator.Tests/XamlNameReferenceGenerator.Tests.csproj @@ -3,6 +3,7 @@ Exe net5 preview + false diff --git a/src/XamlNameReferenceGenerator/Infrastructure/PhysicalFileDebugger.cs b/src/XamlNameReferenceGenerator/Infrastructure/PhysicalFileDebugger.cs deleted file mode 100644 index 68b70c5246..0000000000 --- a/src/XamlNameReferenceGenerator/Infrastructure/PhysicalFileDebugger.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.IO; - -namespace XamlNameReferenceGenerator.Infrastructure -{ - internal class PhysicalFileDebugger - { - private const string DefaultPath = @"C:\Users\prizr\Documents\GitHub\XamlNameReferenceGenerator\debug.txt"; - private readonly string _path; - - public PhysicalFileDebugger(string path = DefaultPath) => _path = path; - - public string Debug(Func function) - { - if (File.Exists(_path)) - File.Delete(_path); - - try - { - var sourceCode = function(); - File.WriteAllText(_path, sourceCode); - return sourceCode; - } - catch (Exception exception) - { - File.WriteAllText(_path, exception.ToString()); - throw; - } - } - } -} \ No newline at end of file diff --git a/src/XamlNameReferenceGenerator/NameReferenceGenerator.cs b/src/XamlNameReferenceGenerator/NameReferenceGenerator.cs index 5549ac9dd5..dff5fb4ede 100644 --- a/src/XamlNameReferenceGenerator/NameReferenceGenerator.cs +++ b/src/XamlNameReferenceGenerator/NameReferenceGenerator.cs @@ -27,7 +27,6 @@ namespace XamlNameReferenceGenerator sealed class GenerateTypedNameReferencesAttribute : Attribute { } } "; - private static readonly PhysicalFileDebugger Debugger = new PhysicalFileDebugger(); private static readonly SymbolDisplayFormat SymbolDisplayFormat = new SymbolDisplayFormat( typeQualificationStyle: SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces, genericsOptions: SymbolDisplayGenericsOptions.IncludeTypeParameters | @@ -76,7 +75,7 @@ namespace XamlNameReferenceGenerator try { - var sourceCode = Debugger.Debug(() => GenerateSourceCode(xamlParser, typeSymbol, relevantXamlFile)); + var sourceCode = GenerateSourceCode(xamlParser, typeSymbol, relevantXamlFile); context.AddSource($"{typeSymbol.Name}.g.cs", SourceText.From(sourceCode, Encoding.UTF8)); } catch (Exception exception) diff --git a/src/XamlNameReferenceGenerator/XamlNameReferenceGenerator.csproj b/src/XamlNameReferenceGenerator/XamlNameReferenceGenerator.csproj index 6b0736511e..c8c886b018 100644 --- a/src/XamlNameReferenceGenerator/XamlNameReferenceGenerator.csproj +++ b/src/XamlNameReferenceGenerator/XamlNameReferenceGenerator.csproj @@ -2,6 +2,8 @@ netstandard2.0 preview + true + false @@ -11,4 +13,7 @@ + + + \ No newline at end of file diff --git a/version.json b/version.json new file mode 100644 index 0000000000..b93e992194 --- /dev/null +++ b/version.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json", + "version": "0.1", + "assemblyVersion": { + "precision": "revision" + }, + "publicReleaseRefSpec": [ + "^refs/heads/main$", + "^refs/heads/v\\d+\\.\\d+$" + ] +} \ No newline at end of file