Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DYN-6901 Pm - publish version preview fix #15360

Merged
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
22ce4ab
initial tests
dnenov Jun 5, 2024
dba6392
upper case file extension
dnenov Jun 12, 2024
5fd407c
more caps extensions fixes
dnenov Jun 12, 2024
cce52b4
custom definition files delete
dnenov Jun 14, 2024
2a73f09
Merge remote-tracking branch 'upstream/master' into pm-retainfolderst…
dnenov Jun 14, 2024
949ddce
Merge remote-tracking branch 'upstream/master' into pm-retainfolderst…
dnenov Jun 24, 2024
ac2de63
content structure rework
dnenov Jun 24, 2024
5e0e775
major rework
dnenov Jun 26, 2024
b560ebc
preview dyf files when publishing version
dnenov Jun 28, 2024
1d3759b
revert pkg json removal changes
dnenov Jun 28, 2024
1a787d1
remove redundant TODO comment
dnenov Jun 28, 2024
ff4b76e
Merge branch 'pm-retainfolderstructure-updates' into pm-retainfolders…
dnenov Jun 28, 2024
06eb57a
Merge remote-tracking branch 'upstream/master' into pm-retainfolderst…
dnenov Jun 28, 2024
9a2565c
fixing 'ghost' custom nodes preview
dnenov Jun 28, 2024
a518450
Merge remote-tracking branch 'upstream/master' into pm-retrainfolders…
dnenov Jun 28, 2024
5a56611
Merge branch 'pm-retainfolderstructure-updates-rework' into pm-retrai…
dnenov Jun 28, 2024
4d35d12
Merge remote-tracking branch 'upstream/master' into pm-retrainfolders…
dnenov Jul 11, 2024
6afc821
Merge remote-tracking branch 'upstream/master' into pm-retrainfolders…
dnenov Jul 22, 2024
295ae29
revert change to skip pkg.json file creation
dnenov Jul 22, 2024
1d0efc1
crosswire with other PRs
dnenov Jul 22, 2024
89d4483
tests fix
dnenov Jul 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
187 changes: 99 additions & 88 deletions src/DynamoCoreWpf/ViewModels/PackageManager/PublishPackageViewModel.cs

Large diffs are not rendered by default.

7 changes: 5 additions & 2 deletions src/DynamoPackages/Package.cs
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,8 @@ public static Package FromJson(string headerPath, ILogger logger)

}

//TODO: why are we skipping backup files and folders, any particular reason?
//TODO: can we remove the part where we skip the original pkg.json file? This is handled later anyways
public void EnumerateAdditionalFiles()
{
if (String.IsNullOrEmpty(RootDirectory) || !Directory.Exists(RootDirectory)) return;
Expand All @@ -303,8 +305,9 @@ public void EnumerateAdditionalFiles()
RootDirectory,
"*",
SearchOption.AllDirectories)
.Where(x => !x.ToLower().EndsWith(".dyf") && !x.ToLower().EndsWith(".dll") &&
!x.ToLower().EndsWith("pkg.json") && !x.ToLower().EndsWith(".backup") &&
.Where(x => !x.ToLower().EndsWith(".dyf") && !x.ToLower().EndsWith(".dll")
//&& !x.ToLower().EndsWith("pkg.json")
&& !x.ToLower().EndsWith(".backup") &&
!x.ToLower().Contains(backupFolderName))
.Select(x => new PackageFileInfo(RootDirectory, x));

Expand Down
53 changes: 34 additions & 19 deletions src/DynamoPackages/PackageDirectoryBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@
public interface IPackageDirectoryBuilder
{
IDirectoryInfo BuildDirectory(Package packages, string packagesDirectory, IEnumerable<string> files, IEnumerable<string> markdownfiles);
IDirectoryInfo BuildRetainDirectory(Package package, string packagesDirectory, IEnumerable<IEnumerable<string>> contentFiles, IEnumerable<string> markdownFiles);
IDirectoryInfo BuildRetainDirectory(Package package, string packagesDirectory, IEnumerable<string> roots, IEnumerable<IEnumerable<string>> contentFiles, IEnumerable<string> markdownFiles);
}

/// <summary>
/// This class provides all of the tools to build a Package directory of the correct structure.
/// </summary>
internal class PackageDirectoryBuilder : IPackageDirectoryBuilder

Check failure on line 20 in src/DynamoPackages/PackageDirectoryBuilder.cs

View workflow job for this annotation

GitHub Actions / analyze

'PackageDirectoryBuilder' does not implement interface member 'IPackageDirectoryBuilder.BuildRetainDirectory(Package, string, IEnumerable<string>, IEnumerable<IEnumerable<string>>, IEnumerable<string>)'
{
internal const string CustomNodeDirectoryName = "dyf";
internal const string BinaryDirectoryName = "bin";
Expand All @@ -33,7 +33,7 @@
/// </summary>
/// <param name="fileSystem">For moving files around</param>
/// <param name="pathRemapper">For modifying custom node paths</param>
internal PackageDirectoryBuilder(IFileSystem fileSystem, IPathRemapper pathRemapper)
internal PackageDirectoryBuilder(IFileSystem fileSystem, IPathRemapper pathRemapper)
{
this.fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
this.pathRemapper = pathRemapper ?? throw new ArgumentNullException(nameof(pathRemapper));
Expand All @@ -57,7 +57,7 @@
WritePackageHeader(package, rootDir);
RemoveUnselectedFiles(contentFiles, rootDir);
CopyFilesIntoPackageDirectory(contentFiles, markdownFiles, dyfDir, binDir, extraDir, docDir);
RemoveDyfFiles(contentFiles, dyfDir);
RemoveDyfFiles(contentFiles, dyfDir);

RemapCustomNodeFilePaths(contentFiles, dyfDir.FullName);

Expand All @@ -74,19 +74,18 @@
/// <returns></returns>
public IDirectoryInfo BuildRetainDirectory(Package package, string packagesDirectory, IEnumerable<IEnumerable<string>> contentFiles, IEnumerable<string> markdownFiles)
{

var rootPath = Path.Combine(packagesDirectory, package.Name);
var rootDir = fileSystem.TryCreateDirectory(rootPath);
var sourcePackageDir = package.RootDirectory;
package.RootDirectory = rootDir.FullName;

var dyfFiles = new List<string>();

RemoveUnselectedFiles(contentFiles.SelectMany(files => files).ToList(), rootDir);
CopyFilesIntoRetainedPackageDirectory(contentFiles, markdownFiles, sourcePackageDir, rootDir, out dyfFiles);
RemoveRetainDyfFiles(contentFiles.SelectMany(files => files).ToList(), dyfFiles);

CopyFilesIntoRetainedPackageDirectory(contentFiles, markdownFiles, roots, rootDir, out dyfFiles);
RemoveRetainDyfFiles(contentFiles.SelectMany(files => files).ToList(), dyfFiles);
RemapRetainCustomNodeFilePaths(contentFiles.SelectMany(files => files).ToList(), dyfFiles);

WritePackageHeader(package, rootDir);

return rootDir;
Expand Down Expand Up @@ -114,7 +113,6 @@
{
foreach (var func in filePaths.Where(x => x.EndsWith(".dyf")))
{
//var remapLocation = dyfFiles.First(x => Path.GetDirectoryName(x).Equals(Path.GetDirectoryName(func)));
var remapLocation = dyfFiles.First(x =>
{
var p1 = Path.GetFileName(Path.GetDirectoryName(x));
Expand Down Expand Up @@ -173,9 +171,9 @@
}
}

private void FormPackageDirectory(string packageDirectory, string packageName,
out IDirectoryInfo root, out IDirectoryInfo dyfDir,
out IDirectoryInfo binDir, out IDirectoryInfo extraDir,
private void FormPackageDirectory(string packageDirectory, string packageName,
out IDirectoryInfo root, out IDirectoryInfo dyfDir,
out IDirectoryInfo binDir, out IDirectoryInfo extraDir,
out IDirectoryInfo docDir)
{
var rootPath = Path.Combine(packageDirectory, packageName);
Expand Down Expand Up @@ -221,7 +219,11 @@
fileSystem.WriteAllText(headerPath, pkgHeaderStr);
}

internal void CopyFilesIntoRetainedPackageDirectory(IEnumerable<IEnumerable<string>> contentFiles, IEnumerable<string> markdownFiles, string sourcePackageDir, IDirectoryInfo rootDir, out List<string> dyfFiles)
internal void CopyFilesIntoRetainedPackageDirectory(IEnumerable<IEnumerable<string>> contentFiles,
IEnumerable<string> markdownFiles,
IEnumerable<string> roots,
IDirectoryInfo rootDir,
out List<string> dyfFiles)
{
dyfFiles = new List<string>();

Expand All @@ -248,10 +250,11 @@
var destPath = Path.Combine(rootDir.FullName, relativePath.TrimStart('\\'));

// We are already creating the pkg.json file ourselves, so skip it, also skip if we are copying the file to itself.
if (destPath.Equals(Path.Combine(rootDir.FullName, "pkg.json")) || destPath.Equals(file))
{
continue;
}
// Should we stop creating the pkg.json on behalf of the user? If they are using this feature, they probably want to handle this as well
//if (destPath.Equals(Path.Combine(rootDir.FullName, "pkg.json")) || destPath.Equals(file))
//{
// continue;
//}

if (fileSystem.FileExists(destPath))
{
Expand All @@ -260,7 +263,7 @@

if (!Directory.Exists(Path.GetDirectoryName(destPath)))
{
Directory.CreateDirectory(Path.GetDirectoryName(destPath));
Directory.CreateDirectory(Path.GetDirectoryName(destPath));
}

fileSystem.CopyFile(file, destPath);
Expand All @@ -271,6 +274,9 @@
}
}
}



// All files under Markdown directory do not apply to the rule above,
// because they may fall into extra folder instead of docs folder,
// currently there is on obvious way to filter them properly only based on path string.
Expand All @@ -288,6 +294,15 @@
}
}

private static string RemoveFirstFolder(string path)
{
var parts = path.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);

if (parts.Length > 1) return "\\" + String.Join("\\", parts, 1, parts.Length - 1);

return "\\" + parts[0];
}

internal void CopyFilesIntoPackageDirectory(IEnumerable<string> files, IEnumerable<string> markdownFiles,
IDirectoryInfo dyfDir, IDirectoryInfo binDir,
IDirectoryInfo extraDir, IDirectoryInfo docDir)
Expand Down Expand Up @@ -356,7 +371,7 @@
#endregion

#region Public Static Utility Methods

public static bool IsXmlDocFile(string path, IEnumerable<string> files)
{
if (!path.ToLower().EndsWith(".xml")) return false;
Expand Down
10 changes: 5 additions & 5 deletions src/DynamoPackages/PackageManagerClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -226,27 +226,27 @@ private bool ExecuteTermsOfUseCall(bool queryAcceptanceStatus)
}, false);
}

internal PackageUploadHandle PublishAsync(Package package, object files, IEnumerable<string> markdownFiles, bool isNewVersion, bool retainFolderStructure)
internal PackageUploadHandle PublishAsync(Package package, object files, IEnumerable<string> markdownFiles, bool isNewVersion, IEnumerable<string> roots, bool retainFolderStructure)
{
var packageUploadHandle = new PackageUploadHandle(PackageUploadBuilder.NewRequestBody(package));

Task.Factory.StartNew(() =>
{
Publish(package, files, markdownFiles, isNewVersion, packageUploadHandle, retainFolderStructure);
Publish(package, files, markdownFiles, isNewVersion, packageUploadHandle, roots, retainFolderStructure);
});

return packageUploadHandle;
}

internal void Publish(Package package, object files, IEnumerable<string> markdownFiles, bool isNewVersion, PackageUploadHandle packageUploadHandle, bool retainFolderStructure = false)
internal void Publish(Package package, object files, IEnumerable<string> markdownFiles, bool isNewVersion, PackageUploadHandle packageUploadHandle, IEnumerable<string> roots, bool retainFolderStructure = false)
{
try
{
ResponseBody ret = null;
if (isNewVersion)
{
var pkg = retainFolderStructure ?
uploadBuilder.NewPackageVersionRetainUpload(package, packageUploadDirectory, (IEnumerable<IEnumerable<string>>)files, markdownFiles,
uploadBuilder.NewPackageVersionRetainUpload(package, packageUploadDirectory, roots, (IEnumerable<IEnumerable<string>>)files, markdownFiles,
packageUploadHandle)
: uploadBuilder.NewPackageVersionUpload(package, packageUploadDirectory, (IEnumerable<string>)files, markdownFiles,
packageUploadHandle);
Expand All @@ -256,7 +256,7 @@ internal void Publish(Package package, object files, IEnumerable<string> markdow
else
{
var pkg = retainFolderStructure ?
uploadBuilder.NewPackageRetainUpload(package, packageUploadDirectory, (IEnumerable<IEnumerable<string>>)files, markdownFiles,
uploadBuilder.NewPackageRetainUpload(package, packageUploadDirectory, roots, (IEnumerable<IEnumerable<string>>)files, markdownFiles,
packageUploadHandle)
: uploadBuilder.NewPackageUpload(package, packageUploadDirectory, (IEnumerable<string>)files, markdownFiles,
packageUploadHandle);
Expand Down
16 changes: 8 additions & 8 deletions src/DynamoPackages/PackageUploadBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ public interface IPackageUploadBuilder
PackageUpload NewPackageUpload(Package package, string packagesDirectory, IEnumerable<string> files, IEnumerable<string> markdownFiles,
PackageUploadHandle handle);

PackageUpload NewPackageRetainUpload(Package package, string packagesDirectory, IEnumerable<IEnumerable<string>> files, IEnumerable<string> markdownFiles,
PackageUpload NewPackageRetainUpload(Package package, string packagesDirectory, IEnumerable<string> roots, IEnumerable<IEnumerable<string>> files, IEnumerable<string> markdownFiles,
PackageUploadHandle handle);

PackageVersionUpload NewPackageVersionUpload(Package package, string packagesDirectory,
IEnumerable<string> files, IEnumerable<string> markdownFiles, PackageUploadHandle handle);

PackageVersionUpload NewPackageVersionRetainUpload(Package package, string packagesDirectory,
PackageVersionUpload NewPackageVersionRetainUpload(Package package, string packagesDirectory, IEnumerable<string> roots,
IEnumerable<IEnumerable<string>> files, IEnumerable<string> markdownFiles, PackageUploadHandle handle);
}

Expand Down Expand Up @@ -94,15 +94,15 @@ public PackageUpload NewPackageUpload(Package package, string packagesDirectory,
/// <param name="handle"></param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
public PackageUpload NewPackageRetainUpload(Package package, string packagesDirectory, IEnumerable<IEnumerable<string>> files, IEnumerable<string> markdownFiles, PackageUploadHandle handle)
public PackageUpload NewPackageRetainUpload(Package package, string packagesDirectory, IEnumerable<string> roots, IEnumerable<IEnumerable<string>> files, IEnumerable<string> markdownFiles, PackageUploadHandle handle)
{
if (package == null) throw new ArgumentNullException("package");
if (packagesDirectory == null) throw new ArgumentNullException("packagesDirectory");
if (files == null) throw new ArgumentNullException("files");
if (handle == null) throw new ArgumentNullException("handle");

return new PackageUpload(NewRequestBody(package),
BuildAndZip(package, packagesDirectory, files, markdownFiles, handle).Name);
BuildAndZip(package, packagesDirectory, roots, files, markdownFiles, handle).Name);
}

/// <summary>
Expand Down Expand Up @@ -135,14 +135,14 @@ public PackageVersionUpload NewPackageVersionUpload(Package package, string pack
/// <param name="handle"></param>
/// <returns></returns>
/// <exception cref="ArgumentNullException"></exception>
public PackageVersionUpload NewPackageVersionRetainUpload(Package package, string packagesDirectory, IEnumerable<IEnumerable<string>> files, IEnumerable<string> markdownFiles, PackageUploadHandle handle)
public PackageVersionUpload NewPackageVersionRetainUpload(Package package, string packagesDirectory, IEnumerable<string> roots, IEnumerable<IEnumerable<string>> files, IEnumerable<string> markdownFiles, PackageUploadHandle handle)
{
if (package == null) throw new ArgumentNullException("package");
if (packagesDirectory == null) throw new ArgumentNullException("packagesDirectory");
if (files == null) throw new ArgumentNullException("files");
if (handle == null) throw new ArgumentNullException("handle");

return new PackageVersionUpload(NewRequestBody(package), BuildAndZip(package, packagesDirectory, files, markdownFiles, handle).Name);
return new PackageVersionUpload(NewRequestBody(package), BuildAndZip(package, packagesDirectory, roots, files, markdownFiles, handle).Name);
}

#endregion
Expand All @@ -160,11 +160,11 @@ private IFileInfo BuildAndZip(Package package, string packagesDirectory, IEnumer
return Zip(dir);
}

private IFileInfo BuildAndZip(Package package, string packagesDirectory, IEnumerable<IEnumerable<string>> files, IEnumerable<string> markdownFiles, PackageUploadHandle handle)
private IFileInfo BuildAndZip(Package package, string packagesDirectory, IEnumerable<string> roots, IEnumerable<IEnumerable<string>> files, IEnumerable<string> markdownFiles, PackageUploadHandle handle)
{
handle.UploadState = PackageUploadHandle.State.Copying;

var dir = builder.BuildRetainDirectory(package, packagesDirectory, files, markdownFiles);
var dir = builder.BuildRetainDirectory(package, packagesDirectory, roots, files, markdownFiles);

handle.UploadState = PackageUploadHandle.State.Compressing;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2441,7 +2441,7 @@ public void AssertPublishNewPackageVersion_SuccessfulForLoadedPackages()
// Assert
Assert.DoesNotThrow(() =>
{
m.NewPackageVersionRetainUpload(package, publishPath, updatedFiles, Enumerable.Empty<string>(), handle);
m.NewPackageVersionRetainUpload(package, publishPath, Enumerable.Empty<string>(), updatedFiles, Enumerable.Empty<string>(), handle);
});
Assert.AreNotEqual(PackageUploadHandle.State.Error, handle.UploadState);

Expand Down
Loading
Loading