Skip to content

Commit e8a8a20

Browse files
feat: first version, import from hack-gpon/hack-gpon.github.io#403 (migrated from WinForm to Avalonia)
0 parents  commit e8a8a20

23 files changed

Lines changed: 1575 additions & 0 deletions

.github/workflows/release.yml

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
name: Build and Release
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
tags:
8+
- 'v*'
9+
workflow_dispatch:
10+
inputs:
11+
version:
12+
description: 'Version tag (e.g., v1.0.0)'
13+
required: true
14+
default: 'v1.0.0'
15+
16+
env:
17+
DOTNET_VERSION: '8.0.x'
18+
PROJECT_PATH: 'HackGpon.MA5671A.Eeprom.Avalonia/HackGpon.MA5671A.Eeprom.Avalonia.csproj'
19+
20+
jobs:
21+
build:
22+
strategy:
23+
matrix:
24+
include:
25+
- os: windows-latest
26+
runtime: win-x64
27+
artifact_name: MA5671A-EEPROM-win-x64
28+
- os: ubuntu-latest
29+
runtime: linux-x64
30+
artifact_name: MA5671A-EEPROM-linux-x64
31+
- os: macos-latest
32+
runtime: osx-x64
33+
artifact_name: MA5671A-EEPROM-osx-x64
34+
- os: macos-latest
35+
runtime: osx-arm64
36+
artifact_name: MA5671A-EEPROM-osx-arm64
37+
38+
runs-on: ${{ matrix.os }}
39+
40+
steps:
41+
- name: Checkout repository
42+
uses: actions/checkout@v4
43+
44+
- name: Get version from tag
45+
id: get_version
46+
shell: bash
47+
run: |
48+
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
49+
VERSION="${{ github.event.inputs.version }}"
50+
VERSION="${VERSION#v}"
51+
IS_PRERELEASE="false"
52+
elif [[ "${{ github.ref }}" == refs/tags/v* ]]; then
53+
VERSION="${GITHUB_REF#refs/tags/}"
54+
VERSION="${VERSION#v}"
55+
IS_PRERELEASE="false"
56+
else
57+
# Beta build from main branch
58+
SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)
59+
VERSION="0.0.0-beta+${SHORT_SHA}"
60+
IS_PRERELEASE="true"
61+
fi
62+
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
63+
echo "IS_PRERELEASE=$IS_PRERELEASE" >> $GITHUB_OUTPUT
64+
65+
- name: Setup .NET
66+
uses: actions/setup-dotnet@v4
67+
with:
68+
dotnet-version: ${{ env.DOTNET_VERSION }}
69+
70+
- name: Restore dependencies
71+
run: dotnet restore ${{ env.PROJECT_PATH }}
72+
73+
- name: Build
74+
run: dotnet build ${{ env.PROJECT_PATH }} -c Release --no-restore -p:Version=${{ steps.get_version.outputs.VERSION }}
75+
76+
- name: Publish
77+
run: |
78+
dotnet publish ${{ env.PROJECT_PATH }} -c Release -r ${{ matrix.runtime }} --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:Version=${{ steps.get_version.outputs.VERSION }} -o ./publish/${{ matrix.artifact_name }}
79+
80+
- name: Zip artifacts (Windows)
81+
if: runner.os == 'Windows'
82+
run: Compress-Archive -Path ./publish/${{ matrix.artifact_name }}/* -DestinationPath ./publish/${{ matrix.artifact_name }}.zip
83+
84+
- name: Zip artifacts (Linux/macOS)
85+
if: runner.os != 'Windows'
86+
run: |
87+
cd ./publish
88+
zip -r ${{ matrix.artifact_name }}.zip ${{ matrix.artifact_name }}
89+
90+
- name: Upload artifacts
91+
uses: actions/upload-artifact@v4
92+
with:
93+
name: ${{ matrix.artifact_name }}
94+
path: ./publish/${{ matrix.artifact_name }}.zip
95+
96+
release:
97+
needs: build
98+
runs-on: ubuntu-latest
99+
permissions:
100+
contents: write
101+
102+
steps:
103+
- name: Download all artifacts
104+
uses: actions/download-artifact@v4
105+
with:
106+
path: ./artifacts
107+
108+
- name: Get version
109+
id: get_version
110+
run: |
111+
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
112+
VERSION="${{ github.event.inputs.version }}"
113+
VERSION="${VERSION#v}"
114+
IS_PRERELEASE="false"
115+
elif [[ "${{ github.ref }}" == refs/tags/v* ]]; then
116+
VERSION="${GITHUB_REF#refs/tags/}"
117+
VERSION="${VERSION#v}"
118+
IS_PRERELEASE="false"
119+
else
120+
SHORT_SHA=$(echo "${{ github.sha }}" | cut -c1-7)
121+
VERSION="0.0.0-beta+${SHORT_SHA}"
122+
IS_PRERELEASE="true"
123+
fi
124+
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
125+
echo "IS_PRERELEASE=$IS_PRERELEASE" >> $GITHUB_OUTPUT
126+
127+
- name: Create Release
128+
uses: softprops/action-gh-release@v2
129+
with:
130+
tag_name: ${{ steps.get_version.outputs.VERSION }}
131+
name: Release ${{ steps.get_version.outputs.VERSION }}
132+
draft: false
133+
prerelease: ${{ steps.get_version.outputs.IS_PRERELEASE }}
134+
generate_release_notes: true
135+
files: |
136+
./artifacts/**/*.zip
137+
env:
138+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
## Ignore Visual Studio temporary files, build results, and
2+
## files generated by popular Visual Studio add-ons.
3+
4+
# User-specific files
5+
tools/
6+
*.suo
7+
*.user
8+
*.userosscache
9+
*.sln.docstates
10+
11+
# User-specific files (MonoDevelop/Xamarin Studio)
12+
*.userprefs
13+
14+
# Build results
15+
[Dd]ebug/
16+
[Dd]ebugPublic/
17+
[Rr]elease/
18+
[Rr]eleases/
19+
x64/
20+
x86/
21+
bld/
22+
[Bb]in/
23+
[Oo]bj/
24+
[Ll]og/
25+
26+
# Visual Studio 2015 cache/options directory
27+
.vs/
28+
# Uncomment if you have tasks that create the project's static files in wwwroot
29+
#wwwroot/
30+
31+
# MSTest test Results
32+
[Tt]est[Rr]esult*/
33+
[Bb]uild[Ll]og.*
34+
35+
# NUNIT
36+
*.VisualState.xml
37+
TestResult.xml
38+
39+
# Build Results of an ATL Project
40+
[Dd]ebugPS/
41+
[Rr]eleasePS/
42+
dlldata.c
43+
44+
# DNX
45+
project.lock.json
46+
artifacts/
47+
48+
*_i.c
49+
*_p.c
50+
*_i.h
51+
*.ilk
52+
*.meta
53+
*.obj
54+
*.pch
55+
*.pdb
56+
*.pgc
57+
*.pgd
58+
*.rsp
59+
*.sbr
60+
*.tlb
61+
*.tli
62+
*.tlh
63+
*.tmp
64+
*.tmp_proj
65+
*.log
66+
*.vspscc
67+
*.vssscc
68+
.builds
69+
*.pidb
70+
*.svclog
71+
*.scc
72+
73+
# Chutzpah Test files
74+
_Chutzpah*
75+
76+
# Visual C++ cache files
77+
ipch/
78+
*.aps
79+
*.ncb
80+
*.opendb
81+
*.opensdf
82+
*.sdf
83+
*.cachefile
84+
*.VC.db
85+
*.VC.VC.opendb
86+
87+
# Visual Studio profiler
88+
*.psess
89+
*.vsp
90+
*.vspx
91+
*.sap
92+
93+
# TFS 2012 Local Workspace
94+
$tf/
95+
96+
# Guidance Automation Toolkit
97+
*.gpState
98+
99+
# ReSharper is a .NET coding add-in
100+
_ReSharper*/
101+
*.[Rr]e[Ss]harper
102+
*.DotSettings.user
103+
104+
# JustCode is a .NET coding add-in
105+
.JustCode
106+
107+
# TeamCity is a build add-in
108+
_TeamCity*
109+
110+
# DotCover is a Code Coverage Tool
111+
*.dotCover
112+
113+
# NCrunch
114+
_NCrunch_*
115+
.*crunch*.local.xml
116+
nCrunchTemp_*
117+
118+
# MightyMoose
119+
*.mm.*
120+
AutoTest.Net/
121+
122+
# Web workbench (sass)
123+
.sass-cache/
124+
125+
# Installshield output folder
126+
[Ee]xpress/
127+
128+
# DocProject is a documentation generator add-in
129+
DocProject/buildhelp/
130+
DocProject/Help/*.HxT
131+
DocProject/Help/*.HxC
132+
DocProject/Help/*.hhc
133+
DocProject/Help/*.hhk
134+
DocProject/Help/*.hhp
135+
DocProject/Help/Html2
136+
DocProject/Help/html
137+
138+
# Click-Once directory
139+
publish/
140+
141+
# Publish Web Output
142+
*.[Pp]ublish.xml
143+
*.azurePubxml
144+
# TODO: Comment the next line if you want to checkin your web deploy settings
145+
# but database connection strings (with potential passwords) will be unencrypted
146+
*.pubxml
147+
*.publishproj
148+
149+
# Microsoft Azure Web App publish settings. Comment the next line if you want to
150+
# checkin your Azure Web App publish settings, but sensitive information contained
151+
# in these scripts will be unencrypted
152+
PublishScripts/
153+
154+
# NuGet Packages
155+
*.nupkg
156+
# The packages folder can be ignored because of Package Restore
157+
**/packages/*
158+
# except build/, which is used as an MSBuild target.
159+
!**/packages/build/
160+
# Uncomment if necessary however generally it will be regenerated when needed
161+
#!**/packages/repositories.config
162+
# NuGet v3's project.json files produces more ignoreable files
163+
*.nuget.props
164+
*.nuget.targets
165+
166+
# Microsoft Azure Build Output
167+
csx/
168+
*.build.csdef
169+
170+
# Microsoft Azure Emulator
171+
ecf/
172+
rcf/
173+
174+
# Windows Store app package directories and files
175+
AppPackages/
176+
BundleArtifacts/
177+
Package.StoreAssociation.xml
178+
_pkginfo.txt
179+
180+
# Visual Studio cache files
181+
# files ending in .cache can be ignored
182+
*.[Cc]ache
183+
# but keep track of directories ending in .cache
184+
!*.[Cc]ache/
185+
186+
# Others
187+
ClientBin/
188+
~$*
189+
*~
190+
*.dbmdl
191+
*.dbproj.schemaview
192+
*.pfx
193+
*.publishsettings
194+
node_modules/
195+
orleans.codegen.cs
196+
197+
# Since there are multiple workflows, uncomment next line to ignore bower_components
198+
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
199+
#bower_components/
200+
201+
# RIA/Silverlight projects
202+
Generated_Code/
203+
204+
# Backup & report files from converting an old project file
205+
# to a newer Visual Studio version. Backup files are not needed,
206+
# because we have git ;-)
207+
_UpgradeReport_Files/
208+
Backup*/
209+
UpgradeLog*.XML
210+
UpgradeLog*.htm
211+
212+
# SQL Server files
213+
*.mdf
214+
*.ldf
215+
216+
# Business Intelligence projects
217+
*.rdl.data
218+
*.bim.layout
219+
*.bim_*.settings
220+
221+
# Microsoft Fakes
222+
FakesAssemblies/
223+
224+
# GhostDoc plugin setting file
225+
*.GhostDoc.xml
226+
227+
# Node.js Tools for Visual Studio
228+
.ntvs_analysis.dat
229+
230+
# Visual Studio 6 build log
231+
*.plg
232+
233+
# Visual Studio 6 workspace options file
234+
*.opt
235+
236+
# Visual Studio LightSwitch build output
237+
**/*.HTMLClient/GeneratedArtifacts
238+
**/*.DesktopClient/GeneratedArtifacts
239+
**/*.DesktopClient/ModelManifest.xml
240+
**/*.Server/GeneratedArtifacts
241+
**/*.Server/ModelManifest.xml
242+
_Pvt_Extensions
243+
244+
# Paket dependency manager
245+
.paket/paket.exe
246+
paket-files/
247+
248+
# FAKE - F# Make
249+
.fake/
250+
251+
# JetBrains Rider
252+
.idea/
253+
*.sln.iml
254+
255+
# Mac
256+
.DS_Store
31.3 KB
Binary file not shown.

0 commit comments

Comments
 (0)