Beispiel #1
0
        private Manifest TransformManifestToPackedPackageManifest(Manifest manifest)
        {
            ManifestMetadata manifestMetadata = manifest.Metadata;

            // Update Id
            string _packageNamePrefix = PackedPackageNamePrefix != null ? PackedPackageNamePrefix : _defaultPackedPackagePrefix;

            manifestMetadata.Id = $"{_packageNamePrefix}.{manifestMetadata.Id}";

            // Update dependencies
            List <PackageDependencyGroup> packedPackageDependencyGroups = new List <PackageDependencyGroup>();

            foreach (var dependencyGroup in manifestMetadata.DependencyGroups)
            {
                List <NuGet.Packaging.Core.PackageDependency> packages = new List <NuGet.Packaging.Core.PackageDependency>();
                foreach (var dependency in dependencyGroup.Packages)
                {
                    NuGet.Packaging.Core.PackageDependency package = new NuGet.Packaging.Core.PackageDependency($"{_packageNamePrefix}.{dependency.Id}", dependency.VersionRange, dependency.Include, dependency.Exclude);
                    packages.Add(package);
                }
                PackageDependencyGroup packageDependencyGroup = new PackageDependencyGroup(dependencyGroup.TargetFramework, packages);
                packedPackageDependencyGroups.Add(packageDependencyGroup);
            }
            manifestMetadata.DependencyGroups = packedPackageDependencyGroups;

            // Update runtime.json
            List <ManifestFile> manifestFiles = new List <ManifestFile>();

            foreach (ManifestFile file in manifest.Files)
            {
                string fileName = file.Source;
                if (Path.GetFileName(fileName) == "runtime.json" && file.Target == "")
                {
                    string packedPackageSourcePath = Path.Combine(Path.GetDirectoryName(fileName), string.Join(".", _packageNamePrefix, Path.GetFileName(fileName)));
                    file.Source = File.Exists(packedPackageSourcePath) ? packedPackageSourcePath : fileName;
                    file.Target = "runtime.json";
                }
                manifestFiles.Add(file);
            }
            Manifest packedPackageManifest = new Manifest(manifestMetadata, manifestFiles);

            return(manifest);
        }
Beispiel #2
0
        /// <summary>
        /// Creates a Nuget package from a SmartInk Package
        /// </summary>
        /// <param name="package">Package to use for Nuget creation</param>
        /// <param name="destination">File handle for saving the Nuget package</param>
        public async Task PublishPackageAsync(ISmartInkPackage package, IStorageFile destination)
        {
            if (package == null)
            {
                throw new ArgumentNullException($"{nameof(package)} cannot be null");
            }


            if (destination == null)
            {
                throw new ArgumentNullException($"{nameof(destination)} cannot be null");
            }


            Debug.WriteLine($"Publish package");
            ManifestMetadata metadata = new ManifestMetadata()
            {
                Title                  = $"{package.Name}",
                Owners                 = new string[] { "jabj" },
                Authors                = new string[] { "mauvo" },
                Version                = new NuGet.Versioning.NuGetVersion(new Version(package.Version)),
                Id                     = $"SmartInk.{package.Name}",
                Description            = $"{package.Description}",
                MinClientVersionString = "3.3.0"
            };

            NuGet.Frameworks.NuGetFramework targetFramework = new NuGet.Frameworks.NuGetFramework(new NuGet.Frameworks.NuGetFramework(".NETStandard2.0"));
            IEnumerable <NuGet.Packaging.Core.PackageDependency> packages = new NuGet.Packaging.Core.PackageDependency[] { new NuGet.Packaging.Core.PackageDependency("NETStandard.Library", new NuGet.Versioning.VersionRange(new NuGet.Versioning.NuGetVersion(2, 0, 0))) };
            var dependencyGroup = new PackageDependencyGroup(targetFramework, packages);

            metadata.DependencyGroups = new PackageDependencyGroup[] { dependencyGroup };
            PackageBuilder builder = new PackageBuilder();

            builder.Populate(metadata);

            builder.ContentFiles.Add(new ManifestContentFiles()
            {
                Include = $"**/SmartInkPackages/*", CopyToOutput = "true", Flatten = "false", BuildAction = "None"
            });
            builder.ContentFiles.Add(new ManifestContentFiles()
            {
                Include = $"**/SmartInkPackages/{package.Name}/*", CopyToOutput = "true", Flatten = "false", BuildAction = "None"
            });
            builder.ContentFiles.Add(new ManifestContentFiles()
            {
                Include = $"**/SmartInkPackages/{package.Name}/Model/*", CopyToOutput = "true", Flatten = "false", BuildAction = "None"
            });
            builder.ContentFiles.Add(new ManifestContentFiles()
            {
                Include = $"**/SmartInkPackages/{package.Name}/Icons/*", CopyToOutput = "true", Flatten = "false", BuildAction = "None"
            });

            var root = $"{_provider.RootFolderPath}\\{package.Name}\\";

            List <ManifestFile> manifestFiles = new List <ManifestFile>();

            var rootFolder = await StorageFolder.GetFolderFromPathAsync(root);


            var files = await rootFolder.GetFilesAsync(Windows.Storage.Search.CommonFileQuery.OrderByName);

            foreach (var file in files)
            {
                ManifestFile manifestFile = new ManifestFile();
                manifestFile.Source = file.Path;
                manifestFile.Target = $"contentFiles\\cs\\uap10.0\\SmartInkPackages{file.Path.Replace(_provider.RootFolderPath, "")}";
                manifestFiles.Add(manifestFile);
            }

            builder.PopulateFiles(root, manifestFiles);


            using (var fileaccess = await destination.OpenAsync(FileAccessMode.ReadWrite))
            {
                Debug.WriteLine($"Publish package: {builder.ToString()}");
                var stream = fileaccess.AsStreamForWrite();
                builder.Save(stream);
                await stream.FlushAsync();
            }
        }
 public PackageDependencyMetadata(NuGet.Packaging.Core.PackageDependency serverData)
 {
     Id    = serverData.Id;
     Range = serverData.VersionRange;
 }
Beispiel #4
0
 public NugetDependency(NuGet.Packaging.Core.PackageDependency d, bool forceMinVersion)
 {
     PackageDependency = d;
     ForceMinVersion   = forceMinVersion;
 }
 public static NuGet.LibraryModel.LibraryDependency GetLibraryDependencyFromNuspec(NuGet.Packaging.Core.PackageDependency dependency)
 {
     throw null;
 }