Code/ConnecterWorkspace.cs
using System;
using System.Collections.Generic;
namespace Sandbox;
public sealed record ConnecterWorkspace( string WorkspacePath, IReadOnlyList<ConnecterRepository> Repositories )
{
public bool HasRepositories => Repositories is { Count: > 0 };
}
public sealed record ConnecterRepository( string Name, string FullPath )
{
public static ConnecterRepository FromPath( string path )
{
var normalized = ConnecterPathUtility.NormalizeDirectoryPath( path );
var name = ConnecterPathUtility.GetFileName( normalized );
if ( string.IsNullOrWhiteSpace( name ) )
name = normalized;
return new ConnecterRepository( name, normalized );
}
}
public sealed record ConnecterAssetRecord(
string FullPath,
string RepositoryRoot,
string RepositoryName,
string RelativePath,
bool IsDirectory,
ConnecterAssetKind Kind,
string Warning = null )
{
public string Name => ConnecterPathUtility.GetFileName( FullPath );
public bool CanImport => ConnecterAssetClassifier.IsSupportedImport( Kind );
public static ConnecterAssetRecord FromPath( ConnecterRepository repository, string path, bool isDirectory )
{
var fullPath = ConnecterPathUtility.NormalizeDirectoryPath( path );
var relativePath = ConnecterPathUtility.GetRelativePath( repository.FullPath, fullPath );
var kind = ConnecterAssetClassifier.Classify( fullPath, isDirectory );
var warning = ConnecterAssetClassifier.GetWarning( fullPath, kind );
return new ConnecterAssetRecord( fullPath, repository.FullPath, repository.Name, relativePath, isDirectory, kind, warning );
}
}
public sealed record ConnecterImportOptions(
string ProjectAssetsPath,
string ImportRootName = "ConnecterImports",
bool CopyFolderDependencies = true,
bool OverwriteChangedFiles = true );
public sealed record ConnecterImportResult(
string SourcePath,
string ImportedSourcePath,
string PrimaryAssetPath,
bool Imported,
string Message );