Пример #1
0
        public override int Run(string fileOrDirectory)
        {
            SlnFile slnFile = SlnFileFactory.CreateFromFileOrDirectory(fileOrDirectory);

            if (RemainingArguments.Count == 0)
            {
                throw new GracefulException(CommonLocalizableStrings.SpecifyAtLeastOneProjectToAdd);
            }

            PathUtility.EnsureAllPathsExist(RemainingArguments, CommonLocalizableStrings.ProjectDoesNotExist);
            var fullProjectPaths = RemainingArguments.Select((p) => Path.GetFullPath(p)).ToList();

            int preAddProjectCount = slnFile.Projects.Count;

            foreach (var fullProjectPath in fullProjectPaths)
            {
                slnFile.AddProject(fullProjectPath);
            }

            if (slnFile.Projects.Count > preAddProjectCount)
            {
                slnFile.Write();
            }

            return(0);
        }
Пример #2
0
        public override int Run(string fileOrDirectory)
        {
            SlnFile slnFile = SlnFileFactory.CreateFromFileOrDirectory(fileOrDirectory);

            if (RemainingArguments.Count == 0)
            {
                throw new GracefulException(CommonLocalizableStrings.SpecifyAtLeastOneProjectToRemove);
            }

            var relativeProjectPaths = RemainingArguments.Select((p) =>
                                                                 PathUtility.GetRelativePath(
                                                                     PathUtility.EnsureTrailingSlash(slnFile.BaseDirectory),
                                                                     Path.GetFullPath(p))).ToList();

            bool slnChanged = false;

            foreach (var path in relativeProjectPaths)
            {
                slnChanged |= RemoveProject(slnFile, path);
            }

            RemoveEmptyConfigurationSections(slnFile);

            RemoveEmptySolutionFolders(slnFile);

            if (slnChanged)
            {
                slnFile.Write();
            }

            return(0);
        }
Пример #3
0
        public override int Run(string fileOrDirectory)
        {
            if (RemainingArguments.Count != 1)
            {
                throw new GracefulException(LocalizableStrings.SpecifyExactlyOnePackageReference);
            }

            var projectFilePath = string.Empty;

            if (!File.Exists(fileOrDirectory))
            {
                projectFilePath = MsbuildProject.GetProjectFileFromDirectory(fileOrDirectory).FullName;
            }
            else
            {
                projectFilePath = fileOrDirectory;
            }

            var tempDgFilePath = string.Empty;

            if (!_noRestoreOption.HasValue())
            {
                // Create a Dependency Graph file for the project
                tempDgFilePath = Path.GetTempFileName();
                GetProjectDependencyGraph(projectFilePath, tempDgFilePath);
            }

            var result = NuGetCommand.Run(TransformArgs(RemainingArguments.First(), tempDgFilePath, projectFilePath));

            DisposeTemporaryFile(tempDgFilePath);

            return(result);
        }
Пример #4
0
        void ParseArgument(string arg)
        {
            if (arg == "/?" || arg == "/help")
            {
                // Will cause usage message to be displayed.
                ErrorMessage = "";
                return;
            }

            if (arg.StartsWith("/fmt:"))
            {
                OutputFormat = GetFormat(arg.Substring(5));
                return;
            }

            if (arg.StartsWith("/of:"))
            {
                OutputFilename = arg.Substring(4);
                if (String.IsNullOrWhiteSpace(OutputFilename))
                {
                    ErrorMessage = "Error: No filename specified for /of.";
                }
                return;
            }

            if (arg.StartsWith("/bands:"))
            {
                ParseBands(arg.Substring(7));
                return;
            }

            RemainingArguments.Add(arg);
        }
Пример #5
0
 protected override void ProcessOptions()
 {
     XmlDocFile = RemainingArguments.Single();
     if (!File.Exists(XmlDocFile))
     {
         throw new ArgumentException(String.Format("The specified file '{0}' does not exist.", XmlDocFile));
     }
 }
Пример #6
0
        private int Execute()
        {
            if (string.IsNullOrWhiteSpace(ApplicationPath.Value))
            {
                throw new InvalidOperationException($"Invalid value for parameter '{nameof(ApplicationPath)}'. Value supplied: '{ApplicationPath.Value}'");
            }

            Server.Startup.ApplicationAssembly = ApplicationPath.Value;
            Server.Program.BuildWebHost(RemainingArguments.ToArray()).Run();
            return(0);
        }
Пример #7
0
        protected override void ProcessOptions()
        {
            base.ProcessOptions();
            ExcludedWriters = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
            IncludedWriters = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
            FileName        = RemainingArguments.Single();
            if (!File.Exists(FileName))
            {
                throw new ArgumentException(String.Format("The specified file '{0}' does not exist.", FileName));
            }

            if (HasOption(CommonOptions.OptExcludeWriter))
            {
                foreach (string writerName in GetOptionValues <string>(CommonOptions.OptExcludeWriter))
                {
                    if (ExcludedWriters.Add(writerName))
                    {
                        Host.WriteLine("(Option: Excluding writer/component '{0}')", writerName);
                    }
                }
            }

            if (HasOption(CommonOptions.OptVerifyWriterIncluded))
            {
                foreach (string writerName in GetOptionValues <string>(CommonOptions.OptVerifyWriterIncluded))
                {
                    if (ExcludedWriters.Contains(writerName))
                    {
                        throw new ArgumentException(String.Format("A writer cannot be both included and excluded: '{0}'.", writerName));
                    }

                    if (IncludedWriters.Add(writerName))
                    {
                        Host.WriteLine("(Option: Verifying inclusion of writer/component '{0}')", writerName);
                    }
                }
            }

            Simulate = HasOption(OptSimulated);
        }
Пример #8
0
        public override int Run(string fileOrDirectory)
        {
            if (RemainingArguments.Count != 1)
            {
                throw new GracefulException(LocalizableStrings.SpecifyExactlyOnePackageReference);
            }

            var projectFilePath = string.Empty;

            if (!File.Exists(fileOrDirectory))
            {
                projectFilePath = MsbuildProject.GetProjectFileFromDirectory(fileOrDirectory).FullName;
            }
            else
            {
                projectFilePath = fileOrDirectory;
            }

            var packageToRemove = RemainingArguments.First();
            var result          = NuGetCommand.Run(TransformArgs(packageToRemove, projectFilePath));

            return(result);
        }
Пример #9
0
 private int Execute()
 {
     Server.Program.BuildWebHost(RemainingArguments.ToArray()).Run();
     return(0);
 }
Пример #10
0
 protected override void ProcessOptions()
 {
     CommandName = RemainingArguments.FirstOrDefault();
 }
Пример #11
0
        public override int Run(string fileOrDirectory)
        {
            var            projects    = new ProjectCollection();
            MsbuildProject msbuildProj = MsbuildProject.FromFileOrDirectory(projects, fileOrDirectory);

            if (RemainingArguments.Count == 0)
            {
                throw new GracefulException(CommonLocalizableStrings.SpecifyAtLeastOneReferenceToAdd);
            }

            string frameworkString = _frameworkOption.Value();

            PathUtility.EnsureAllPathsExist(RemainingArguments, CommonLocalizableStrings.ReferenceDoesNotExist);
            List <MsbuildProject> refs = RemainingArguments
                                         .Select((r) => MsbuildProject.FromFile(projects, r))
                                         .ToList();

            if (frameworkString == null)
            {
                foreach (var tfm in msbuildProj.GetTargetFrameworks())
                {
                    foreach (var @ref in refs)
                    {
                        if ([email protected](tfm))
                        {
                            Reporter.Error.Write(GetProjectNotCompatibleWithFrameworksDisplayString(
                                                     @ref,
                                                     msbuildProj.GetTargetFrameworks().Select((fx) => fx.GetShortFolderName())));
                            return(1);
                        }
                    }
                }
            }
            else
            {
                var framework = NuGetFramework.Parse(frameworkString);
                if (!msbuildProj.IsTargettingFramework(framework))
                {
                    Reporter.Error.WriteLine(string.Format(
                                                 CommonLocalizableStrings.ProjectDoesNotTargetFramework,
                                                 msbuildProj.ProjectRootElement.FullPath,
                                                 frameworkString));
                    return(1);
                }

                foreach (var @ref in refs)
                {
                    if ([email protected](framework))
                    {
                        Reporter.Error.Write(GetProjectNotCompatibleWithFrameworksDisplayString(
                                                 @ref,
                                                 new string[] { frameworkString }));
                        return(1);
                    }
                }
            }

            var relativePathReferences = RemainingArguments.Select((r) =>
                                                                   PathUtility.GetRelativePath(msbuildProj.ProjectDirectory, Path.GetFullPath(r))).ToList();

            int numberOfAddedReferences = msbuildProj.AddProjectToProjectReferences(
                _frameworkOption.Value(),
                relativePathReferences);

            if (numberOfAddedReferences != 0)
            {
                msbuildProj.ProjectRootElement.Save();
            }

            return(0);
        }
Пример #12
0
        private async Task OnExecuteAsync()
        {
            if (version)
            {
                Console.WriteLine(Assembly.GetEntryAssembly().GetCustomAttribute <AssemblyInformationalVersionAttribute>().InformationalVersion);
                Environment.Exit(0);
            }

            Console.WriteLine($"AutoTag v{Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion}");
            Console.WriteLine("https://jtattersall.net");
            settings = new AutoTagSettings(configPath);

            if (tv)
            {
                settings.config.mode = AutoTagConfig.Modes.TV;
            }
            else if (movie)
            {
                settings.config.mode = AutoTagConfig.Modes.Movie;
            }
            if (noRename)
            {
                settings.config.renameFiles = false;
            }
            if (noTag)
            {
                settings.config.tagFiles = false;
            }
            if (noCoverArt)
            {
                settings.config.addCoverArt = false;
            }
            if (manualMode)
            {
                settings.config.manualMode = true;
            }
            if (!string.IsNullOrEmpty(tvRenamePattern))
            {
                settings.config.tvRenamePattern = tvRenamePattern;
            }
            if (!string.IsNullOrEmpty(movieRenamePattern))
            {
                settings.config.movieRenamePattern = movieRenamePattern;
            }
            if (!string.IsNullOrEmpty(pattern))
            {
                settings.config.parsePattern = pattern;
            }
            if (windowsSafe)
            {
                settings.config.windowsSafe = true;
            }
            if (extendedTagging)
            {
                settings.config.extendedTagging = true;
            }
            if (verbose)
            {
                settings.config.verbose = true;
            }
            if (setDefault)
            {
                settings.Save();
            }

            if (!RemainingArguments.Any())
            {
                Console.Error.WriteLine("No files provided");
                Environment.Exit(1);
            }

            IProcessor processor;

            if (settings.config.mode == AutoTagConfig.Modes.TV)
            {
                processor = new TVProcessor(Keys.TMDBKey);
            }
            else
            {
                processor = new MovieProcessor(Keys.TMDBKey);
            }

            AddFiles(RemainingArguments);

            if (!files.Any())
            {
                Console.Error.WriteLine("No files found");
                Environment.Exit(1);
            }

            files.Sort((x, y) => x.Path.CompareTo(y.Path));

            for (index = 0; index < files.Count; index++)
            {
                success &= await processor.Process(files[index].Path, p => {}, SetStatus, ChooseResult, settings.config);
            }

            Console.ResetColor();

            if (success)
            {
                if (warnings == 0)
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine($"\n\n{(files.Count() > 1 ? $"All {files.Count()} files": "File")} successfully processed.");
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine($"\n\n{(files.Count() > 1 ? $"All {files.Count()} files": "File")} successfully processed with {warnings} warning{(warnings > 1 ? "s" : "")}.");
                }
                Console.ResetColor();
                Environment.Exit(0);
            }
            else
            {
                int failedFiles = files.Where(f => !f.Success).Count();

                if (failedFiles < files.Count())
                {
                    if (warnings == 0)
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.WriteLine($"\n\n{files.Count() - failedFiles} file{(files.Count() - failedFiles > 1 ? "s" : "")} successfully processed.");
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.WriteLine($"\n\n{files.Count() - failedFiles} file{(files.Count() - failedFiles > 1 ? "s" : "")} successfully processed with {warnings} warning{(warnings > 1 ? "s" : "")}.");
                    }
                    Console.ForegroundColor = ConsoleColor.DarkRed;
                    Console.Error.WriteLine($"Errors encountered for {failedFiles} file{(failedFiles > 1 ? "s" : "")}:");
                }
                else
                {
                    Console.Error.WriteLine("\n\nErrors encountered for all files:");
                }

                foreach (TaggingFile file in files.Where(f => !f.Success))
                {
                    Console.ForegroundColor = ConsoleColor.Magenta;
                    Console.Error.WriteLine($"{file.Path}:");
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Error.WriteLine($"    {file.Status}\n");
                }

                Console.ResetColor();
                Environment.Exit(1);
            }
        }
Пример #13
0
 public RemainingArgumentsStep(Step previousStep, RemainingArguments remainingArguments)
     : base(previousStep)
 {
     Description = remainingArguments;
 }