Exemple #1
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 SmartInkPackageViewModel(ISmartInkPackage package)
 {
     BasePackage = package;
 }