コード例 #1
0
        public ExecuteResultEnum Delete(IProjectCommandOptions options)
        {
            var displayName  = options.DisplayName;
            var projectIndex = FindIndexByName(displayName);

            if (projectIndex < 0)
            {
                _reportService.Error($"Cant find project '{displayName}'");
                return(ExecuteResultEnum.Error);
            }

            if (!options.Force)
            {
                if (options.Silent)
                {
                    _reportService.Warn($"Please add --force to delete project '{displayName}'");
                    return(ExecuteResultEnum.Error);
                }
                else
                {
                    var delete = Prompt.GetYesNo($"Delete project '{displayName}'", false, System.ConsoleColor.Red);
                    if (!delete)
                    {
                        return(ExecuteResultEnum.Aborted);
                    }
                }
            }

            _globalConfigFile.Config.Projects.RemoveAt(projectIndex);

            _globalConfigFile.Save(_globalConfigFile.Config);

            _reportService.Output($"Project '{displayName}' deleted.");
            return(ExecuteResultEnum.Succeeded);
        }
コード例 #2
0
        private bool IsDisplayNameAlreadyUsed(string displayName, IProjectCommandOptions options)
        {
            if (FindByName(displayName) != null)
            {
                _reportService.Error($"Project {displayName} already exists");
                if (!options.Silent)
                {
                    _reportService.Output($"\tPlease run '{Configuration.Name} project ls' to show all existing projects");
                }
                return(true);
            }

            return(false);
        }
コード例 #3
0
 public ProjectCommandOptions(IProjectCommandOptions options)
     : base(options)
 {
     _options = options;
 }
コード例 #4
0
        public ExecuteResultEnum Create(IProjectCommandOptions options)
        {
            var path        = options.Path;
            var displayName = options.DisplayName;

            if (string.IsNullOrEmpty(path))
            {
                if (options.Silent)
                {
                    _reportService.Error($"Path to spocr.json is required");
                    _reportService.Output($"\tPlease use '--path'");
                    return(ExecuteResultEnum.Error);
                }
                else
                {
                    path = Prompt.GetString("Enter path to spocr.json, e.g. base directory of your project:", new DirectoryInfo(Directory.GetCurrentDirectory()).Name);
                }
            }

            if (string.IsNullOrEmpty(path))
            {
                return(ExecuteResultEnum.Aborted);
            }

            path = CreateConfigFilePath(path);

            if (string.IsNullOrEmpty(displayName))
            {
                displayName = CreateDisplayNameFromPath(path);
            }

            if (string.IsNullOrEmpty(displayName))
            {
                _reportService.Error($"DisplayName for project is required");
                _reportService.Output($"\tPlease use '--name'");
                return(ExecuteResultEnum.Error);
            }

            if (IsDisplayNameAlreadyUsed(displayName, options))
            {
                return(ExecuteResultEnum.Error);
            }

            _globalConfigFile.Config?.Projects.Add(new GlobalProjectConfigurationModel
            {
                DisplayName = displayName,
                ConfigFile  = path
            });

            _globalConfigFile.Save(_globalConfigFile.Config);

            if (options.Silent)
            {
                _reportService.Output($"{{ \"displayName\": \"{displayName}\" }}");
            }
            else
            {
                _reportService.Output($"Project '{displayName}' created.");
            }
            return(ExecuteResultEnum.Succeeded);
        }