Example #1
0
        static void Main(string[] args)
        {
            // ask docopt to parse input args
            var inputs = new Docopt().Apply(
                Usage.Replace("{name}", Name),
                args,
                version: $"{Name} {Version}",
                exit: true          // exit if input args does not match pattern
                );

            if (inputs["init"].IsTrue)
            {
                ProgramConfigs.InitConfigs(
                    // grab the optional project name
                    inputs["<project_name>"] is null ? string.Empty : inputs["<project_name>"].Value.ToString()
                    );
            }
            else if (inputs["build"].IsTrue)
            {
                string source = ProgramConfigs.GetProjectSource();
                if (source is null)
                {
                    Console.Error.WriteLine("Can not determine source directory from configs");
                    Environment.Exit(1);
                }
                var examplesDir = ProgramConfigs.GetExamplesSource();
                var outputDir   = ProgramConfigs.GetProjectTarget();
                // write project info
                var configs = ProgramConfigs.GetConfigs();
                ProjectConfigs.WriteProjectInfo(configs, outputDir);
                // build the docs data file
                Console.WriteLine($"Building docs:\n{source} => {outputDir}");
                Docify(source, examplesDir, outputDir);
            }
        }
Example #2
0
        public void Should_generate_code()
        {
            // TODO: not a very useful test, more of a sanity check

            const string USAGE    = @"Test host app for T4 Docopt.NET

Usage:
  prog command ARG <myarg> [OPTIONALARG] [-o -s=<arg> --long=ARG --switch]
  prog files FILE...

Options:
 -o           Short switch.
 -s=<arg>     Short option with arg.
 --long=ARG   Long option with arg.
 --swith      Long switch.

Explanation:
 This is a test usage file.
";
            const string expected = @"
public bool CmdCommand { get { return _args[""command""].IsTrue; } }
public string ArgArg { get { return _args[""ARG""].ToString(); } }
public string ArgMyarg  { get { return _args[""<myarg>""].ToString(); } }
public string ArgOptionalarg { get { return _args[""OPTIONALARG""].ToString(); } }
public bool OptO { get { return _args[""-o""].IsTrue; } }
public string OptS { get { return _args[""-s""].ToString(); } }
public string OptLong { get { return _args[""--long""].ToString(); } }
public bool OptSwitch { get { return _args[""--switch""].IsTrue; } }
public bool CmdFiles { get { return _args[""files""].IsTrue; } }
public ArrayList ArgFile { get { return _args[""FILE""].AsList; } }
";
            var          s        = new Docopt().GenerateCode(USAGE);

            Assert.AreEqual(expected.Trim(), s.Trim());
        }
Example #3
0
        public MainArgs(string[] argsv)
        {
            argsv = argsv.Any() ? argsv : new string[] { "up" };

            var version = typeof(MainArgs).Assembly.GetName().Version.ToString();
            var args    = new Docopt().Apply(usage, argsv, version: version);

            if (args["up"].IsTrue)
            {
                long up = 0;
                if (args["<version>"] != null)
                {
                    long.TryParse(args["<version>"].ToString(), out up);
                }
                Up = up;
            }

            if (args["down"].IsTrue)
            {
                long.TryParse(args["<version>"].ToString(), out long down);
                Down = down;
            }

            if (args["rollback"].IsTrue)
            {
                Rollback = args["<steps>"].AsInt;
            }
        }
Example #4
0
        public void Test_issue_126_defaults_not_parsed_correctly_when_tabs()
        {
            const string section  = "Options:\n\t--foo=<arg>  [default: bar]";
            var          expected = new Option[] { new Option(null, "--foo", 1, "bar") };

            Assert.AreEqual(expected, Docopt.ParseDefaults(section));
        }
Example #5
0
        private static void Main(string[] argv)
        {
            Console.OutputEncoding = Encoding.UTF8;
            IDictionary <string, ValueObject> args = new Docopt().Apply(Usage, argv, exit: true);
            string?mode = null;
            string modeConfigFilename = args["--mode-config"].ToString();

            if (args["--mode"] != null && !args["--mode"].IsNullOrEmpty)
            {
                mode = args["--mode"].ToString();
                if (!DefaultConfigs.ContainsKey(mode))
                {
                    Console.WriteLine(
                        $"Unknown mode '{mode}', possible values: {string.Join(", ", DefaultConfigs.Keys)}");
                    Environment.Exit(1);
                }
                modeConfigFilename = modeConfigFilename.Replace("<mode>", mode);
            }
            if (args["start"].IsTrue)
            {
                Mode(mode !, args["--config"].ToString(), modeConfigFilename);
            }
            else if (args["testconfig"].IsTrue)
            {
                TestConfig(args["--config"].ToString(), mode, modeConfigFilename);
            }
            else if (args["gendefaultconfig"].IsTrue)
            {
                OutputDefaultConfig(mode, args["--outfile"]);
            }
            else if (args["regenjsonschemas"].IsTrue)
            {
                RegenerateJsonSchema();
            }
        }
Example #6
0
        private void GetCommandLineConfiguration(string[] args)
        {
            var docopt = new Docopt();

            IDictionary <string, ValueObject> res = docopt.Apply(Usage, args, help: true, exit: true);

            _ocdmModelExportPath = res["--modelExport"] == null ? _ocdmModelExportPath : res["--modelExport"].ToString();

            _readerName = res["--reader"] == null ? _readerName : res["--reader"].ToString();

            _writerName = res["--writer"] == null ? _writerName : res["--writer"].ToString();

            if (res["--outputPath"] == null)
            {
                // do nothing, rely on default
            }
            else if (res["--outputPath"].ToString() == String.Empty)
            {
                _outputPath = @".\";  // current working directory
            }
            else
            {
                _outputPath = res["--outputPath"].ToString();
            }

            _metadataPath = res["<inputFile>"] == null ? _metadataPath : res["<inputFile>"].ToString();
        }
Example #7
0
        public async static Task Main(string[] args)
        {
            var usage     = Resources.docopt;
            var arguments = new Docopt().Apply(usage, args, version: "Path Convert 1.0", exit: true);

            bool   clipboard = arguments["--clipboard"].IsTrue;
            bool   windows   = arguments["--windows"].IsTrue;
            string path      = arguments["<path>"]?.ToString();

            if (clipboard && path == null)
            {
                path = await Clipboard.GetTextAsync();
            }

            if (windows)
            {
                path = path.Replace('/', '\\');
            }
            else
            {
                path = path.Replace(@"\\", "/");
                path = path.Replace('\\', '/');
            }

            if (clipboard)
            {
                await Clipboard.SetTextAsync(path);
            }

            Console.WriteLine(path);
        }
Example #8
0
        static void Main(string[] args)
        {
            Task.Run(async() =>
            {
                try
                {
                    var arguments = new Docopt().Apply(Usage, args, version: "Seq Enable AAD 0.1", exit: true);

                    var server    = arguments["<server>"].ToString();
                    var username  = Normalize(arguments["--uname"]);
                    var tenantId  = Normalize(arguments["--tenantid"]);
                    var clientId  = Normalize(arguments["--clientid"]);
                    var clientKey = Normalize(arguments["--clientkey"]);
                    var authority = Normalize(arguments["--authority"]);

                    await Run(server, username, tenantId, clientId, clientKey, authority);
                }
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.WriteLine("seq-enable-aad: {0}", ex);
                    Console.ResetColor();
                    Environment.Exit(-1);
                }
            }).Wait();
        }
Example #9
0
        static void Main(string[] args)
        {
            Task.Run(async() =>
            {
                try
                {
                    var arguments = new Docopt().Apply(Usage, args, version: "Seq Signal Copy 0.1", exit: true);

                    var src    = arguments["<src>"].ToString();
                    var dst    = arguments["<dst>"].ToString();
                    var srcKey = Normalize(arguments["--srckey"]);
                    var dstKey = Normalize(arguments["--dstkey"]);

                    await Run(src, srcKey, dst, dstKey);
                }
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.WriteLine("signal-copy: {0}", ex);
                    Console.ResetColor();
                    Environment.Exit(-1);
                }
            }).Wait();
        }
Example #10
0
        internal static void Main(string[] args)
        {
            var container = ContainerProvider.Build();

            var parameters        = new Docopt().Apply(Usage, args, version: Version, exit: true);
            var appSettingsResult = SettingsParser.GetSettings(parameters);

            if (!appSettingsResult.IsSuccess)
            {
                Console.WriteLine(appSettingsResult.Error);
                return;
            }

            var appSettings = appSettingsResult.Value;

            var bitmap = container.Resolve <TagCreator>().DrawTag(appSettings.ReaderSettings, appSettings.DrawerSettings,
                                                                  appSettings.LayouterSettings);

            if (!bitmap.IsSuccess)
            {
                Console.WriteLine(bitmap.Error);
                return;
            }

            var saveResult = container.Resolve <IImageSaverFactory>().GetSaver(appSettings.ImageExt)
                             .Save(bitmap.Value, appSettings.SavePath);

            if (!saveResult.IsSuccess)
            {
                Console.WriteLine(saveResult.Error);
            }

            Console.WriteLine("Ended successful");
        }
Example #11
0
        public void Should_generate_code()
        {
            // TODO: not a very useful test, more of a sanity check

            const string USAGE = @"Test host app for T4 Docopt.NET

Usage:
  prog command ARG <myarg> [OPTIONALARG] [-o -s=<arg> --long=ARG --switch]
  prog files FILE...

Options:
 -o           Short switch.
 -s=<arg>     Short option with arg.
 --long=ARG   Long option with arg.
 --swith      Long switch.

Explanation:
 This is a test usage file.
";
            const string expected = @"
public bool CmdCommand { get { return _args[""command""].IsTrue; } }
public string ArgArg { get { return _args[""ARG""].ToString(); } }
public string ArgMyarg  { get { return _args[""<myarg>""].ToString(); } }
public string ArgOptionalarg { get { return _args[""OPTIONALARG""].ToString(); } }
public bool OptO { get { return _args[""-o""].IsTrue; } }
public string OptS { get { return _args[""-s""].ToString(); } }
public string OptLong { get { return _args[""--long""].ToString(); } }
public bool OptSwitch { get { return _args[""--switch""].IsTrue; } }
public bool CmdFiles { get { return _args[""files""].IsTrue; } }
public ArrayList ArgFile { get { return _args[""FILE""].AsList; } }
";
            var s = new Docopt().GenerateCode(USAGE);
            Assert.AreEqual(expected.Trim(), s.Trim());
        }
 public string Docopt(string doc, string cmdLine)
 {
     try
     {
         var arguments = new Docopt().Apply(doc, cmdLine);
         var dict = new Dictionary<string, object>();
         foreach (var argument in arguments)
         {
             if (argument.Value == null)
                 dict[argument.Key] = null;
             else if (argument.Value.IsList)
             {
                 var l = new ArrayList();
                 foreach (var v in argument.Value.AsList)
                 {
                     if (v is ValueObject)
                         l.Add(((v) as ValueObject).Value);
                     else
                         l.Add(v);
                 }
                 dict[argument.Key] = l;
             }
             else
                 dict[argument.Key] = argument.Value.Value;
         }
         return JsonConvert.SerializeObject(dict);
     }
     catch (Exception)
     {
         return "\"user-error\"";
     }
 }
Example #13
0
        static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                         .WriteTo.LiterateConsole(outputTemplate: "seq-import {Level} {Message}{NewLine}{Exception}")
                         .CreateLogger();

            Task.Run(async() =>
            {
                try
                {
                    var propertyArgs = args.Where(s => s.StartsWith("--p:", StringComparison.OrdinalIgnoreCase) || s.StartsWith("--property:", StringComparison.OrdinalIgnoreCase)).ToList();
                    var cleanedArgs  = args.Except(propertyArgs).ToArray();

                    var additionalTags = ParseAdditionalTagsToDictionary(propertyArgs);

                    var arguments = new Docopt().Apply(Usage, cleanedArgs, version: "Seq Import 0.1", exit: true);

                    var server = arguments["<server>"].ToString();
                    var file   = Normalize(arguments["<file>"]);
                    var apiKey = Normalize(arguments["--apikey"]);

                    await Run(server, apiKey, file, additionalTags, 256 * 1024, 1024 * 1024);
                }
                catch (Exception ex)
                {
                    Log.Error(ex, "Could not complete import");
                    Environment.Exit(-1);
                }
            }).Wait();
        }
Example #14
0
        static void Main(string[] args)
        {
            Task.Run(async() =>
            {
                try
                {
                    var arguments = new Docopt().Apply(Usage, args, version: "Seq Query 0.1", exit: true);

                    var server = arguments["<server>"].ToString();
                    var query  = Normalize(arguments["<query>"]);
                    var apiKey = Normalize(arguments["--apikey"]);
                    var @from  = Normalize(arguments["--from"]);
                    var to     = Normalize(arguments["--to"]);

                    await Run(server, apiKey, query, from, to);
                }
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.WriteLine("seq-query: {0}", ex);
                    Console.ResetColor();
                    Environment.Exit(-1);
                }
            }).Wait();
        }
Example #15
0
        private static Dictionary <string, string> ParseArguments(string[] args)
        {
            var parsedArguments = new Dictionary <string, string>();
            var arguments       = new Docopt().Apply(Usage, args, exit: true);

            parsedArguments.Add("--input", arguments["--input"].ToString());
            parsedArguments.Add("--output", arguments["--output"].ToString());
            var inputFormat = parsedArguments["--input"]
                              .Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries).Last();

            parsedArguments.Add("--fileFormat", inputFormat);
            if (arguments["--sqrt"].IsTrue)
            {
                parsedArguments.Add("--form", "sqrt");
            }
            else if (arguments["--trgl"].IsTrue)
            {
                parsedArguments.Add("--form", "trgl");
            }
            else
            {
                parsedArguments.Add("--form", "circle");
            }
            parsedArguments.Add("--bgColor",
                                arguments["--bgColor"] != null ? arguments["--bgColor"].ToString() : "#FFFFFF");
            parsedArguments.Add("--textColor",
                                arguments["--textColor"] != null ? arguments["--textColor"].ToString() : "#000000");
            return(parsedArguments);
        }
Example #16
0
        private static void Main(string[] args)
        {
            var arguments = new Docopt().Apply(usage, args, exit: true);

            Setup();

            if (arguments["save"].IsTrue)
            {
                SaveBob();
            }

            if (arguments["load"].IsTrue)
            {
                LoadBob(arguments["<id>"].ToString());
            }

            if (arguments["list"].IsTrue)
            {
                ListBobs();
            }

            if (arguments["add_hometown"].IsTrue)
            {
                SaveBobsHometown(arguments["<id>"].ToString(), arguments["<hometown>"].ToString());
            }
        }
Example #17
0
        static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Verbose()
                         .WriteTo.Console()
                         .CreateLogger();

            TaskScheduler.UnobservedTaskException += (s, e) => Log.Fatal(e.Exception, "Unobserved task exception");

            try
            {
                var arguments = new Docopt().Apply(Usage, args, version: "Seq Tail 0.2", exit: true);

                var server = arguments["<server>"].ToString();
                var apiKey = Normalize(arguments["--apikey"]);
                var filter = Normalize(arguments["--filter"]);

                var cancel = new CancellationTokenSource();
                Console.WriteLine("Tailing, press Ctrl+C to exit.");
                Console.CancelKeyPress += (s, a) => cancel.Cancel();

                var run = Task.Run(() => Run(server, apiKey, filter, cancel));

                run.GetAwaiter().GetResult();
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Tailing aborted");
                Environment.Exit(-1);
            }
        }
Example #18
0
        static void Main(string[] args)
        {
            Console.WriteLine(string.Empty);
            var desc = "    Foreach";

            var        fontArr = System.Text.Encoding.Default.GetBytes(ContessaFont.CONTESSA);
            FigletFont font    = FigletFont.Load(fontArr);
            Figlet     figlet  = new Figlet(font);

            Console.WriteLine(figlet.ToAscii(desc), Color.Blue);

            Console.WriteFormatted("Turn easy the execution of loops, for and batch command line programs using statments like ", Color.White);
            Console.WriteLineFormatted("foreach ", Color.Green);

            try
            {
                var multiplierIndex = args.ToList().IndexOf("*");
                if (multiplierIndex == -1)
                {
                    throw new DocoptNet.DocoptInputErrorException("You must to specify * multiplier character");
                }

                var beforeArgs = SubArray <string>(args, 0, multiplierIndex);
                var afterArgs  = SubArray <string>(args, multiplierIndex + 1, args.Length - multiplierIndex - 1);

                var arguments = new Docopt().Apply(Usage.SHORT_HELP, beforeArgs, version: "Foreach", exit: false);

                try
                {
                    Run(afterArgs, arguments).Wait();
                    Environment.Exit(0);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    Environment.Exit(2);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(Usage.SHORT_HELP);
                Console.WriteLine(string.Empty);

                //Console.WriteLine($@"        > To convert all wav files in currenty folder (and sub-directories recursivelly) and convert to mp3 format");
                //Console.WriteLineFormatted($@"        ffmpeg-batch -s /**/*.wav -o mp3", Color.Green);
                //Console.WriteLine(string.Empty);
                //Console.WriteLine($@"        > To convert all wma files in c:\music and convert to mp3 format");
                //Console.WriteLineFormatted($@"        ffmpeg-batch -s c:\music\*.wma -o mp3", Color.Green);

                Console.WriteLine("Install/Uninstall tool:");
                Console.WriteLine($@"        > To install tool from system");
                Console.WriteLineFormatted($@"        dotnet tool install -g foreach", Color.Green);
                Console.WriteLine(string.Empty);
                Console.WriteLine($@"        > To uninstall tool from system");
                Console.WriteLineFormatted($@"        dotnet tool uninstall -g foreach", Color.Green);

                Environment.Exit(1);
            }
        }
Example #19
0
        private static void Main(string[] argv)
        {
            Console.OutputEncoding = Encoding.UTF8;
            IDictionary <string, ValueObject> args = new Docopt().Apply(Usage, argv, exit: true);
            string?mode = null;
            string modeConfigFilename = args["--mode-config"].ToString();

            if (args["--mode"] is { IsNullOrEmpty : false })
 public void Test_issue_40_help()
 {
     var message = "";
     var d = new Docopt();
     d.PrintExit += (s, e) => message = e.Message;
     d.Apply("usage: prog --help-commands | --help", "--help");
     StringAssert.StartsWith("usage", message);
 }
Example #21
0
        public static void Main(string[] args)
        {
            var arguments = new Docopt().Apply(USAGE, args, version: "serve 0.0.1", exit: true);

            var register   = arguments["--register"]?.IsTrue == true;
            var unregister = arguments["--unregister"]?.IsTrue == true;

            if (register)
            {
                if (OperatingSystem.IsWindows())
                {
                    RegisterContextMenu();
                    Console.WriteLine("Context menu items added.");
                }
                else
                {
                    Console.WriteLine("--register is not supported on this operating system.");
                }

                Environment.Exit(0);
            }

            if (unregister)
            {
                if (OperatingSystem.IsWindows())
                {
                    UnregisterContextMenu();
                    Console.WriteLine("Context menu items removed.");
                }
                else
                {
                    Console.WriteLine("--unregister is not supported on this operating system.");
                }

                Environment.Exit(0);
            }

            var path = arguments["<path>"] != null
                ? arguments["<path>"].ToString()
                : Directory.GetCurrentDirectory();

            Environment.CurrentDirectory = path;

            var httpsPort = arguments["--port"] != null
                ? arguments["--port"].AsInt
                : DefaultHttpsPort;

            var httpPort = httpsPort - 1;

            WebHost.CreateDefaultBuilder()
            .UseStartup <Startup>()
            .UseKestrel()
            .UseContentRoot(path)
            .UseWebRoot(path)
            .UseUrls($"http://localhost:{httpPort}", $"https://localhost:{httpsPort}")
            .Build()
            .Run();
        }
 public void Required()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"add", new ValueObject(true)}
         };
     var actual = new Docopt().Apply("Usage: prog add", "add");
     Assert.AreEqual(expected, actual);
 }
Example #23
0
        public MainArgs(string[] argv)
        {
            var version = Assembly.GetEntryAssembly().GetName().Version.ToString();
            var args    = new Docopt().Apply(usage, argv, version: version, exit: true);

            IsVersionRequest = bool.Parse(args["--version"]?.ToString());

            Version = args["--version"]?.ToString();
        }
 public void Optional_no_args()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"add", new ValueObject(false)}
         };
     var actual = new Docopt().Apply("Usage: prog [add]", "");
     Assert.AreEqual(expected, actual);
 }
 public void Flag_one_or_more()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"-v", new ValueObject(6)}
         };
     var actual = new Docopt().Apply("Usage: prog -v...", "-vvvvvv");
     Assert.AreEqual(expected, actual);
 }
Example #26
0
 public void Test_parse_argv_opt_with_arg()
 {
     Assert.AreEqual(new[]
     {
         new Option("-h", null, 0, new ValueObject(true)),
         new Option("-f", "--file", 1, "f.txt")
     },
                     Docopt.ParseArgv(TS("-h --file f.txt"), _options));
 }
Example #27
0
 public void Test_parse_argv_short_and_long()
 {
     Assert.AreEqual(new[]
     {
         new Option("-h", null, 0, new ValueObject(true)),
         new Option("-v", "--verbose", 0, new ValueObject(true))
     },
                     Docopt.ParseArgv(TS("-h --verbose"), _options));
 }
Example #28
0
        public CloudSettings CreateCloudSettings(string[] args)
        {
            var arguments = new Docopt().Apply(usage, args, exit: true);
            var point     = new Point(int.Parse(arguments["--x_coord"].Value.ToString()), int.Parse(arguments["--y_coord"].Value.ToString()));
            var radius    = int.Parse(arguments["--radius"].Value.ToString());

            radius = radius == 0 ? int.MaxValue : radius;
            return(new CloudSettings(point, radius));
        }
 public void Simple_flag()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"-v", new ValueObject(true)}
         };
     var actual = new Docopt().Apply("Usage: prog [-v]", "-v");
     Assert.AreEqual(expected, actual);
 }
 public void Flag_3()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"-v", new ValueObject(3)}
         };
     var actual = new Docopt().Apply("Usage: prog [-v | -vv | -vvv]", "-vvv");
     Assert.AreEqual(expected, actual);
 }
Example #31
0
        public void Test_issue_40_help()
        {
            var message = "";
            var d       = new Docopt();

            d.PrintExit += (s, e) => message = e.Message;
            d.Apply("usage: prog --help-commands | --help", "--help");
            StringAssert.StartsWith("usage", message);
        }
 public void Expect_one_arg()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"<p>", new ValueObject(new[] {"this"})}
         };
     var actual = new Docopt().Apply("usage: prog [<p>]...\n\n<p>  [default: x y]", "this");
     Assert.AreEqual(expected, actual);
 }
Example #33
0
        public void Test_issue_68_options_shortcut_does_not_include_options_in_usage_pattern()
        {
            var args = new Docopt().Apply("usage: prog [-ab] [options]\noptions: -x\n -y", "-ax");

            Assert.True(args["-a"].IsTrue);
            Assert.True(args["-b"].IsFalse);
            Assert.True(args["-x"].IsTrue);
            Assert.True(args["-y"].IsFalse);
        }
 public void Expect_empty_collection()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"<p>", new ValueObject(new string[0])}
         };
     var actual = new Docopt().Apply("usage: prog [<p>]...\n\n<p>  [default: x y]", "");
     Assert.AreEqual(expected, actual);
 }
 public void Expect_none()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"<p>", null}
         };
     var actual = new Docopt().Apply("usage: prog [<p>]\n\n<p>  [default: x]", "");
     Assert.AreEqual(expected, actual);
 }
 public void Expect_default_value()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"--data", new ValueObject(new[] {"x"})}
         };
     var actual = new Docopt().Apply("Usage: prog [--data=<data>...]\n\nOptions:\n\t-d --data=<arg>    Input data [default: x]", "");
     Assert.AreEqual(expected, actual);
 }
Example #37
0
        public TextSettings CreateTextSettings(string[] args, IMorphAnalyzer analyzer)
        {
            var arguments     = new Docopt().Apply(usage, args, exit: true);
            var path          = arguments["--file"].Value.ToString();
            var filter        = arguments["--filter"].Value.ToString();
            var partsOfSpeech = arguments["--exclude"].Value.ToString();
            var partOfSpeech  = arguments["--print_only"].Value.ToString();

            return(new TextSettings(path, filter, partsOfSpeech, partOfSpeech, analyzer));
        }
        public void Expect_default_value()
        {
            var expected = new Dictionary <string, ValueObject>
            {
                { "--data", new ValueObject(new[] { "x" }) }
            };
            var actual = new Docopt().Apply("Usage: prog [--data=<data>...]\n\nOptions:\n\t-d --data=<arg>    Input data [default: x]", "");

            Assert.AreEqual(expected, actual);
        }
 public void Optional_either_second_specified()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"add", new ValueObject(false)},
             {"rm", new ValueObject(true)}
         };
     var actual = new Docopt().Apply("Usage: prog (add|rm)", "rm");
     Assert.AreEqual(expected, actual);
 }
 public void Test_issue_40_same_prefix()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"--aabb", new ValueObject(false)},
             {"--aa", new ValueObject(true)}
         };
     var actual = new Docopt().Apply("usage: prog --aabb | --aa", "--aa");
     Assert.AreEqual(expected, actual);
 }
Example #41
0
        public void Flag_one_or_more()
        {
            var expected = new Dictionary <string, ValueObject>
            {
                { "-v", new ValueObject(6) }
            };
            var actual = new Docopt().Apply("Usage: prog -v...", "-vvvvvv");

            Assert.AreEqual(expected, actual);
        }
Example #42
0
        public void Flag_long_2()
        {
            var expected = new Dictionary <string, ValueObject>
            {
                { "--ver", new ValueObject(2) }
            };
            var actual = new Docopt().Apply("Usage: prog [--ver --ver]", "--ver --ver");

            Assert.AreEqual(expected, actual);
        }
Example #43
0
        public void Simple_flag()
        {
            var expected = new Dictionary <string, ValueObject>
            {
                { "-v", new ValueObject(true) }
            };
            var actual = new Docopt().Apply("Usage: prog [-v]", "-v");

            Assert.AreEqual(expected, actual);
        }
Example #44
0
        public void Flag_3()
        {
            var expected = new Dictionary <string, ValueObject>
            {
                { "-v", new ValueObject(3) }
            };
            var actual = new Docopt().Apply("Usage: prog [-v | -vv | -vvv]", "-vvv");

            Assert.AreEqual(expected, actual);
        }
 public void Match_opt_first()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"--opt", new ValueObject(true)},
             {"<args>", new ValueObject(new[]{"this", "that"})}
         };
     var actual = new Docopt().Apply("usage: prog [--opt] [<args>...]", "--opt this that");
     Assert.AreEqual(expected, actual);
 }
Example #46
0
 public void No_double_dash()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"-o", new ValueObject(true)},
             {"<arg>", new ValueObject("1")},
             {"--", new ValueObject(false)}
         };
     var actual = new Docopt().Apply("usage: prog [-o] [--] <arg>\nOptions: -o", "-o 1");
     Assert.AreEqual(expected, actual);
 }
        public void Match_opt_and_arg()
        {
            var expected = new Dictionary<string, ValueObject>
                {
                    {"-v", new ValueObject(true)},
                    {"A", new ValueObject("arg")}
                };
            var actual = new Docopt().Apply(@"Usage: prog [-v] A

             Options: -v  Be verbose.", "-v arg");
            Assert.AreEqual(expected, actual);
        }
        public void Short_and_long_option_lead_to_only_one_property()
        {
            const string usage = @"Usage:
  naval_fate -h | --help

Options:
  -h --help     Show this screen.";

            var generatedCode = new Docopt().GenerateCode(usage);

            Assert.AreEqual(1, Regex.Matches(generatedCode, "OptHelp").Count);
        }
        public void Should_return_duplicates_so_caller_knows_which_args_are_after_each_command()
        {
            const string USAGE = @"Test for duplicate commands and arguments.
Usage:
  prog command ARG <myarg> [OPTIONALARG] [-o -s=<arg> --long=ARG --switch]
  prog command ARG <myarg> [OPTIONALARG] [-o -s=<arg> --long=ARG --switch] FILE... 
  prog diff-command <myarg> [OPTIONALARG] ARG

Options:
 -o --option  Short & long option flag, the long will be used as it's more descriptive.
 -s=<arg>     Short option with arg.
 --long=ARG   Long option with arg.
 --switch     Long switch.
";

            var actual = new Docopt().GetNodes(USAGE);

            CollectionAssert.AreEqual(
                new Node[]
                {
                    new CommandNode ("command"),
                    new ArgumentNode("ARG",         ValueType.String),
                    new ArgumentNode("<myarg>",     ValueType.String),
                    new ArgumentNode("OPTIONALARG", ValueType.String),
                    new OptionNode  ("option",      ValueType.Bool),
                    new OptionNode  ("s",           ValueType.String),
                    new OptionNode  ("long",        ValueType.String),
                    new OptionNode  ("switch",      ValueType.Bool),
                    new CommandNode ("command"),
                    new ArgumentNode("ARG",         ValueType.String),
                    new ArgumentNode("<myarg>",     ValueType.String),
                    new ArgumentNode("OPTIONALARG", ValueType.String),
                    new OptionNode  ("option",      ValueType.Bool),
                    new OptionNode  ("s",           ValueType.String),
                    new OptionNode  ("long",        ValueType.String),
                    new OptionNode  ("switch",      ValueType.Bool),
                    new ArgumentNode("FILE",        ValueType.List),
                    new CommandNode ("diff-command"),
                    new ArgumentNode("<myarg>",     ValueType.String),
                    new ArgumentNode("OPTIONALARG", ValueType.String),
                    new ArgumentNode("ARG",         ValueType.String),
                },
                actual);
        }
        public void Should_get_nodes()
        {
            const string USAGE = @"Test host app for T4 Docopt.NET

Usage:
  prog command ARG <myarg> [OPTIONALARG] [-o -s=<arg> --long=ARG --switch]
  prog files FILE...

Options:
 -o --opt     Short switch with a longer name. The longer name is the ""main"" one.
 -s=<arg>     Short option with arg.
 --long=ARG   Long option with arg.
 --switch     Long switch. [default: false]

Explanation:
 This is a test ""usage"".
";

            var actual = new Docopt().GetNodes(USAGE);
            
            CollectionAssert.AreEqual(
                new Node[]
                {
                    new CommandNode ("command"),
                    new ArgumentNode("ARG",         ValueType.String),
                    new ArgumentNode("<myarg>",     ValueType.String),
                    new ArgumentNode("OPTIONALARG", ValueType.String),
                    new OptionNode  ("opt",         ValueType.Bool),
                    new OptionNode  ("s",           ValueType.String),
                    new OptionNode  ("long",        ValueType.String),
                    new OptionNode  ("switch",      ValueType.Bool),
                    new CommandNode ("files"),
                    new ArgumentNode("FILE",        ValueType.List),
                },
                actual);
        }
 public void Display_help()
 {
     var message = "";
     var errorCode = 0;
     var d = new Docopt();
     d.PrintExit += (s, e) =>
     {
         message = e.Message;
         errorCode = e.ErrorCode;
     };
     d.Apply(DOC, "--help");
     StringAssert.StartsWith("Usage", message);
     Assert.AreEqual(0, errorCode);
 }
 public void Test_issue_59_assign_empty_string_to_short()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"-l", new ValueObject("")}
         };
     var actual = new Docopt().Apply("usage: prog -l <a>\noptions: -l <a>", new[] {"-l", ""});
     Assert.AreEqual(expected, actual);
 }
 public void Test_issue_68_options_shortcut_does_not_include_options_in_usage_pattern()
 {
     var args = new Docopt().Apply("usage: prog [-ab] [options]\noptions: -x\n -y", "-ax");
     Assert.True(args["-a"].IsTrue);
     Assert.True(args["-b"].IsFalse);
     Assert.True(args["-x"].IsTrue);
     Assert.True(args["-y"].IsFalse);
 }
 public void Should_exit_error_code_1()
 {
     var message = "";
     var errorCode = 0;
     var d = new Docopt();
     d.PrintExit += (s, e) =>
         {
             message = e.Message;
             errorCode = e.ErrorCode;
         };
     d.Apply(DOC, "--fake", exit:true);
     StringAssert.StartsWith("Usage", message);
     Assert.AreEqual(1, errorCode);
 }
 public void Flag_long_2()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"--ver", new ValueObject(2)}
         };
     var actual = new Docopt().Apply("Usage: prog [--ver --ver]", "--ver --ver");
     Assert.AreEqual(expected, actual);
 }
Example #56
0
 public void Should_exit_error_code_1()
 {
     var message = "";
     var errorCode = 0;
     var d = new Docopt();
     d.PrintExit += (s, e) =>
         {
             message = e.Message;
             errorCode = e.ErrorCode;
         };
     d.Apply(DOC, "--fake", exit:true);
     StringAssert.StartsWith("Usage", message);
     Assert.AreEqual(1, errorCode, "Should exit with error code 1 when exit=true and invalid args provided");
 }
 public void Test_issue_59_assign_empty_string_to_long()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"--long", new ValueObject("")}
         };
     var actual = new Docopt().Apply("usage: prog --long=<a>", "--long=");
     Assert.AreEqual(expected, actual);
 }
 public void Match_one_opt_with_arg()
 {
     var expected = new Dictionary<string, ValueObject>
         {
             {"-v", new ValueObject(true)},
             {"-q", new ValueObject(false)},
             {"-r", new ValueObject(false)},
             {"--help", new ValueObject(false)},
             {"FILE", new ValueObject("file.py")},
             {"INPUT", null},
             {"OUTPUT", null}
         };
     var actual = new Docopt().Apply(DOC, "-v file.py");
     Assert.AreEqual(expected, actual);
 }