diff --git a/.github/ISSUE_TEMPLATE/essentials-plugin-request.md b/.github/ISSUE_TEMPLATE/essentials-plugin-request.md
new file mode 100644
index 0000000..0bee158
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/essentials-plugin-request.md
@@ -0,0 +1,17 @@
+---
+name: Essentials Plugin Request
+about: Request an Essentials Plugin
+title: "[REQUEST] - "
+labels: plugin request
+assignees: ''
+
+---
+
+** Describe the Plugin **
+What do you want the plugin to do? Is it for a specific device? If it's for a specific device, include the manufacturer and model, along with links to API documentation if available.
+
+** Does it need to be available in SIMPL Windows? **
+If it does, describe the functionality that should be exposed to SIMPL Windows via EISC. This may include an example join map, or other way of documenting the layout of the EISC.
+
+** Additional Features or functionality **
+Describe additional features or functionality that this plugin should have.
diff --git a/.github/scripts/GenerateVersionNumber.ps1 b/.github/scripts/GenerateVersionNumber.ps1
index 98bbf3a..5d5a3ec 100644
--- a/.github/scripts/GenerateVersionNumber.ps1
+++ b/.github/scripts/GenerateVersionNumber.ps1
@@ -7,7 +7,8 @@ Foreach ($version in $latestVersions) {
$latestVersion = $version
Write-Host "Setting latest version to: $latestVersion"
}
- } catch {
+ }
+ catch {
Write-Host "Unable to convert $($version). Skipping"
continue;
}
@@ -18,17 +19,19 @@ $phase = ""
$newVersionString = ""
switch -regex ($Env:GITHUB_REF) {
'^refs\/heads\/main*.' {
- $newVersionString = "{0}.{1}.{2}" -f $newVersion.Major, $newVersion.Minor, ($newVersion.Build + 1)
+ $newVersionString = "{0}.{1}.{2}" -f $newVersion.Major, $newVersion.Minor, $newVersion.Build
}
'^refs\/heads\/feature\/*.' {
$phase = 'alpha'
$newVersionString = "{0}.{1}.{2}-{3}-{4}" -f $newVersion.Major, $newVersion.Minor, ($newVersion.Build + 1), $phase, $Env:GITHUB_RUN_NUMBER
}
'^refs\/heads\/release\/*.' {
+ $splitRef = $Env:GITHUB_REF -split "/"
+ $version = [version]($splitRef[-1] -replace "v", "")
$phase = 'rc'
- $newVersionString = "{0}.{1}.{2}-{3}-{4}" -f $newVersion.Major, $newVersion.Minor, ($newVersion.Build + 1), $phase, $Env:GITHUB_RUN_NUMBER
+ $newVersionString = "{0}.{1}.{2}-{3}-{4}" -f $version.Major, $version.Minor, $version.Build, $phase, $Env:GITHUB_RUN_NUMBER
}
- '^refs\/heads\/development*.' {
+ '^refs\/heads\/dev*.' {
$phase = 'beta'
$newVersionString = "{0}.{1}.{2}-{3}-{4}" -f $newVersion.Major, $newVersion.Minor, ($newVersion.Build + 1), $phase, $Env:GITHUB_RUN_NUMBER
}
diff --git a/.github/scripts/ZipBuildOutput.ps1 b/.github/scripts/ZipBuildOutput.ps1
index 3f1998b..ca4a9a7 100644
--- a/.github/scripts/ZipBuildOutput.ps1
+++ b/.github/scripts/ZipBuildOutput.ps1
@@ -10,7 +10,7 @@ Get-ChildItem ($destination)
$exclusions = @(git submodule foreach --quiet 'echo $name')
# Trying to get any .json schema files (not currently working)
# Gets any files with the listed extensions.
-Get-ChildItem -recurse -Path "$($Env:GITHUB_WORKSPACE)" -include "*.clz", "*.cpz", "*.cplz" | ForEach-Object {
+Get-ChildItem -recurse -Path "$($Env:GITHUB_WORKSPACE)" -include "*.cplz" | ForEach-Object {
$allowed = $true;
# Exclude any files in submodules
foreach ($exclude in $exclusions) {
@@ -36,6 +36,7 @@ Get-ChildItem -Path $destination | Where-Object {($_.Extension -eq ".clz") -or (
Get-ChildItem -Recurse -Path "$($Env:GITHUB_WORKSPACE)" -include $filenames | Copy-Item -Destination ($destination) -Force
}
}
+Get-ChildItem -Path $destination\*.cplz | Rename-Item -NewName { "$($_.BaseName)-$($Env:VERSION)$($_.Extension)" }
Compress-Archive -Path $destination -DestinationPath "$($Env:GITHUB_WORKSPACE)\$($Env:SOLUTION_FILE)-$($Env:VERSION).zip" -Force
Write-Host "Output Contents post Zip"
Get-ChildItem -Path $destination
\ No newline at end of file
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
deleted file mode 100644
index 0ccab74..0000000
--- a/.github/workflows/docker.yml
+++ /dev/null
@@ -1,103 +0,0 @@
-name: Branch Build Using Docker
-
-on:
- push:
- branches:
- - feature/*
- - hotfix/*
- - release/*
- - main
- - development
-
-env:
- # solution path doesn't need slashes unless there it is multiple folders deep
- # solution name does not include extension. .sln is assumed
- SOLUTION_PATH: PDT.EssentialsPluginTemplate.EPI
- SOLUTION_FILE: PDT.EssentialsPluginTemplate.EPI
- # Do not edit this, we're just creating it here
- VERSION: 0.0.0-buildtype-buildnumber
- # Defaults to debug for build type
- BUILD_TYPE: Debug
- # Defaults to main as the release branch. Change as necessary
- RELEASE_BRANCH: main
-jobs:
- Build_Project:
- runs-on: windows-latest
- steps:
- # First we checkout the source repo
- - name: Checkout repo
- uses: actions/checkout@v2
- with:
- fetch-depth: 0
- # And any submodules
- - name: Checkout submodules
- shell: bash
- run: |
- git config --global url."https://github.com/".insteadOf "git@github.com:"
- auth_header="$(git config --local --get http.https://github.com/.extraheader)"
- git submodule sync --recursive
- git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- # Set the BUILD_TYPE environment variable
- - name: Set Build to Release if triggered from main
- run: |
- if("$($Env:GITHUB_REF)".contains("$($Env:RELEASE_BRANCH)")) {
- Write-Host "Setting build type to Release"
- Write-Output "::set-env name=BUILD_TYPE::Release"
- }
- # Fetch all tags
- - name: Fetch tags
- run: git fetch --tags
- # Generate the appropriate version number
- - name: Set Version Number
- shell: powershell
- run: |
- $version = ./.github/scripts/GenerateVersionNumber.ps1
- Write-Output "::set-env name=VERSION::$version"
- # Use the version number to set the version of the assemblies
- - name: Update AssemblyInfo.cs
- shell: powershell
- run: |
- Write-Output ${{ env.VERSION }}
- ./.github/scripts/UpdateAssemblyVersion.ps1 ${{ env.VERSION }}
- - name: restore Nuget Packages
- run: nuget install .\packages.config -OutputDirectory .\packages -ExcludeVersion
- - name: Login to Docker
- uses: azure/docker-login@v1
- with:
- username: ${{ secrets.DOCKERHUB_USER }}
- password: ${{ secrets.DOCKERHUB_PASSWORD }}
- # Build the solutions in the docker image
- - name: Build Solution
- shell: powershell
- run: |
- Invoke-Expression "docker run --rm --mount type=bind,source=""$($Env:GITHUB_WORKSPACE)"",target=""c:/project"" pepperdash/sspbuilder c:\cihelpers\vsidebuild.exe -Solution ""c:\project\$($Env:SOLUTION_PATH)\$($Env:SOLUTION_FILE).sln"" -BuildSolutionConfiguration $($ENV:BUILD_TYPE)"
- # Zip up the output files as needed
- - name: Zip Build Output
- shell: powershell
- run: ./.github/scripts/ZipBuildOutput.ps1
- - name: Upload Build Output
- uses: actions/upload-artifact@v1
- with:
- name: Build
- path: ./${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip
- # Create the release on the source repo
- - name: Create Release
- id: create_release
- uses: actions/create-release@v1
- with:
- tag_name: ${{ env.VERSION }}
- release_name: ${{ env.VERSION }}
- prerelease: ${{contains('debug', env.BUILD_TYPE)}}
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- # Upload the build package to the release
- - name: Upload Release Package
- id: upload_release
- uses: actions/upload-release-asset@v1
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ./${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip
- asset_name: ${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip
- asset_content_type: application/zip
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/essentialsplugins-betabuilds.yml b/.github/workflows/essentialsplugins-betabuilds.yml
new file mode 100644
index 0000000..ad34045
--- /dev/null
+++ b/.github/workflows/essentialsplugins-betabuilds.yml
@@ -0,0 +1,271 @@
+name: Branch Build Using Docker
+
+on:
+ push:
+ branches:
+ - feature/*
+ - hotfix/*
+ - release/*
+ - dev*
+
+env:
+ # Do not edit this, we're just creating it here
+ VERSION: 0.0.0-buildtype-buildnumber
+ # Defaults to debug for build type
+ BUILD_TYPE: Debug
+ # Defaults to master as the release branch. Change as necessary
+ RELEASE_BRANCH: main
+jobs:
+ Build_Project:
+ runs-on: windows-2019
+ steps:
+ # First we checkout the source repo
+ - name: Checkout repo
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ # Fetch all tags
+ - name: Fetch tags
+ run: git fetch --tags
+ # Generate the appropriate version number
+ - name: Set Version Number
+ shell: powershell
+ run: |
+ $latestVersions = $(git tag --merged origin/main)
+ $latestVersion = [version]"0.0.0"
+ Foreach ($version in $latestVersions) {
+ Write-Host $version
+ try {
+ if (([version]$version) -ge $latestVersion) {
+ $latestVersion = $version
+ Write-Host "Setting latest version to: $latestVersion"
+ }
+ }
+ catch {
+ Write-Host "Unable to convert $($version). Skipping"
+ continue;
+ }
+ }
+
+ $newVersion = [version]$latestVersion
+ $phase = ""
+ $newVersionString = ""
+ switch -regex ($Env:GITHUB_REF) {
+ '^refs\/heads\/main*.' {
+ $newVersionString = "{0}.{1}.{2}" -f $newVersion.Major, $newVersion.Minor, $newVersion.Build
+ }
+ '^refs\/heads\/feature\/*.' {
+ $phase = 'alpha'
+ $newVersionString = "{0}.{1}.{2}-{3}-{4}" -f $newVersion.Major, $newVersion.Minor, ($newVersion.Build + 1), $phase, $Env:GITHUB_RUN_NUMBER
+ }
+ '^refs\/heads\/release\/*.' {
+ $splitRef = $Env:GITHUB_REF -split "/"
+ $version = [version]($splitRef[-1] -replace "v", "")
+ $phase = 'rc'
+ $newVersionString = "{0}.{1}.{2}-{3}-{4}" -f $version.Major, $version.Minor, $version.Build, $phase, $Env:GITHUB_RUN_NUMBER
+ }
+ '^refs\/heads\/dev*.' {
+ $phase = 'beta'
+ $newVersionString = "{0}.{1}.{2}-{3}-{4}" -f $newVersion.Major, $newVersion.Minor, ($newVersion.Build + 1), $phase, $Env:GITHUB_RUN_NUMBER
+ }
+ '^refs\/heads\/hotfix\/*.' {
+ $phase = 'hotfix'
+ $newVersionString = "{0}.{1}.{2}-{3}-{4}" -f $newVersion.Major, $newVersion.Minor, ($newVersion.Build + 1), $phase, $Env:GITHUB_RUN_NUMBER
+ }
+ }
+ echo "VERSION=$newVersionString" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+ # Use the version number to set the version of the assemblies
+ - name: Update AssemblyInfo.cs
+ shell: powershell
+ run: |
+ function Update-SourceVersion {
+ Param ([string]$Version)
+ #$fullVersion = $Version
+ $baseVersion = [regex]::Match($Version, "(\d+.\d+.\d+).*").captures.groups[1].value
+ $NewAssemblyVersion = 'AssemblyVersion("' + $baseVersion + '.*")'
+ Write-Output "AssemblyVersion = $NewAssemblyVersion"
+ $NewAssemblyInformationalVersion = 'AssemblyInformationalVersion("' + $Version + '")'
+ Write-Output "AssemblyInformationalVersion = $NewAssemblyInformationalVersion"
+ foreach ($o in $input) {
+ Write-output $o.FullName
+ $TmpFile = $o.FullName + ".tmp"
+ get-content $o.FullName |
+ ForEach-Object {
+ $_ -replace 'AssemblyVersion\(".*"\)', $NewAssemblyVersion } |
+ ForEach-Object {
+ $_ -replace 'AssemblyInformationalVersion\(".*"\)', $NewAssemblyInformationalVersion
+ } > $TmpFile
+ move-item $TmpFile $o.FullName -force
+ }
+ }
+ function Update-AllAssemblyInfoFiles ( $version ) {
+ foreach ($file in "AssemblyInfo.cs", "AssemblyInfo.vb" ) {
+ get-childitem -Path $Env:GITHUB_WORKSPACE -recurse | Where-Object { $_.Name -eq $file } | Update-SourceVersion $version ;
+ }
+ }
+ # validate arguments
+ $r = [System.Text.RegularExpressions.Regex]::Match($Env:VERSION, "\d+\.\d+\.\d+.*");
+ if ($r.Success) {
+ Write-Output "Updating Assembly Version to $Env:VERSION ...";
+ Update-AllAssemblyInfoFiles $Env:VERSION;
+ }
+ else {
+ Write-Output " ";
+ Write-Output "Error: Input version $Env:VERSION does not match x.y.z format!"
+ Write-Output " ";
+ Write-Output "Unable to apply version to AssemblyInfo.cs files";
+ }
+ - name: restore Nuget Packages
+ run: nuget install .\packages.config -OutputDirectory .\packages -ExcludeVersion
+ # Set the SOLUTION_PATH
+ - name: Get SLN Path
+ shell: powershell
+ run: |
+ $solution_path = Get-ChildItem *.sln -recurse
+ $solution_path = $solution_path.FullName
+ $solution_path = $solution_path -replace "(?:[^\\]*\\){4}", ""
+ Write-Output $solution_path
+ echo "SOLUTION_PATH=$($solution_path)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+ # Set the SOLUTION_FILE
+ - name: Get SLN File
+ shell: powershell
+ run: |
+ $solution_file = Get-ChildItem .\*.sln -recurse -Path "$($Env:GITHUB_WORKSPACE)"
+ echo "SOLUTION_FILE=$($solution_file.BaseName)"| Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+ # Login to Docker
+ - name: Login to Docker
+ uses: azure/docker-login@v1
+ with:
+ username: ${{ secrets.DOCKERHUB_USER }}
+ password: ${{ secrets.DOCKERHUB_PASSWORD }}
+ # Build the solutions in the docker image
+ - name: Build Solution
+ shell: powershell
+ run: |
+ Invoke-Expression "docker run --rm --mount type=bind,source=""$($Env:GITHUB_WORKSPACE)"",target=""c:/project"" pepperdash/sspbuilder c:\cihelpers\vsidebuild.exe -Solution ""c:\project\$($Env:SOLUTION_PATH)"" -BuildSolutionConfiguration $($ENV:BUILD_TYPE)"
+ # Zip up the output files as needed
+ - name: Zip Build Output
+ shell: powershell
+ run: |
+ $destination = "$($Env:GITHUB_HOME)\output"
+ New-Item -ItemType Directory -Force -Path ($destination)
+ Get-ChildItem ($destination)
+ $exclusions = "packages"
+ # Trying to get any .json schema files (not currently working)
+ # Gets any files with the listed extensions.
+ Get-ChildItem -recurse -Path "$($Env:GITHUB_WORKSPACE)" -include "*.clz", "*.cpz", "*.cplz", "*.nuspec" | ForEach-Object {
+ $allowed = $true;
+ # Exclude any files in submodules
+ foreach ($exclude in $exclusions) {
+ if ((Split-Path $_.FullName -Parent).contains("$($exclude)")) {
+ $allowed = $false;
+ break;
+ }
+ }
+ if ($allowed) {
+ Write-Host "allowing $($_)"
+ $_;
+ }
+ } | Copy-Item -Destination ($destination) -Force
+ Write-Host "Getting matching files..."
+ # Get any files from the output folder that match the following extensions
+ Get-ChildItem -Path $destination | Where-Object {($_.Extension -eq ".clz") -or ($_.Extension -eq ".cpz" -or ($_.Extension -eq ".cplz"))} | ForEach-Object {
+ # Replace the extensions with dll and xml and create an array
+ $filenames = @($($_ -replace "cpz|clz|cplz", "dll"), $($_ -replace "cpz|clz|cplz", "xml"))
+ Write-Host "Filenames:"
+ Write-Host $filenames
+ if ($filenames.length -gt 0) {
+ # Attempt to get the files and return them to the output directory
+ Get-ChildItem -Recurse -Path "$($Env:GITHUB_WORKSPACE)" -include $filenames | Copy-Item -Destination ($destination) -Force
+ }
+ }
+ Get-ChildItem -Path $destination\*.cplz | Rename-Item -NewName { "$($_.BaseName)-$($Env:VERSION)$($_.Extension)" }
+ Compress-Archive -Path $destination -DestinationPath "$($Env:GITHUB_WORKSPACE)\$($Env:SOLUTION_FILE)-$($Env:VERSION).zip" -Force
+ Write-Host "Output Contents post Zip"
+ Get-ChildItem -Path $destination
+ # Write the version to a file to be consumed by the push jobs
+ - name: Write Version
+ run: Write-Output "$($Env:VERSION)" | Out-File -FilePath "$($Env:GITHUB_HOME)\output\version.txt"
+ # Upload output files
+ - name: Upload Build Output
+ uses: actions/upload-artifact@v1
+ with:
+ name: Build
+ path: ./${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip
+ # Upload the Version file as an artifact
+ - name: Upload version.txt
+ uses: actions/upload-artifact@v1
+ with:
+ name: Version
+ path: ${{env.GITHUB_HOME}}\output\version.txt
+ # Create the release on the source repo
+ - name: Create Release
+ id: create_release
+ uses: fleskesvor/create-release@feature/support-target-commitish
+ with:
+ tag_name: ${{ env.VERSION }}
+ release_name: ${{ env.VERSION }}
+ prerelease: ${{contains('debug', env.BUILD_TYPE)}}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ # Upload the build package to the release
+ - name: Upload Release Package
+ id: upload_release
+ uses: actions/upload-release-asset@v1
+ with:
+ upload_url: ${{ steps.create_release.outputs.upload_url }}
+ asset_path: ./${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip
+ asset_name: ${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip
+ asset_content_type: application/zip
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ Push_Nuget_Package:
+ needs: Build_Project
+ runs-on: windows-2019
+ steps:
+ - name: Download Build Version Info
+ uses: actions/download-artifact@v1
+ with:
+ name: Version
+ - name: Set Version Number
+ shell: powershell
+ run: |
+ Get-ChildItem "./Version"
+ $version = Get-Content -Path ./Version/version.txt
+ Write-Host "Version: $version"
+ echo "VERSION=$version" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+ Remove-Item -Path ./Version/version.txt
+ Remove-Item -Path ./Version
+ - name: Download Build output
+ uses: actions/download-artifact@v1
+ with:
+ name: Build
+ path: ./
+ - name: Unzip Build file
+ run: |
+ Get-ChildItem .\*.zip | Expand-Archive -DestinationPath .\
+ Remove-Item -Path .\*.zip
+ - name: Copy Files to root & delete output directory
+ run: |
+ Remove-Item -Path .\* -Include @("*.cpz","*.md","*.cplz","*.json","*.dll","*.clz")
+ Get-ChildItem -Path .\output\* | Copy-Item -Destination .\
+ Remove-Item -Path .\output -Recurse
+ - name: Get nuget File
+ shell: powershell
+ run: |
+ $nuspec_file = Get-ChildItem *.nuspec -recurse
+ echo "NUSPEC_FILE=$($nuspec_file.BaseName)"| Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+ - name: Add nuget.exe
+ uses: nuget/setup-nuget@v1
+ - name: Add Github Packages source
+ run: nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username Pepperdash -password ${{ secrets.GITHUB_TOKEN }}
+ # Pushes to nuget, not needed unless publishing publicly
+ - name: Add nuget.org API Key
+ run: nuget setApiKey ${{ secrets.NUGET_API_KEY }}
+ - name: Create nuget package
+ run: nuget pack "./${{ env.NUSPEC_FILE}}.nuspec" -version ${{ env.VERSION }}
+ - name: Publish nuget package to Github registry
+ run: nuget push **/*.nupkg -source github
+ # Pushes to nuget, not needed unless publishing publicly >> this pushes package to nuget.org
+ - name: Publish nuget package to nuget.org
+ run: nuget push **/*.nupkg -Source https://api.nuget.org/v3/index.json
diff --git a/.github/workflows/essentialsplugins-releasebuilds.yml b/.github/workflows/essentialsplugins-releasebuilds.yml
new file mode 100644
index 0000000..3e169ce
--- /dev/null
+++ b/.github/workflows/essentialsplugins-releasebuilds.yml
@@ -0,0 +1,219 @@
+name: Main Build using Docker
+
+on:
+ release:
+ types:
+ - released
+ branches:
+ - main
+
+env:
+ # Do not edit this, we're just creating it here
+ VERSION: 0.0.0-buildtype-buildnumber
+ # Defaults to debug for build type
+ BUILD_TYPE: Debug
+ # Defaults to master as the release branch. Change as necessary
+ RELEASE_BRANCH: main
+jobs:
+ Build_Project:
+ runs-on: windows-2019
+ steps:
+ # First we checkout the source repo
+ - name: Checkout repo
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ # Fetch all tags
+ - name: Fetch tags
+ run: git fetch --tags
+ # Generate the appropriate version number
+ - name: Set Version Number
+ shell: powershell
+ env:
+ TAG_NAME: ${{ github.event.release.tag_name }}
+ run: echo "VERSION=$($Env:TAG_NAME)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+ # Use the version number to set the version of the assemblies
+ - name: Update AssemblyInfo.cs
+ shell: powershell
+ run: |
+ function Update-SourceVersion {
+ Param ([string]$Version)
+ #$fullVersion = $Version
+ $baseVersion = [regex]::Match($Version, "(\d+.\d+.\d+).*").captures.groups[1].value
+ $NewAssemblyVersion = 'AssemblyVersion("' + $baseVersion + '.*")'
+ Write-Output "AssemblyVersion = $NewAssemblyVersion"
+ $NewAssemblyInformationalVersion = 'AssemblyInformationalVersion("' + $Version + '")'
+ Write-Output "AssemblyInformationalVersion = $NewAssemblyInformationalVersion"
+ foreach ($o in $input) {
+ Write-output $o.FullName
+ $TmpFile = $o.FullName + ".tmp"
+ get-content $o.FullName |
+ ForEach-Object {
+ $_ -replace 'AssemblyVersion\(".*"\)', $NewAssemblyVersion } |
+ ForEach-Object {
+ $_ -replace 'AssemblyInformationalVersion\(".*"\)', $NewAssemblyInformationalVersion
+ } > $TmpFile
+ move-item $TmpFile $o.FullName -force
+ }
+ }
+ function Update-AllAssemblyInfoFiles ( $version ) {
+ foreach ($file in "AssemblyInfo.cs", "AssemblyInfo.vb" ) {
+ get-childitem -Path $Env:GITHUB_WORKSPACE -recurse | Where-Object { $_.Name -eq $file } | Update-SourceVersion $version ;
+ }
+ }
+ # validate arguments
+ $r = [System.Text.RegularExpressions.Regex]::Match($Env:VERSION, "\d+\.\d+\.\d+.*");
+ if ($r.Success) {
+ Write-Output "Updating Assembly Version to $Env:VERSION ...";
+ Update-AllAssemblyInfoFiles $Env:VERSION;
+ }
+ else {
+ Write-Output " ";
+ Write-Output "Error: Input version $Env:VERSION does not match x.y.z format!"
+ Write-Output " ";
+ Write-Output "Unable to apply version to AssemblyInfo.cs files";
+ }
+ - name: restore Nuget Packages
+ run: nuget install .\packages.config -OutputDirectory .\packages -ExcludeVersion
+ # Set the SOLUTION_PATH
+ - name: Get SLN Path
+ shell: powershell
+ run: |
+ $solution_path = Get-ChildItem *.sln -recurse
+ $solution_path = $solution_path.FullName
+ $solution_path = $solution_path -replace "(?:[^\\]*\\){4}", ""
+ Write-Output $solution_path
+ echo "SOLUTION_PATH=$($solution_path)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+ # Set the SOLUTION_FILE
+ - name: Get SLN File
+ shell: powershell
+ run: |
+ $solution_file = Get-ChildItem .\*.sln -recurse -Path "$($Env:GITHUB_WORKSPACE)"
+ echo "SOLUTION_FILE=$($solution_file.BaseName)"| Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+ # Login to Docker
+ - name: Login to Docker
+ uses: azure/docker-login@v1
+ with:
+ username: ${{ secrets.DOCKERHUB_USER }}
+ password: ${{ secrets.DOCKERHUB_PASSWORD }}
+ # Build the solutions in the docker image
+ - name: Build Solution
+ shell: powershell
+ run: |
+ Invoke-Expression "docker run --rm --mount type=bind,source=""$($Env:GITHUB_WORKSPACE)"",target=""c:/project"" pepperdash/sspbuilder c:\cihelpers\vsidebuild.exe -Solution ""c:\project\$($Env:SOLUTION_PATH)"" -BuildSolutionConfiguration $($ENV:BUILD_TYPE)"
+ # Zip up the output files as needed
+ - name: Zip Build Output
+ shell: powershell
+ run: |
+ $destination = "$($Env:GITHUB_HOME)\output"
+ New-Item -ItemType Directory -Force -Path ($destination)
+ Get-ChildItem ($destination)
+ $exclusions = "packages"
+ # Trying to get any .json schema files (not currently working)
+ # Gets any files with the listed extensions.
+ Get-ChildItem -recurse -Path "$($Env:GITHUB_WORKSPACE)" -include "*.clz", "*.cpz", "*.cplz", "*.nuspec" | ForEach-Object {
+ $allowed = $true;
+ # Exclude any files in submodules
+ foreach ($exclude in $exclusions) {
+ if ((Split-Path $_.FullName -Parent).contains("$($exclude)")) {
+ $allowed = $false;
+ break;
+ }
+ }
+ if ($allowed) {
+ Write-Host "allowing $($_)"
+ $_;
+ }
+ } | Copy-Item -Destination ($destination) -Force
+ Write-Host "Getting matching files..."
+ # Get any files from the output folder that match the following extensions
+ Get-ChildItem -Path $destination | Where-Object {($_.Extension -eq ".clz") -or ($_.Extension -eq ".cpz" -or ($_.Extension -eq ".cplz"))} | ForEach-Object {
+ # Replace the extensions with dll and xml and create an array
+ $filenames = @($($_ -replace "cpz|clz|cplz", "dll"), $($_ -replace "cpz|clz|cplz", "xml"))
+ Write-Host "Filenames:"
+ Write-Host $filenames
+ if ($filenames.length -gt 0) {
+ # Attempt to get the files and return them to the output directory
+ Get-ChildItem -Recurse -Path "$($Env:GITHUB_WORKSPACE)" -include $filenames | Copy-Item -Destination ($destination) -Force
+ }
+ }
+ Get-ChildItem -Path $destination\*.cplz | Rename-Item -NewName { "$($_.BaseName)-$($Env:VERSION)$($_.Extension)" }
+ Compress-Archive -Path $destination -DestinationPath "$($Env:GITHUB_WORKSPACE)\$($Env:SOLUTION_FILE)-$($Env:VERSION).zip" -Force
+ Write-Host "Output Contents post Zip"
+ Get-ChildItem -Path $destination
+ # Write the version to a file to be consumed by the push jobs
+ - name: Write Version
+ run: Write-Output "$($Env:VERSION)" | Out-File -FilePath "$($Env:GITHUB_HOME)\output\version.txt"
+ # Upload output files
+ - name: Upload Build Output
+ uses: actions/upload-artifact@v1
+ with:
+ name: Build
+ path: ./${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip
+ # Upload the Version file as an artifact
+ - name: Upload version.txt
+ uses: actions/upload-artifact@v1
+ with:
+ name: Version
+ path: ${{env.GITHUB_HOME}}\output\version.txt
+ # Upload the build package to the release
+ - name: Upload Release Package
+ id: upload_release
+ uses: actions/upload-release-asset@v1
+ with:
+ upload_url: ${{ github.event.release.upload_url }}
+ asset_path: ./${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip
+ asset_name: ${{ env.SOLUTION_FILE}}-${{ env.VERSION}}.zip
+ asset_content_type: application/zip
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ Push_Nuget_Package:
+ needs: Build_Project
+ runs-on: windows-2019
+ steps:
+ - name: Download Build Version Info
+ uses: actions/download-artifact@v1
+ with:
+ name: Version
+ - name: Set Version Number
+ shell: powershell
+ run: |
+ Get-ChildItem "./Version"
+ $version = Get-Content -Path ./Version/version.txt
+ Write-Host "Version: $version"
+ echo "VERSION=$version" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+ Remove-Item -Path ./Version/version.txt
+ Remove-Item -Path ./Version
+ - name: Download Build output
+ uses: actions/download-artifact@v1
+ with:
+ name: Build
+ path: ./
+ - name: Unzip Build file
+ run: |
+ Get-ChildItem .\*.zip | Expand-Archive -DestinationPath .\
+ Remove-Item -Path .\*.zip
+ - name: Copy Files to root & delete output directory
+ run: |
+ Remove-Item -Path .\* -Include @("*.cpz","*.md","*.cplz","*.json","*.dll","*.clz")
+ Get-ChildItem -Path .\output\* | Copy-Item -Destination .\
+ Remove-Item -Path .\output -Recurse
+ - name: Get nuget File
+ shell: powershell
+ run: |
+ $nuspec_file = Get-ChildItem *.nuspec -recurse
+ echo "NUSPEC_FILE=$($nuspec_file.BaseName)"| Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
+ - name: Add nuget.exe
+ uses: nuget/setup-nuget@v1
+ - name: Add Github Packages source
+ run: nuget sources add -name github -source https://nuget.pkg.github.com/pepperdash/index.json -username Pepperdash -password ${{ secrets.GITHUB_TOKEN }}
+ # Pushes to nuget, not needed unless publishing publicly
+ - name: Add nuget.org API Key
+ run: nuget setApiKey ${{ secrets.NUGET_API_KEY }}
+ - name: Create nuget package
+ run: nuget pack "./${{ env.NUSPEC_FILE}}.nuspec" -version ${{ env.VERSION }}
+ - name: Publish nuget package to Github registry
+ run: nuget push **/*.nupkg -source github
+ # Pushes to nuget, not needed unless publishing publicly >> this pushes package to nuget.org
+ - name: Publish nuget package to nuget.org
+ run: nuget push **/*.nupkg -Source https://api.nuget.org/v3/index.json
diff --git a/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateDevice.cs b/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateDevice.cs
index 837eb2c..20c99da 100644
--- a/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateDevice.cs
+++ b/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateDevice.cs
@@ -5,6 +5,8 @@ using Crestron.SimplSharpPro.DeviceSupport;
using PepperDash.Core;
using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.Bridges;
+using PepperDash_Essentials_Core.Queues;
+
namespace EssentialsPluginTemplate
{
@@ -24,6 +26,11 @@ namespace EssentialsPluginTemplate
///
private EssentialsPluginConfigObjectTemplate _config;
+ ///
+ /// Provides a queue and dedicated worker thread for processing feedback messages from a device.
+ ///
+ private GenericQueue ReceiveQueue;
+
#region IBasicCommunication Properties and Constructor. Remove if not needed.
// TODO [ ] Add, modify, remove properties and fields as needed for the plugin being developed
@@ -100,6 +107,8 @@ namespace EssentialsPluginTemplate
_config = config;
+ ReceiveQueue = new GenericQueue(key + "-rxqueue"); // If you need to set the thread priority, use one of the available overloaded constructors.
+
ConnectFeedback = new BoolFeedback(() => Connect);
OnlineFeedback = new BoolFeedback(() => _commsMonitor.IsOnline);
StatusFeedback = new IntFeedback(() => (int)_commsMonitor.Status);
@@ -149,7 +158,9 @@ namespace EssentialsPluginTemplate
private void Handle_LineRecieved(object sender, GenericCommMethodReceiveTextArgs args)
{
// TODO [ ] Implement method
- throw new System.NotImplementedException();
+
+ // Enqueues the message to be processed in a dedicated thread, but the specified method
+ ReceiveQueue.Enqueue(new ProcessStringMessage(args.Text, ProcessFeedbackMessage));
}
// TODO [ ] If not using an HEX/byte based API with no delimeter, delete the method below
@@ -166,6 +177,15 @@ namespace EssentialsPluginTemplate
throw new System.NotImplementedException();
}
+ ///
+ /// This method should perform any necessary parsing of feedback messages from the device
+ ///
+ ///
+ void ProcessFeedbackMessage(string message)
+ {
+
+ }
+
// TODO [ ] If not using an ACII based API, delete the properties below
///
diff --git a/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateFactory.cs b/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateFactory.cs
index 8cfa212..1798d19 100644
--- a/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateFactory.cs
+++ b/PDT.EssentialsPluginTemplate.EPI/EssentialsPluginTemplateFactory.cs
@@ -188,7 +188,7 @@ namespace EssentialsPluginTemplate
{
// Set the minimum Essentials Framework Version
// TODO [ ] Update the Essentials minimum framework version which this plugin has been tested against
- MinimumEssentialsFrameworkVersion = "1.6.4";
+ MinimumEssentialsFrameworkVersion = "1.7.5";
// In the constructor we initialize the list with the typenames that will build an instance of this device
// TODO [ ] Update the TypeNames for the plugin being developed
diff --git a/PDT.EssentialsPluginTemplate.EPI/PDT.EssentialsPluginTemplate.nuspec b/PDT.EssentialsPluginTemplate.EPI/PDT.EssentialsPluginTemplate.nuspec
new file mode 100644
index 0000000..7b99bed
--- /dev/null
+++ b/PDT.EssentialsPluginTemplate.EPI/PDT.EssentialsPluginTemplate.nuspec
@@ -0,0 +1,21 @@
+
+
+
+ PDT.EssentialsPluginTemplate
+ 2.0.2
+ Essentials Plugin Template
+ PepperDash Technologies
+ pepperdash
+ false
+ MIT
+ https://github.com/PepperDash/EssentialsPluginTemplate
+ Copyright 2022
+ This software iserves as a template for generating new Essentials-Compliant plugins
+ crestron 3series 4series samsung
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PDT.EssentialsPluginTemplate.EPI/Properties/AssemblyInfo.cs b/PDT.EssentialsPluginTemplate.EPI/Properties/AssemblyInfo.cs
index b31431b..e8f1480 100644
--- a/PDT.EssentialsPluginTemplate.EPI/Properties/AssemblyInfo.cs
+++ b/PDT.EssentialsPluginTemplate.EPI/Properties/AssemblyInfo.cs
@@ -3,6 +3,6 @@
[assembly: AssemblyTitle("EssentialsPluginTemplateEpi")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("EssentialsPluginTemplateEpi")]
-[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyVersion("1.0.0.*")]
diff --git a/packages.config b/packages.config
index fa05b32..2a12f4c 100644
--- a/packages.config
+++ b/packages.config
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file