Command arguments class for the NArrange console application.
        /// <summary>
        /// Parses command arguments from an array of strings.
        /// </summary>
        /// <param name="args">String array arguments</param>
        /// <returns>A CommandArguments instance</returns>'=
        /// <exception cref="ArgumentException"/>
        public static CommandArguments Parse(params string[] args)
        {
            CommandArguments commandArguments = new CommandArguments();

            if (args == null || args.Length == 0)
            {
                OnParseError();
            }

            List<string> argList = new List<string>(args);
            for (int argIndex = 0; argIndex < argList.Count; argIndex++)
            {
                string arg = argList[argIndex];

                if (string.IsNullOrEmpty(arg))
                {
                    OnParseError();
                }

                if (arg.Length > 0 &&
                    ((!MonoUtilities.IsMonoRuntime && arg[0] == WindowsSwitch) ||
                     arg[0] == UnixSwitch))
                {
                    string argLower = arg.ToLower();
                    if (arg.Length >= 2)
                    {
                        string flagParts = arg.Substring(1);
                        int separatorIndex = flagParts.IndexOf(':');
                        string flagString = flagParts;
                        if (separatorIndex > 0)
                        {
                            flagString = flagParts.Substring(0, separatorIndex);
                        }

                        CommandArgumentFlag flag = ParseFlag(flagString);

                        switch (flag)
                        {
                            case CommandArgumentFlag.Configuration:
                                if (separatorIndex < 0)
                                {
                                    OnParseError(arg);
                                }
                                commandArguments._configuration = flagParts.Substring(separatorIndex + 1);
                                if (string.IsNullOrEmpty(commandArguments._configuration))
                                {
                                    OnParseError(arg);
                                }
                                break;

                            case CommandArgumentFlag.Backup:
                                commandArguments._backup = true;
                                break;

                            case CommandArgumentFlag.Restore:
                                commandArguments._restore = true;
                                break;

                            case CommandArgumentFlag.Trace:
                                commandArguments._trace = true;
                                break;

                            default:
                                OnParseError();
                                break;
                        }

                        argList.RemoveAt(argIndex);
                        argIndex--;
                    }
                    else
                    {
                        OnParseError(arg);
                    }
                }
                else
                {
                    if (commandArguments._input == null)
                    {
                        commandArguments._input = arg;
                        argList.RemoveAt(argIndex);
                        argIndex--;
                    }
                    else if (commandArguments._output == null)
                    {
                        commandArguments._output = arg;
                        argList.RemoveAt(argIndex);
                        argIndex--;
                    }
                }
            }

            if (argList.Count > 0)
            {
                OnParseError();
            }

            if (commandArguments._backup && commandArguments._restore)
            {
                OnParseError();
            }

            if (commandArguments.Output != null &&
                (commandArguments._backup || commandArguments._restore))
            {
                OnParseError();
            }

            return commandArguments;
        }
Exemple #2
0
        /// <summary>
        /// Runs NArrange using the specified arguments.
        /// </summary>
        /// <param name="logger">Logger for messages.</param>
        /// <param name="commandArgs">Command arguments.</param>
        /// <returns>True if succesful, otherwise false.</returns>
        public static bool Run(ILogger logger, CommandArguments commandArgs)
        {
            bool success = true;

            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }
            else if (commandArgs == null)
            {
                throw new ArgumentNullException("commandArgs");
            }

            if (commandArgs.Restore)
            {
                logger.LogMessage(LogLevel.Verbose, "Restoring {0}...", commandArgs.Input);
                string key = BackupUtilities.CreateFileNameKey(commandArgs.Input);
                try
                {
                    success = BackupUtilities.RestoreFiles(BackupUtilities.BackupRoot, key);
                }
                catch (Exception ex)
                {
                    logger.LogMessage(LogLevel.Warning, ex.Message);
                    success = false;
                }

                if (success)
                {
                    logger.LogMessage(LogLevel.Info, "Restored");
                }
                else
                {
                    logger.LogMessage(LogLevel.Error, "Restore failed");
                }
            }
            else
            {
                //
                // Arrange the source code file
                //
                FileArranger fileArranger = new FileArranger(commandArgs.Configuration, logger);
                success = fileArranger.Arrange(commandArgs.Input, commandArgs.Output, commandArgs.Backup);

                if (!success)
                {
                    logger.LogMessage(LogLevel.Error, "Unable to arrange {0}.", commandArgs.Input);
                }
                else
                {
                    logger.LogMessage(LogLevel.Info, "Arrange successful.");
                }
            }

            return success;
        }
Exemple #3
0
        /// <summary>
        /// Parses command arguments from an array of strings.
        /// </summary>
        /// <param name="args">String array arguments</param>
        /// <returns>A CommandArguments instance</returns>'=
        /// <exception cref="ArgumentException"/>
        public static CommandArguments Parse(params string[] args)
        {
            CommandArguments commandArguments = new CommandArguments();

            if (args == null || args.Length == 0)
            {
                OnParseError();
            }

            List <string> argList = new List <string>(args);

            for (int argIndex = 0; argIndex < argList.Count; argIndex++)
            {
                string arg = argList[argIndex];

                if (string.IsNullOrEmpty(arg))
                {
                    OnParseError();
                }

                if (arg.Length > 0 &&
                    ((!MonoUtilities.IsMonoRuntime && arg[0] == WindowsSwitch) ||
                     arg[0] == UnixSwitch))
                {
                    string argLower = arg.ToLower();
                    if (arg.Length >= 2)
                    {
                        string flagParts      = arg.Substring(1);
                        int    separatorIndex = flagParts.IndexOf(':');
                        string flagString     = flagParts;
                        if (separatorIndex > 0)
                        {
                            flagString = flagParts.Substring(0, separatorIndex);
                        }

                        CommandArgumentFlag flag = ParseFlag(flagString);

                        switch (flag)
                        {
                        case CommandArgumentFlag.Configuration:
                            if (separatorIndex < 0)
                            {
                                OnParseError(arg);
                            }
                            commandArguments._configuration = flagParts.Substring(separatorIndex + 1);
                            if (string.IsNullOrEmpty(commandArguments._configuration))
                            {
                                OnParseError(arg);
                            }
                            break;

                        case CommandArgumentFlag.Backup:
                            commandArguments._backup = true;
                            break;

                        case CommandArgumentFlag.Restore:
                            commandArguments._restore = true;
                            break;

                        case CommandArgumentFlag.Trace:
                            commandArguments._trace = true;
                            break;

                        default:
                            OnParseError();
                            break;
                        }

                        argList.RemoveAt(argIndex);
                        argIndex--;
                    }
                    else
                    {
                        OnParseError(arg);
                    }
                }
                else
                {
                    if (commandArguments._input == null)
                    {
                        commandArguments._input = arg;
                        argList.RemoveAt(argIndex);
                        argIndex--;
                    }
                    else if (commandArguments._output == null)
                    {
                        commandArguments._output = arg;
                        argList.RemoveAt(argIndex);
                        argIndex--;
                    }
                }
            }

            if (argList.Count > 0)
            {
                OnParseError();
            }

            if (commandArguments._backup && commandArguments._restore)
            {
                OnParseError();
            }

            if (commandArguments.Output != null &&
                (commandArguments._backup || commandArguments._restore))
            {
                OnParseError();
            }

            return(commandArguments);
        }