Skip to content

Commit

Permalink
Test ci
Browse files Browse the repository at this point in the history
  • Loading branch information
BAndysc committed Nov 17, 2024
1 parent 453d8e1 commit 3e391d5
Show file tree
Hide file tree
Showing 13 changed files with 236 additions and 14 deletions.
31 changes: 31 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Build VB6

on:
push:
branches:
- '*'
pull_request:
branches:
- '*'

jobs:
build-linux-amd64:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'

- name: Run Tests
run: dotnet test AvaloniaVisualBasic.Runtime.Tests/AvaloniaVisualBasic.Runtime.Tests.csproj

- name: Build AvaloniaVisualBasic.Desktop (Linux)
run: dotnet build AvaloniaVisualBasic.Desktop -f net9.0 -o bin/linux/

- name: Build AvaloniaVisualBasic.Standalone (Linux)
run: dotnet build AvaloniaVisualBasic.Standalone -f net9.0 -o bin/linux/standalone/
142 changes: 142 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
name: Publish Release

on:
push:
tags:
- '**'

jobs:
build-windows-amd64:
runs-on: windows-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'

- name: Build and Publish AvaloniaVisualBasic.Desktop (Windows)
run: dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/windows/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Build and Publish AvaloniaVisualBasic.Standalone (Windows)
run: dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/windows/standalone/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Remove Debug Symbols (Windows)
run: |
find ./bin/windows -name "*.pdb" -type f -delete
find ./bin/windows/standalone -name "*.dll" -type f -delete
mv ./bin/windows/AvaloniaVisualBasic.Desktop.exe ./bin/windows/AvaloniaVisualBasic.exe
shell: bash

- name: Zip Windows Files
run: |
Compress-Archive -Path './bin/windows/*' -DestinationPath './bin/vb6-windows-amd64.zip'
shell: pwsh

- name: Upload Windows Artifacts
uses: actions/upload-artifact@v4
with:
name: windows-bin
path: ./bin/windows/

- name: Release
uses: softprops/action-gh-release@v2
with:
files: ./bin/vb6-windows-amd64.zip
token: ${{ secrets.PAT }}

build-linux-amd64:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'

- name: Build and Publish AvaloniaVisualBasic.Desktop (Linux)
run: dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/linux/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Build and Publish AvaloniaVisualBasic.Standalone (Linux)
run: dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/linux/standalone/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Remove Debug Symbols (Linux)
run: |
find ./bin/linux -name "*.dbg" -type f -delete
find ./bin/linux -name "*.pdb" -type f -delete
find ./bin/linux/standalone -name "*.so" -type f -delete
chmod +x ./bin/linux/AvaloniaVisualBasic.Desktop
chmod +x ./bin/linux/standalone/AvaloniaVisualBasic.Standalone
mv ./bin/linux/AvaloniaVisualBasic.Desktop ./bin/linux/AvaloniaVisualBasic
- name: Tar files
run: |
cd ./bin/linux
tar -cvf vb6-linux-amd64.tar *
gzip vb6-linux-amd64.tar
cd ../../
- name: Upload Linux Artifacts
uses: actions/upload-artifact@v4
with:
name: linux-bin
path: ./bin/linux/vb6-linux-amd64.tar.gz

- name: Release
uses: softprops/action-gh-release@v2
with:
files: ./bin/linux/vb6-linux-amd64.tar.gz
token: ${{ secrets.PAT }}

build-macos-arm64:
runs-on: macos-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'

- name: Build and Publish AvaloniaVisualBasic.Desktop (macOS)
run: dotnet publish AvaloniaVisualBasic.Desktop -f net9.0 -o bin/macos/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Build and Publish AvaloniaVisualBasic.Standalone (macOS)
run: dotnet publish AvaloniaVisualBasic.Standalone -f net9.0 -o bin/macos/standalone/ -p:PublishAot=true -p:PublishTrimmed=true

- name: Remove Debug Symbols (macOS)
run: |
find ./bin/macos -name "*.dbg" -type f -delete
find ./bin/macos -name "*.pdb" -type f -delete
find ./bin/macos -name "*.dSYM" -type d -exec rm -rf {} +
find ./bin/macos/standalone -name "*.dylib" -type f -delete
chmod +x ./bin/macos/AvaloniaVisualBasic.Desktop
chmod +x ./bin/macos/standalone/AvaloniaVisualBasic.Standalone
mv ./bin/macos/AvaloniaVisualBasic.Desktop ./bin/macos/AvaloniaVisualBasic
- name: Tar files
run: |
cd ./bin/macos
tar -cvf vb6-macos-arm64.tar *
gzip vb6-macos-arm64.tar
cd ../../
- name: Upload macOS Artifacts
uses: actions/upload-artifact@v4
with:
name: macos-bin
path: ./bin/macos/vb6-macos-arm64.tar

- name: Release
uses: softprops/action-gh-release@v2
with:
files: ./bin/macos/vb6-macos-arm64.tar.gz
token: ${{ secrets.PAT }}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<TargetFrameworks>$(DotNetVersionDesktop)</TargetFrameworks>
<Nullable>enable</Nullable>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<ApplicationIcon>vb6icon.ico</ApplicationIcon>
</PropertyGroup>

<PropertyGroup>
Expand All @@ -21,4 +22,10 @@
<ItemGroup>
<ProjectReference Include="..\AvaloniaVisualBasic\AvaloniaVisualBasic.csproj" />
</ItemGroup>

<ItemGroup>
<AvaloniaResource Include="..\AvaloniaVisualBasic\vb6icon.ico">
<Link>vb6icon.ico</Link>
</AvaloniaResource>
</ItemGroup>
</Project>
Binary file added AvaloniaVisualBasic.Desktop/vb6icon.ico
Binary file not shown.
3 changes: 3 additions & 0 deletions AvaloniaVisualBasic.Standalone/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using Avalonia.Platform;
using AvaloniaVisualBasic.Runtime;
using Classic.Avalonia.Theme;
using Classic.CommonControls.Dialogs;
Expand All @@ -23,6 +24,7 @@ public override void OnFrameworkInitializationCompleted()
if (Program.StartupForm != null)
{
VBLoader.RunForm(Program.StartupForm, default, out var window);
window.Icon = new WindowIcon(AssetLoader.Open(new Uri("avares://AvaloniaVisualBasic.Standalone/form.ico")));
desktop.MainWindow = window;
}
else
Expand All @@ -40,6 +42,7 @@ public override void OnFrameworkInitializationCompleted()
};
window.Content = msgBox;
desktop.MainWindow = window;
window.Icon = new WindowIcon(AssetLoader.Open(new Uri("avares://AvaloniaVisualBasic.Standalone/form.ico")));
msgBox.AcceptRequest += _ => window.Close();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
<ApplicationIcon>form.ico</ApplicationIcon>
</PropertyGroup>

<PropertyGroup>
Expand All @@ -33,5 +34,7 @@

<ItemGroup>
<AvaloniaResource Include="Resources\**\*"/>
<None Remove="form.ico" />
<AvaloniaResource Include="form.ico" />
</ItemGroup>
</Project>
Binary file added AvaloniaVisualBasic.Standalone/form.ico
Binary file not shown.
2 changes: 2 additions & 0 deletions AvaloniaVisualBasic.sln
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "meta", "meta", "{6151C731-2
README.md = README.md
LICENSE = LICENSE
build_cloudflare.sh = build_cloudflare.sh
.github\workflows\publish.yml = .github\workflows\publish.yml
.github\workflows\build.yml = .github\workflows\build.yml
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvaloniaVisualBasic.Standalone", "AvaloniaVisualBasic.Standalone\AvaloniaVisualBasic.Standalone.csproj", "{0C6BC133-E273-4716-83D1-4FD1B0C14E19}"
Expand Down
2 changes: 2 additions & 0 deletions AvaloniaVisualBasic/AvaloniaVisualBasic.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,7 @@
<None Remove="Icons\**\*.gif"/>
<AvaloniaResource Include="Icons\**\*.gif"/>
<AvaloniaResource Include="Resources\**\*"/>
<None Remove="vb6icon.ico" />
<AvaloniaResource Include="vb6icon.ico" />
</ItemGroup>
</Project>
8 changes: 6 additions & 2 deletions AvaloniaVisualBasic/IDE/WindowManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,9 @@ public async Task ShowWindow(IDialog dialog)
{
Content = dialog,
DataContext = dialog,
SizeToContent = SizeToContent.WidthAndHeight
SizeToContent = SizeToContent.WidthAndHeight,
ShowActivated = true,
WindowStartupLocation = WindowStartupLocation.CenterOwner
};

var lifetime = new TaskCompletionSource();
Expand Down Expand Up @@ -225,7 +227,9 @@ void DialogOnCloseRequested(bool result)
{
Content = dialog,
DataContext = dialog,
SizeToContent = SizeToContent.WidthAndHeight
SizeToContent = SizeToContent.WidthAndHeight,
ShowActivated = true,
WindowStartupLocation = WindowStartupLocation.CenterOwner
};
return await window.ShowDialog<bool>(GetTopWindow(desktop));
}
Expand Down
2 changes: 1 addition & 1 deletion AvaloniaVisualBasic/MainWindow.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="AvaloniaVisualBasic.MainWindow"
x:DataType="avaloniaVisualBasic:MainViewViewModel"
Icon="/Icons/vb6.gif"
Icon="/vb6icon.ico"
ClosingBehavior="OwnerAndChildWindows"
Title="{CompiledBinding Title}">
<avaloniaVisualBasic:MainView x:Name="MainView" />
Expand Down
50 changes: 39 additions & 11 deletions AvaloniaVisualBasic/Projects/ProjectService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,23 @@ public async Task EditProjectComponents(ProjectDefinition project)
}

public async Task MakeProject(ProjectDefinition projectDefinition)
{
try
{
await MakeProjectInternal(projectDefinition);
}
catch (OperationCanceledException)
{
throw;
}
catch (Exception e)
{
await windowManager.MessageBox("Fatal error while making the project:\n" + e.Message, icon: MessageBoxIcon.Information);
throw;
}
}

private async Task MakeProjectInternal(ProjectDefinition projectDefinition)
{
if (OperatingSystem.IsBrowser())
{
Expand All @@ -264,26 +281,35 @@ public async Task MakeProject(ProjectDefinition projectDefinition)
if (exePath == null)
throw new OperationCanceledException();

List<FileInfo> requiredNativeFiles;
List<FileInfo[]> requiredNativeFiles;

if (OperatingSystem.IsWindows())
{
requiredNativeFiles =
[
new FileInfo("standalone/av_libglesv2.dll"),
new FileInfo("standalone/AvaloniaVisualBasic.Standalone.exe"),
new FileInfo("standalone/libHarfBuzzSharp.dll"),
new FileInfo("standalone/libSkiaSharp.dll")
[new FileInfo("standalone/av_libglesv2.dll"), new FileInfo("av_libglesv2.dll")],
[new FileInfo("standalone/AvaloniaVisualBasic.Standalone.exe")],
[new FileInfo("standalone/libHarfBuzzSharp.dll"), new FileInfo("libHarfBuzzSharp.dll")],
[new FileInfo("standalone/libSkiaSharp.dll"), new FileInfo("libSkiaSharp.dll")]
];
}
else if (OperatingSystem.IsMacOS())
{
requiredNativeFiles =
[
new FileInfo("standalone/libAvaloniaNative.dylib"),
new FileInfo("standalone/AvaloniaVisualBasic.Standalone"),
new FileInfo("standalone/libHarfBuzzSharp.dylib"),
new FileInfo("standalone/libSkiaSharp.dylib")
[new FileInfo("standalone/libAvaloniaNative.dylib"), new FileInfo("libAvaloniaNative.dylib")],
[new FileInfo("standalone/AvaloniaVisualBasic.Standalone")],
[new FileInfo("standalone/libHarfBuzzSharp.dylib"), new FileInfo("libHarfBuzzSharp.dylib")],
[new FileInfo("standalone/libSkiaSharp.dylib"), new FileInfo("libSkiaSharp.dylib")]
];
}
else if (OperatingSystem.IsLinux())
{
requiredNativeFiles =
[
[new FileInfo("standalone/AvaloniaVisualBasic.Standalone")],
[new FileInfo("standalone/libHarfBuzzSharp.so"), new FileInfo("libHarfBuzzSharp.so")],
[new FileInfo("standalone/libSkiaSharp.so"), new FileInfo("libSkiaSharp.so")]
];
}
else
Expand All @@ -292,7 +318,7 @@ public async Task MakeProject(ProjectDefinition projectDefinition)
throw new OperationCanceledException();
}

if (requiredNativeFiles.Any(f => !f.Exists))
if (requiredNativeFiles.Any(files => files.All(f => !f.Exists)))
{
await windowManager.MessageBox("To Make Project, you need to build standalone runtime first. See the readme for help.", icon: MessageBoxIcon.Information);
throw new OperationCanceledException();
Expand Down Expand Up @@ -322,8 +348,10 @@ public async Task MakeProject(ProjectDefinition projectDefinition)
ZipFile.CreateFromDirectory(tempPath, Path.ChangeExtension(exePath, "dll")!);
Directory.Delete(tempPath, true);

foreach (var standaloneFile in requiredNativeFiles)
foreach (var standaloneFile in requiredNativeFiles.Select(f => f.FirstOrDefault(x => x.Exists)))
{
if (standaloneFile == null)
throw new Exception($"Required files doesn't exist, even tho it existed few lines above");
var fileName = standaloneFile.Name;
if (fileName.StartsWith("AvaloniaVisualBasic.Standalone"))
fileName = Path.GetFileName(exePath);
Expand Down
Binary file added AvaloniaVisualBasic/vb6icon.ico
Binary file not shown.

0 comments on commit 3e391d5

Please sign in to comment.