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