コード例 #1
0
        public void Invoke(PackageManifestBuilder manifestBuilder)
        {
            var suggestion = manifestBuilder.Name.Value?.ToPackageId();
            var id         = _prompt.Request("Package ID", suggestion);

            manifestBuilder.Id.Add(id.ToPackageId(), Confidence.Authoritative, this);
        }
コード例 #2
0
        public void Copyright()
        {
            Assert.Null(Builder.Manifest.Copyright);

            PackageManifestBuilder builder = Builder.Copyright("Copyright");

            Assert.Same(builder, Builder);
            Assert.Equal("Copyright", Builder.Manifest.Copyright);
        }
コード例 #3
0
        public void Version()
        {
            Assert.Null(Builder.Manifest.Version);

            PackageManifestBuilder builder = Builder.Version("Version");

            Assert.Same(builder, Builder);
            Assert.Equal("Version", Builder.Manifest.Version);
        }
コード例 #4
0
        public void Publisher()
        {
            Assert.Null(Builder.Manifest.Publisher);

            PackageManifestBuilder builder = Builder.Publisher("Publisher");

            Assert.Same(builder, Builder);
            Assert.Equal("Publisher", Builder.Manifest.Publisher);
        }
コード例 #5
0
        public void Namespace()
        {
            Assert.Null(Builder.Manifest.Namespace);

            PackageManifestBuilder builder = Builder.Namespace("Namespace");

            Assert.Same(builder, Builder);
            Assert.Equal("Namespace", Builder.Manifest.Namespace);
        }
コード例 #6
0
        public void License()
        {
            Assert.Null(Builder.Manifest.License);

            PackageManifestBuilder builder = Builder.License("License");

            Assert.Same(builder, Builder);
            Assert.Equal("License", Builder.Manifest.License);
        }
コード例 #7
0
        public void Description()
        {
            Assert.Null(Builder.Manifest.Description);

            PackageManifestBuilder builder = Builder.Description("Description");

            Assert.Same(builder, Builder);
            Assert.Equal("Description", Builder.Manifest.Description);
        }
コード例 #8
0
        public void Url()
        {
            Assert.Null(Builder.Manifest.Url);

            PackageManifestBuilder builder = Builder.Url("Url");

            Assert.Same(builder, Builder);
            Assert.Equal("Url", Builder.Manifest.Url);
        }
コード例 #9
0
        public void Signature()
        {
            Assert.Null(Builder.Manifest.Signature);

            PackageManifestSignature signature = new PackageManifestSignature();
            PackageManifestBuilder   builder   = Builder.Signature(signature);

            Assert.Same(builder, Builder);
            Assert.Same(signature, Builder.Manifest.Signature);
        }
コード例 #10
0
        public void Files()
        {
            Assert.Null(Builder.Manifest.Files);

            IList <PackageManifestFile> files   = new List <PackageManifestFile>();
            PackageManifestBuilder      builder = Builder.Files(files);

            Assert.Same(builder, Builder);
            Assert.Same(files, Builder.Manifest.Files);
        }
コード例 #11
0
        public void Invoke(PackageManifestBuilder manifest)
        {
            var tag = _prompt.Request("Tag", PackageManifest.LATEST_TAG)?.ToLowerInvariant();

            if (TagHelper.IsLatest(tag))
            {
                tag = null;
            }

            manifest.Tag = tag;
        }
コード例 #12
0
ファイル: SubmissionClient.cs プロジェクト: rbs-pli/appget
        public async Task <SubmissionResponse> Submit(PackageManifestBuilder builder)
        {
            var req = new HttpRequestMessage(HttpMethod.Post, "https://octobot.appget.net/pr")
            {
                Content = new StringContent(Json.Serialize(builder), Encoding.UTF8, "application/json")
            };

            var resp = await _httpClient.SendAsync(req, TimeSpan.FromSeconds(30));

            return(await resp.Deserialize <SubmissionResponse>());
        }
コード例 #13
0
        public string remove_update_download_segments(string url)
        {
            var manifestBuilder = new PackageManifestBuilder();

            manifestBuilder.Installers.Add(new InstallerBuilder {
                Location = url
            });

            Subject.Invoke(manifestBuilder);

            return(manifestBuilder.Home.Value);
        }
コード例 #14
0
        public void Compose(PackageManifestBuilder manifestBuilder, bool interactive)
        {
            if (!interactive)
            {
                return;
            }

            foreach (var prompt in _prompts.Where(c => c.ShouldPrompt(manifestBuilder)))
            {
                prompt.Invoke(manifestBuilder);
            }
        }
コード例 #15
0
        public void get_non_github_hostname_as_url()
        {
            var installer = new InstallerBuilder {
                Location = "https://microsoft.com/office"
            };
            var man = new PackageManifestBuilder();

            man.Installers.Add(installer);

            Subject.Invoke(man);

            man.Home.Value.Should().Be("https://microsoft.com");
        }
コード例 #16
0
        /// <summary>
        ///     Adds the specified file from the specified directory to the specified builder, using the includeResources and
        ///     hashFiles parameters to determine whether the file should be added and hashed.
        /// </summary>
        /// <param name="builder">The manifest builder with which to add the file.</param>
        /// <param name="file">The file to add.</param>
        /// <param name="directory">The directory containing the file.</param>
        /// <param name="hashFiles">A value indicating whether files added to the manifest are to include a SHA512 hash.</param>
        private void AddFile(PackageManifestBuilder builder, string file, string directory, bool hashFiles)
        {
            Verbose($"Adding file '{file}'...");
            PackageManifestFile newFile = new PackageManifestFile();

            newFile.Source = Common.Utility.GetRelativePath(directory, file);

            if (hashFiles)
            {
                newFile.Checksum = string.Empty;
            }

            builder.AddFile(newFile);
        }
コード例 #17
0
        public string WriteManifest(PackageManifestBuilder manifestBuilder)
        {
            var manifest = manifestBuilder.Build();
            var fileName = $"{manifest.GetFileName()}.yaml";
            var config   = _configStore.Load();
            var applicationManifestDir = Path.Combine(config.LocalRepository, manifest.Id);
            var manifestPath           = Path.Combine(applicationManifestDir, fileName);

            _fileSystem.CreateDirectory(applicationManifestDir);

            _fileSystem.WriteAllText(manifestPath, manifest.ToYaml());

            _logger.Info($"Package manifest was saved to {manifestPath}");

            return(manifestPath);
        }
コード例 #18
0
        public void Constructor()
        {
            PackageManifestBuilder test = new PackageManifestBuilder();

            Assert.NotNull(test.Manifest);
            Assert.Null(test.Manifest.Name);

            PackageManifest manifest = new PackageManifest();

            manifest.Name = "manifest";

            test = new PackageManifestBuilder(manifest);

            Assert.NotNull(test.Manifest);
            Assert.Equal(test.Manifest.Name, "manifest");
        }
コード例 #19
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="PackageFactoryTests"/> class.
        /// </summary>
        public PackageFactoryTests()
        {
            TempDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
            Directory.CreateDirectory(TempDirectory);

            TempFile = Path.Combine(TempDirectory, "archive.zip");
            File.WriteAllText(TempFile, string.Empty);

            PackageManifest = new PackageManifestBuilder().BuildDefault().Manifest;

            ManifestExtractorMock = new Mock <IManifestExtractor>();
            PackageVerifierMock   = new Mock <IPackageVerifier>();
            PlatformMock          = new Mock <IPlatform>();
            PlatformManagerMock   = new Mock <IPlatformManager>();
            PackageMock           = new Mock <IPackage>();
            PackageArchiveMock    = new Mock <IPackageArchive>();

            SetupMocks();
        }
コード例 #20
0
        /// <summary>
        ///     Generates and populates <see cref="IPackageManifest"/> objects from the specified directory, including resource
        ///     files and hashing file entries if those options are specified.
        /// </summary>
        /// <param name="inputDirectory">The directory from which to generate a list of files.</param>
        /// <param name="hashFiles">A value indicating whether files added to the manifest are to include a SHA512 hash.</param>
        /// <param name="manifestFile">The filename of the file to which the manifest is to be saved.</param>
        /// <returns>The generated manifest.</returns>
        public IPackageManifest GenerateManifest(string inputDirectory, bool hashFiles = false, string manifestFile = "")
        {
            ArgumentValidator.ValidateInputDirectoryArgument(inputDirectory);

            string[] files = Directory.GetFiles(inputDirectory, "*", SearchOption.AllDirectories);

            PackageManifestBuilder builder = new PackageManifestBuilder();

            Info($"Generating manifest for directory '{inputDirectory}'...");
            builder.BuildDefault();
            Verbose($"Adding files from '{inputDirectory}'...");

            foreach (string file in files)
            {
                AddFile(builder, file, inputDirectory, hashFiles);
            }

            PackageManifest manifest = builder.Manifest;

            Success("Manifest generated successfully.");

            if (!string.IsNullOrEmpty(manifestFile))
            {
                try
                {
                    Info($"Saving output to file '{manifestFile}'...");
                    File.WriteAllText(manifestFile, manifest.ToJson());
                    Success("File saved successfully.");
                }
                catch (Exception ex)
                {
                    throw new Exception($"Unable to write to output file '{manifestFile}': {ex.Message}", ex);
                }
            }

            return(manifest);
        }
コード例 #21
0
ファイル: InstallMethodPrompt.cs プロジェクト: zaxebo1/appget
 public bool ShouldPrompt(PackageManifestBuilder manifestBuilder)
 {
     return(!manifestBuilder.InstallMethod.HasConfidence(Confidence.Plausible));
 }
コード例 #22
0
ファイル: InstallMethodPrompt.cs プロジェクト: zaxebo1/appget
        public void Invoke(PackageManifestBuilder manifest)
        {
            var methodPrompt = new EnumPrompt <InstallMethodTypes>();

            manifest.InstallMethod.Add(methodPrompt.Request("Installer", InstallMethodTypes.Custom), Confidence.Plausible, this);
        }
コード例 #23
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="PackageManifestBuilderTests"/> class.
 /// </summary>
 public PackageManifestBuilderTests()
 {
     Builder = new PackageManifestBuilder();
 }
コード例 #24
0
        public void Invoke(PackageManifestBuilder manifestBuilder)
        {
            var result = _prompt.Request("Product Homepage", manifestBuilder.Home.Value);

            manifestBuilder.Home.Add(result, Confidence.Authoritative, this);
        }
コード例 #25
0
 public bool ShouldPrompt(PackageManifestBuilder manifestBuilder)
 {
     return(!manifestBuilder.Id.HasConfidence(Confidence.Authoritative));
 }
コード例 #26
0
 public void Invoke(PackageManifestBuilder manifest)
 {
     manifest.Version.Add(_prompt.Request("Application Version", manifest.Version.Value), Confidence.Plausible, this);
 }
コード例 #27
0
ファイル: ProductNamePrompt.cs プロジェクト: zaxebo1/appget
        public void Invoke(PackageManifestBuilder manifest)
        {
            var name = _prompt.Request("Product Name", manifest.Name.Value);

            manifest.Name.Add(name, Confidence.Authoritative, this);
        }
コード例 #28
0
 public bool ShouldPrompt(PackageManifestBuilder manifestBuilder)
 {
     return(true);
 }