Browse Source

Fixed some review comments

pull/2104/head
Nikita Tsukanov 8 years ago
parent
commit
3279cbd4e8
  1. 4
      src/Avalonia.Base/Avalonia.Base.csproj
  2. 5
      src/Avalonia.Base/Utilities/AvaloniaResourcesIndex.cs
  3. 3
      src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj
  4. 9
      src/Avalonia.Build.Tasks/BuildEngineErrorCode.cs
  5. 14
      src/Avalonia.Build.Tasks/Extensions.cs
  6. 11
      src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs
  7. 90
      src/Shared/PlatformSupport/AssetLoader.cs

4
src/Avalonia.Base/Avalonia.Base.csproj

@ -7,7 +7,9 @@
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Avalonia.Build.Tasks\Avalonia.Build.Tasks.csproj"/>
<ProjectReference Include="..\Avalonia.Build.Tasks\Avalonia.Build.Tasks.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="..\..\build\Base.props" />
<Import Project="..\..\build\Binding.props" />

5
src/Avalonia.Base/Utilities/AvaloniaResourcesIndex.cs

@ -9,10 +9,7 @@ using System.Runtime.Serialization.Json;
namespace Avalonia.Utilities
{
#if !BUILDTASK
public
#endif
static class AvaloniaResourcesIndexReaderWriter
public static class AvaloniaResourcesIndexReaderWriter
{
private const int LastKnownVersion = 1;
public static List<AvaloniaResourcesIndexEntry> Read(Stream stream)

3
src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj

@ -4,6 +4,7 @@
<TargetFramework>netstandard2.0</TargetFramework>
<BuildOutputTargetFolder>tools</BuildOutputTargetFolder>
<DefineConstants>$(DefineConstants);BUILDTASK</DefineConstants>
<Packable>false</Packable>
</PropertyGroup>
<ItemGroup>
@ -15,6 +16,4 @@
</Compile>
<PackageReference Include="Microsoft.Build.Framework" Version="15.1.548" />
</ItemGroup>
<!-- Disable built-in Pack target -->
<Target Name="Pack"/>
</Project>

9
src/Avalonia.Build.Tasks/BuildEngineErrorCode.cs

@ -0,0 +1,9 @@
namespace Avalonia.Build.Tasks
{
public enum BuildEngineErrorCode
{
InvalidXAML = 1,
DuplicateXClass = 2,
LegacyResmScheme = 3,
}
}

14
src/Avalonia.Build.Tasks/Extensions.cs

@ -4,16 +4,18 @@ namespace Avalonia.Build.Tasks
{
public static class Extensions
{
public static void LogError(this IBuildEngine engine, string file, string message)
static string FormatErrorCode(BuildEngineErrorCode code) => $"AVLN:{(int)code:0000}";
public static void LogError(this IBuildEngine engine, BuildEngineErrorCode code, string file, string message)
{
engine.LogErrorEvent(new BuildErrorEventArgs("Avalonia", "0000", file ?? "", 0, 0, 0, 0, message, "",
"Avalonia"));
engine.LogErrorEvent(new BuildErrorEventArgs("Avalonia", FormatErrorCode(code), file ?? "", 0, 0, 0, 0, message,
"", "Avalonia"));
}
public static void LogWarning(this IBuildEngine engine, string file, string message)
public static void LogWarning(this IBuildEngine engine, BuildEngineErrorCode code, string file, string message)
{
engine.LogWarningEvent(new BuildWarningEventArgs("Avalonia", "0000", file ?? "", 0, 0, 0, 0, message, "",
"Avalonia"));
engine.LogWarningEvent(new BuildWarningEventArgs("Avalonia", FormatErrorCode(code), file ?? "", 0, 0, 0, 0, message,
"", "Avalonia"));
}
}
}

11
src/Avalonia.Build.Tasks/GenerateAvaloniaResourcesTask.cs

@ -67,7 +67,7 @@ namespace Avalonia.Build.Tasks
List<Source> BuildResourceSources() => Resources.Select(r => new Source(r.ItemSpec, Root)).ToList();
void Pack(Stream output, List<Source> sources)
private void Pack(Stream output, List<Source> sources)
{
var offsets = new Dictionary<Source, int>();
var coffset = 0;
@ -94,7 +94,7 @@ namespace Avalonia.Build.Tasks
}
}
bool PreProcessXamlFiles(List<Source> sources)
private bool PreProcessXamlFiles(List<Source> sources)
{
var typeToXamlIndex = new Dictionary<string, string>();
@ -109,7 +109,7 @@ namespace Avalonia.Build.Tasks
}
catch(Exception e)
{
BuildEngine.LogError(s.SystemPath, "File doesn't contain valid XAML: " + e);
BuildEngine.LogError(BuildEngineErrorCode.InvalidXAML, s.SystemPath, "File doesn't contain valid XAML: " + e);
return false;
}
@ -118,7 +118,7 @@ namespace Avalonia.Build.Tasks
if (typeToXamlIndex.ContainsKey(info.XClass))
{
BuildEngine.LogError(s.SystemPath,
BuildEngine.LogError(BuildEngineErrorCode.DuplicateXClass, s.SystemPath,
$"Duplicate x:Class directive, {info.XClass} is already used in {typeToXamlIndex[info.XClass]}");
return false;
}
@ -140,7 +140,8 @@ namespace Avalonia.Build.Tasks
public bool Execute()
{
foreach(var r in EmbeddedResources.Where(r=>r.ItemSpec.EndsWith(".xaml")||r.ItemSpec.EndsWith(".paml")))
BuildEngine.LogWarning(r.ItemSpec, "XAML file is packed using legacy EmbeddedResource/resm scheme, relative URIs won't work");
BuildEngine.LogWarning(BuildEngineErrorCode.LegacyResmScheme, r.ItemSpec,
"XAML file is packed using legacy EmbeddedResource/resm scheme, relative URIs won't work");
var resources = BuildResourceSources();
if (!PreProcessXamlFiles(resources))

90
src/Shared/PlatformSupport/AssetLoader.cs

@ -296,60 +296,60 @@ namespace Avalonia.Shared.PlatformSupport
}
class SlicedStream : Stream
{
private readonly Stream _baseStream;
private readonly int _from;
public SlicedStream(Stream baseStream, int from, int length)
{
Length = length;
_baseStream = baseStream;
_from = from;
_baseStream.Position = from;
}
public override void Flush()
{
}
{
private readonly Stream _baseStream;
private readonly int _from;
public override int Read(byte[] buffer, int offset, int count)
{
return _baseStream.Read(buffer, offset, (int)Math.Min(count, Length - Position));
}
public SlicedStream(Stream baseStream, int from, int length)
{
Length = length;
_baseStream = baseStream;
_from = from;
_baseStream.Position = from;
}
public override void Flush()
{
}
public override long Seek(long offset, SeekOrigin origin)
{
if (origin == SeekOrigin.Begin)
Position = offset;
if (origin == SeekOrigin.End)
Position = _from + Length + offset;
if (origin == SeekOrigin.Current)
Position = Position + offset;
return Position;
}
public override int Read(byte[] buffer, int offset, int count)
{
return _baseStream.Read(buffer, offset, (int)Math.Min(count, Length - Position));
}
public override void SetLength(long value) => throw new NotSupportedException();
public override long Seek(long offset, SeekOrigin origin)
{
if (origin == SeekOrigin.Begin)
Position = offset;
if (origin == SeekOrigin.End)
Position = _from + Length + offset;
if (origin == SeekOrigin.Current)
Position = Position + offset;
return Position;
}
public override void Write(byte[] buffer, int offset, int count) => throw new NotSupportedException();
public override void SetLength(long value) => throw new NotSupportedException();
public override bool CanRead => true;
public override bool CanSeek => _baseStream.CanRead;
public override bool CanWrite => false;
public override long Length { get; }
public override long Position
{
get => _baseStream.Position - _from;
set => _baseStream.Position = value + _from;
}
public override void Write(byte[] buffer, int offset, int count) => throw new NotSupportedException();
protected override void Dispose(bool disposing)
{
if (disposing)
_baseStream.Dispose();
}
public override bool CanRead => true;
public override bool CanSeek => _baseStream.CanRead;
public override bool CanWrite => false;
public override long Length { get; }
public override long Position
{
get => _baseStream.Position - _from;
set => _baseStream.Position = value + _from;
}
public override void Close() => _baseStream.Close();
protected override void Dispose(bool disposing)
{
if (disposing)
_baseStream.Dispose();
}
public override void Close() => _baseStream.Close();
}
private class AssemblyDescriptor
{
public AssemblyDescriptor(Assembly assembly)

Loading…
Cancel
Save