diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..5c76368 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,64 @@ +name: Publish + +on: + workflow_dispatch: + release: + types: + - published + +jobs: + build: + strategy: + matrix: + target: ["win-x64", "linux-x64", "osx-x64", "osx-arm64"] + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 8.0.x + - name: Get Version + uses: kzrnm/get-net-sdk-project-versions-action@v1.3.0 + id: get-version + with: + proj-path: src/OneWare.Quartus/OneWare.Quartus.csproj + - name: Build ${{ matrix.target }} + run: dotnet build src/OneWare.Quartus/OneWare.Quartus.csproj -c Release -r ${{ matrix.target }} -o publish + - name: Compress ${{ matrix.target }} + uses: thedoctor0/zip-release@0.7.1 + with: + type: 'zip' + filename: ../OneWare.QuartusExtension_${{steps.get-version.outputs.version}}_${{ matrix.target }}.zip + directory: ./publish + - uses: actions/upload-artifact@v3 + with: + name: OneWare.QuartusExtension_${{ matrix.target }} + if-no-files-found: error + retention-days: 5 + path: ./OneWare.QuartusExtension_${{steps.get-version.outputs.version}}_${{ matrix.target }}.zip + + release: + runs-on: ubuntu-latest + permissions: + contents: write + needs: [ build ] + steps: + - uses: actions/checkout@v3 + - name: Get Version + uses: kzrnm/get-net-sdk-project-versions-action@v1.3.0 + id: get-version + with: + proj-path: src/OneWare.Quartus/OneWare.Quartus.csproj + - uses: actions/download-artifact@v3 + with: + path: ./artifacts + - uses: ncipollo/release-action@v1 + with: + artifacts: "artifacts/**/*.zip" + tag: ${{steps.get-version.outputs.version}} + allowUpdates: true \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..0ec8206 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,32 @@ +# This workflow will build a .NET project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net + +name: Test + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 8.0.x + - name: Workload Restore + run: dotnet workload restore + - name: Restore dependencies + run: dotnet restore + - name: Build + run: dotnet build --no-restore + - name: Test + run: dotnet test --no-build --verbosity normal diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e5436d8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +native_tools/ +bin/ +obj/ +/packages/ +riderModule.iml +/_ReSharper.Caches/ +.idea diff --git a/Extension.md b/Extension.md new file mode 100644 index 0000000..666062b --- /dev/null +++ b/Extension.md @@ -0,0 +1,5 @@ +![Icon](https://raw.githubusercontent.com/one-ware/OneWare.Quartus/main/Icon.png) + +### Get Started + +> This text will be visible in the builtin package manager diff --git a/Icon.png b/Icon.png new file mode 100644 index 0000000..cbbd534 Binary files /dev/null and b/Icon.png differ diff --git a/License.md b/License.md new file mode 100644 index 0000000..8c4300c --- /dev/null +++ b/License.md @@ -0,0 +1,20 @@ +### Extension License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/OneWare.Quartus.sln b/OneWare.Quartus.sln new file mode 100644 index 0000000..c54ae06 --- /dev/null +++ b/OneWare.Quartus.sln @@ -0,0 +1,46 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.Quartus.UnitTests", "tests\OneWare.Quartus.UnitTests\OneWare.Quartus.UnitTests.csproj", "{CF9E9C7A-A4F7-442B-8015-58D4DA4C6837}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWare.Quartus", "src\OneWare.Quartus\OneWare.Quartus.csproj", "{393BAF19-4387-413C-AC2E-2D22577783FE}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Properties", "Properties", "{66B7CCEF-7704-488B-BB9F-300E9516AFD0}" + ProjectSection(SolutionItems) = preProject + Extension.md = Extension.md + License.md = License.md + oneware-extension.json = oneware-extension.json + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Actions", "Actions", "{123958C7-8BF6-43F2-BD3A-8AD304EBBF9B}" + ProjectSection(SolutionItems) = preProject + .github\workflows\publish.yml = .github\workflows\publish.yml + .github\workflows\test.yml = .github\workflows\test.yml + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CF9E9C7A-A4F7-442B-8015-58D4DA4C6837}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CF9E9C7A-A4F7-442B-8015-58D4DA4C6837}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CF9E9C7A-A4F7-442B-8015-58D4DA4C6837}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CF9E9C7A-A4F7-442B-8015-58D4DA4C6837}.Release|Any CPU.Build.0 = Release|Any CPU + {393BAF19-4387-413C-AC2E-2D22577783FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {393BAF19-4387-413C-AC2E-2D22577783FE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {393BAF19-4387-413C-AC2E-2D22577783FE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {393BAF19-4387-413C-AC2E-2D22577783FE}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2F01758F-FFEA-408A-B6CF-7135800E934C} + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection +EndGlobal diff --git a/README.md b/README.md new file mode 100644 index 0000000..6f7f179 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# OneWare.Quartus + +Template for creating Extensions for OneWare Studio + +![image](https://github.com/one-ware/OneWare.Quartus/OneWare.Quartus/main/Icon.png9) + +[![Test](https://github.com/one-ware/OneWare.Quartus/actions/workflows/test.yml/badge.svg)](https://github.com/one-ware/OneWare.Quartus/actions/workflows/test.yml) +[![Publish](https://github.com/one-ware/OneWare.Quartus/actions/workflows/publish.yml/badge.svg)](https://github.com/one-ware/OneWare.Quartus/actions/workflows/publish.yml) diff --git a/oneware-extension.json b/oneware-extension.json new file mode 100644 index 0000000..279c750 --- /dev/null +++ b/oneware-extension.json @@ -0,0 +1,48 @@ +{ + "category": "Tools", + "type": "Plugin", + "name": "OneWare.Quartus Extension", + "id": "OneWare.QuartusModule", + "description": "OneWare.Quartus for OneWare", + "license": "MIT", + "iconUrl": "https://raw.githubusercontent.com/one-ware/OneWare.Quartus/main/Icon.png", + "tabs": [ + { + "title": "Readme", + "contentUrl": "https://raw.githubusercontent.com/one-ware/OneWare.Quartus/main/Extension.md" + }, + { + "title": "License", + "contentUrl": "https://raw.githubusercontent.com/one-ware/OneWare.Quartus/main/License.md" + } + ], + "links": [ + { + "name": "Github", + "url": "https://github.com/one-ware/OneWare.Quartus" + } + ], + "versions": [ + { + "version": "0.1", + "targets": [ + { + "target": "win-x64", + "url": "https://github.com/one-ware/OneWare.Quartus/releases/download/0.1/OneWare.QuartusExtension_0.1_win-x64.zip" + }, + { + "target": "linux-x64", + "url": "https://github.com/one-ware/OneWare.Quartus/releases/download/0.1/OneWare.QuartusExtension_0.1_linux-x64.zip" + }, + { + "target": "osx-x64", + "url": "https://github.com/one-ware/OneWare.Quartus/releases/download/0.1/OneWare.QuartusExtension_0.1_osx-x64.zip" + }, + { + "target": "osx-arm64", + "url": "https://github.com/one-ware/OneWare.Quartus/releases/download/0.1/OneWare.QuartusExtension_0.1_osx-arm64.zip" + } + ] + } + ] +} diff --git a/src/OneWare.Quartus/OneWare.Quartus.csproj b/src/OneWare.Quartus/OneWare.Quartus.csproj new file mode 100644 index 0000000..36ce26f --- /dev/null +++ b/src/OneWare.Quartus/OneWare.Quartus.csproj @@ -0,0 +1,22 @@ + + + + 0.1 + net8.0 + enable + enable + true + true + false + + + + + + + + + + + + diff --git a/src/OneWare.Quartus/OneWareQuartusModule.cs b/src/OneWare.Quartus/OneWareQuartusModule.cs new file mode 100644 index 0000000..3a276f3 --- /dev/null +++ b/src/OneWare.Quartus/OneWareQuartusModule.cs @@ -0,0 +1,33 @@ +using OneWare.Essentials.Models; +using OneWare.Essentials.Services; +using OneWare.Essentials.ViewModels; +using Prism.Ioc; +using Prism.Modularity; + +namespace OneWare.Quartus; + +public class OneWareQuartusModule : IModule +{ + public void RegisterTypes(IContainerRegistry containerRegistry) + { + } + + public void OnInitialized(IContainerProvider containerProvider) + { + //This example adds a context menu for .vhd files + containerProvider.Resolve().RegisterConstructContextMenu(x => + { + if (x is [IProjectFile {Extension: ".vhd"} json]) + { + return new[] + { + new MenuItemViewModel("Hello World") + { + Header = "Hello World" + } + }; + } + return null; + }); + } +} \ No newline at end of file diff --git a/src/OneWare.Quartus/oneware.json b/src/OneWare.Quartus/oneware.json new file mode 100644 index 0000000..b90bbee --- /dev/null +++ b/src/OneWare.Quartus/oneware.json @@ -0,0 +1,9 @@ +{ + "Dependencies": [ + { + "Name": "OneWare.Essentials", + "MinVersion": "0.1.0.0", + "MaxVersion": "0.1.0.0" + } + ] +} \ No newline at end of file diff --git a/tests/OneWare.Quartus.UnitTests/OneWare.Quartus.UnitTests.csproj b/tests/OneWare.Quartus.UnitTests/OneWare.Quartus.UnitTests.csproj new file mode 100644 index 0000000..66405d5 --- /dev/null +++ b/tests/OneWare.Quartus.UnitTests/OneWare.Quartus.UnitTests.csproj @@ -0,0 +1,22 @@ + + + + net8.0 + Library + False + True + False + True + enable + + + + + + + + + + + + diff --git a/tests/OneWare.Quartus.UnitTests/OneWareQuartusTests.cs b/tests/OneWare.Quartus.UnitTests/OneWareQuartusTests.cs new file mode 100644 index 0000000..8dea010 --- /dev/null +++ b/tests/OneWare.Quartus.UnitTests/OneWareQuartusTests.cs @@ -0,0 +1,14 @@ +using Xunit; + +namespace OneWare.Quartus.UnitTests; + +public class OneWareQuartusTests +{ + //Add your unit tests here + + [Fact] + public void LoadLibrary() + { + Assert.True(true); + } +} \ No newline at end of file