From 702479f97184dd09c3cb01a4fb4dfc58919819b2 Mon Sep 17 00:00:00 2001 From: "M. Nunberg" Date: Tue, 25 Sep 2012 15:59:48 -0700 Subject: [PATCH] initial commit.. --- .gitattributes | 22 + .gitignore | 163 ++++ src/CbcNet/CbcNet.csproj | 117 +++ src/CbcNet/CbcOptions.cs | 112 +++ src/CbcNet/Commands/CbcGet.cs | 31 + src/CbcNet/Commands/CbcObserve.cs | 76 ++ src/CbcNet/Commands/CbcSet.cs | 99 ++ src/CbcNet/Commands/CommandBase.cs | 38 + src/CbcNet/Program.cs | 84 ++ src/CbcNet/Properties/AssemblyInfo.cs | 36 + src/CbcNet/app.config | 3 + src/CbcNet/packages.config | 4 + src/cbc-net.sln | 98 ++ src/cbc-net.userprefs | 14 + .../CommandLineParser.1.9.3.19.nupkg | Bin 0 -> 32384 bytes .../lib/CommandLine.XML | 868 ++++++++++++++++++ .../lib/CommandLine.dll | Bin 0 -> 40448 bytes .../CommandLineParser.1.9.3.19/readme.txt | 48 + src/packages/repositories.config | 5 + 19 files changed, 1818 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 src/CbcNet/CbcNet.csproj create mode 100644 src/CbcNet/CbcOptions.cs create mode 100644 src/CbcNet/Commands/CbcGet.cs create mode 100644 src/CbcNet/Commands/CbcObserve.cs create mode 100644 src/CbcNet/Commands/CbcSet.cs create mode 100644 src/CbcNet/Commands/CommandBase.cs create mode 100644 src/CbcNet/Program.cs create mode 100644 src/CbcNet/Properties/AssemblyInfo.cs create mode 100644 src/CbcNet/app.config create mode 100644 src/CbcNet/packages.config create mode 100644 src/cbc-net.sln create mode 100644 src/cbc-net.userprefs create mode 100644 src/packages/CommandLineParser.1.9.3.19/CommandLineParser.1.9.3.19.nupkg create mode 100644 src/packages/CommandLineParser.1.9.3.19/lib/CommandLine.XML create mode 100644 src/packages/CommandLineParser.1.9.3.19/lib/CommandLine.dll create mode 100644 src/packages/CommandLineParser.1.9.3.19/readme.txt create mode 100644 src/packages/repositories.config diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..412eeda --- /dev/null +++ b/.gitattributes @@ -0,0 +1,22 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp +*.sln merge=union +*.csproj merge=union +*.vbproj merge=union +*.fsproj merge=union +*.dbproj merge=union + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ebd21a --- /dev/null +++ b/.gitignore @@ -0,0 +1,163 @@ +################# +## Eclipse +################# + +*.pydevproject +.project +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Rr]elease/ +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.vspscc +.builds +*.dotCover + +## TODO: If you have NuGet Package Restore enabled, uncomment this +#packages/ + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf + +# Visual Studio profiler +*.psess +*.vsp + +# ReSharper is a .NET coding add-in +_ReSharper* + +# Installshield output folder +[Ee]xpress + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish + +# Others +[Bb]in +[Oo]bj +sql +TestResults +*.Cache +ClientBin +stylecop.* +~$* +*.dbmdl +Generated_Code #added for RIA/Silverlight projects + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML + + + +############ +## Windows +############ + +# Windows image file caches +Thumbs.db + +# Folder config file +Desktop.ini + + +############# +## Python +############# + +*.py[co] + +# Packages +*.egg +*.egg-info +dist +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg + +# Mac crap +.DS_Store diff --git a/src/CbcNet/CbcNet.csproj b/src/CbcNet/CbcNet.csproj new file mode 100644 index 0000000..a95280b --- /dev/null +++ b/src/CbcNet/CbcNet.csproj @@ -0,0 +1,117 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664} + Exe + Properties + Couchbase.Cbc + cbc-net + 512 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + Couchbase.Cbc.Program + + + + ..\packages\CommandLineParser.1.9.3.19\lib\CommandLine.dll + + + + + + + + + + + + + + + + + + + + + + + + + {D438C0B3-A168-40B8-BDDD-61F0939DFF35} + Enyim.Caching + + + {708A2350-A26C-444D-B975-8164263951A7} + Couchbase + + + + + False + Microsoft .NET Framework 4 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 3.1 + true + + + + + \ No newline at end of file diff --git a/src/CbcNet/CbcOptions.cs b/src/CbcNet/CbcOptions.cs new file mode 100644 index 0000000..ba98693 --- /dev/null +++ b/src/CbcNet/CbcOptions.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using CommandLine; +using CommandLine.Text; +using Couchbase.Results; +using Couchbase.Operations; + +namespace Couchbase.Cbc +{ + class CbcOptions : CommandLineOptionsBase + { + [Option("b", "bucket", Required = false, HelpText = "Bucket to connect to", + DefaultValue = "default")] + public string Bucket { get; set; } + + [Option("B", "bucket-password", Required = false, HelpText = "Bucket password")] + public string BucketPassword { get; set; } + + [Option("H", "hostname", Required = false, HelpText = "Hostname to use", + DefaultValue = "127.0.0.1:8091")] + public string Hostname { get; set; } + + [Option("u", "username", Required = false, HelpText = "Username")] + public string Username { get; set; } + + [Option("p", "password", Required = false, HelpText = "Password")] + public string Password { get; set; } + + [Option("c", "command", Required = true, HelpText = "Command to use")] + public string Command { get; set; } + + [Option("k", "key", HelpText = "Key to use", Required = true)] + public string Key { get; set; } + + [Option("V", "value", HelpText = "Value for command (if applicable)")] + public string Value { get; set; } + + [Option("C", "cas", HelpText = "CAS For command (if applicable)")] + public UInt64 Cas { get; set; } + + [Option("E", "expiry", HelpText = "Expiration (if applicable)", DefaultValue = 0)] + public int expiry { get; set; } + public TimeSpan Expiry { get; set; } + + [Option("P", "persist", HelpText = "Persist to this many nodes")] + public int persist { get; set; } + public PersistTo Persist { get; set; } + + [Option("R", "replicate", HelpText = "Replicate to this many nodes")] + public int replicate { get; set; } + public ReplicateTo Replicate { get; set; } + + + + [HelpOption("?", "help", HelpText = "Display help screen")] + public string GetUsage() + { + HelpText help = new HelpText("Couchbase Command Line Client"); + help.Copyright = new CopyrightInfo("Couchbase", 2012); + help.AddPreOptionsLine("This emulates the 'cbc' command line as in libcouchbase"); + help.AddOptions(this); + return help; + } + + public void Process() + { + if (expiry != 0) + { + Expiry = new TimeSpan(0, 0, expiry); + } + else + { + Expiry = new TimeSpan(0); + } + + if (persist != 0) + { + if (persist > 4) + { + System.Console.Error.WriteLine( + "Detected too high of a persist value (will go ahead anyway"); + } + Persist = (PersistTo)persist; + } + else + { + Persist = PersistTo.Zero; + } + + if (replicate != 0) + { + if (replicate > 3) + { + System.Console.Error.WriteLine( + "Detected too high a replicate value (will go ahead anyway..)"); + } + Replicate = (ReplicateTo)replicate; + } + else + { + Replicate = ReplicateTo.Zero; + } + + if (Hostname.IndexOf(':') == -1) + { + Hostname += ":8091"; + } + } + } +} diff --git a/src/CbcNet/Commands/CbcGet.cs b/src/CbcNet/Commands/CbcGet.cs new file mode 100644 index 0000000..4dea3c3 --- /dev/null +++ b/src/CbcNet/Commands/CbcGet.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Enyim.Caching.Memcached.Results; + +namespace Couchbase.Cbc.Commands +{ + class CbcGet : CommandBase + { + public CbcGet(CouchbaseClient cli, + string key, + CbcOptions opts) + : base(cli, key, opts) { } + + public override bool Execute() + { + IGetOperationResult gres + = client.ExecuteGet(Key); + if (!gres.Success) + { + FailCommand(gres); + return false; + } + Console.Error.WriteLine("Command OK"); + Console.Error.WriteLine("Value is " + gres.Value); + Console.Error.WriteLine("Cas is " + gres.Cas.ToString()); + return true; + } + } +} diff --git a/src/CbcNet/Commands/CbcObserve.cs b/src/CbcNet/Commands/CbcObserve.cs new file mode 100644 index 0000000..f323468 --- /dev/null +++ b/src/CbcNet/Commands/CbcObserve.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Couchbase.Results; +using Couchbase.Operations; + +namespace Couchbase.Cbc.Commands +{ + class CbcObserve : CommandBase + { + public UInt64 Cas; + + public CbcObserve(CouchbaseClient cli, + string key, CbcOptions options, UInt64 cas = 0) : + base(cli, key, options) + { + if (cas > 0) + { + Cas = cas; + } + else if (options.Cas > 0 ) + { + Cas = options.Cas; + } + else + { + throw new ArgumentException("Invalid CAS"); + } + } + + public override bool Execute() + { + IObserveOperationResult res = client.Observe( + Key, Cas, options.Persist, options.Replicate); + + if (!res.Success) + { + FailCommand(res); + return false; + } + + string pretty = String.Format("Observe Code: (0x{0:x})", + (int)res.KeyState); + + foreach (string name in Enum.GetNames(typeof(ObserveKeyState))) + { + ObserveKeyState v = (ObserveKeyState) + Enum.Parse(typeof(ObserveKeyState), name); + if (res.KeyState == v) + { + pretty += " " + name; + break; + } + } + + Console.WriteLine(pretty); + + pretty = String.Format( + "Timings: Persist [{0}], Replicate [{1}]", + res.PersistenceStats.ToString(), + res.ReplicationStats.ToString()); + Console.WriteLine(pretty); + + return true; + } + } + + class CbcObserveWrap : CbcObserve + { + public CbcObserveWrap(CouchbaseClient cli, string key, CbcOptions opts) + :base(cli, key, opts) + { + } + } +} \ No newline at end of file diff --git a/src/CbcNet/Commands/CbcSet.cs b/src/CbcNet/Commands/CbcSet.cs new file mode 100644 index 0000000..eff6bf7 --- /dev/null +++ b/src/CbcNet/Commands/CbcSet.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Couchbase.Operations; +using Enyim.Caching.Memcached; +using Enyim.Caching.Memcached.Results; +using Couchbase.Results; + +namespace Couchbase.Cbc.Commands +{ + class CbcSet : CommandBase + { + public string Value; + + public CbcSet(CouchbaseClient cli, + string key, CbcOptions options) + : base(cli, key, options) + { + Value = options.Value; + if (Value == null) + { + throw new ArgumentException("Set command needs value"); + } + } + + private Dictionary modeMap = new Dictionary() + { + { "add", StoreMode.Add }, + { "replace", StoreMode.Replace }, + { "set", StoreMode.Set } + }; + + public override bool Execute() + { + ICasOperationResult res; + UTF8Encoding utf8 = new UTF8Encoding(); + byte[] vbytes = utf8.GetBytes(Value); + if (modeMap.ContainsKey(options.Command)) + { + StoreMode mode = modeMap[options.Command]; + Console.Error.WriteLine("Arguments to ExecuteStore: "); + Console.Error.WriteLine( + String.Format( + "0x{0:x}, '{1}', '{2}', {3}, {4}, {5}", + mode, Key, Value, options.Expiry, options.Persist, options.Replicate)); + + res = client.ExecuteStore( + mode, Key, Value, options.Expiry, options.Persist, options.Replicate); + if (!res.Success) + { + Console.Error.WriteLine("Initial command failed. Trying simple version.."); + Console.Error.WriteLine(res.Message); + if (res.InnerResult != null) + { + Console.Error.WriteLine(res.InnerResult.Message); + } + res = client.ExecuteStore(mode, Key, Value); + } + } + else if (options.Command == "append") + { + res = client.ExecuteAppend(Key, + options.Cas, + new ArraySegment(vbytes)); + } + else if (options.Command == "prepend") + { + res = client.ExecuteAppend(Key, + options.Cas, + new ArraySegment(vbytes)); + } + else + { + throw new ArgumentException("Unknown command"); + } + + if (!res.Success) + { + FailCommand(res); + return false; + } + + Console.WriteLine( + "Operation Succeeded. Cas: " + + res.Cas.ToString()); + + + if (options.Persist != PersistTo.Zero || + options.Replicate != ReplicateTo.Zero) + { + System.Console.WriteLine("Trying observe now..."); + new CbcObserve(client, Key, options, res.Cas).Execute(); + } + + return true; + } + } +} \ No newline at end of file diff --git a/src/CbcNet/Commands/CommandBase.cs b/src/CbcNet/Commands/CommandBase.cs new file mode 100644 index 0000000..d588b89 --- /dev/null +++ b/src/CbcNet/Commands/CommandBase.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Enyim.Caching.Memcached.Results; + +namespace Couchbase.Cbc.Commands +{ + interface ICommand + { + bool Execute(); + } + + abstract class CommandBase : ICommand + { + public string Key; + protected CouchbaseClient client; + protected CbcOptions options; + + public CommandBase(CouchbaseClient client, + string key, + CbcOptions options) + { + Key = key; + this.client = client; + this.options = options; + } + + protected void FailCommand(IOperationResult res) + { + Console.Error.WriteLine("Command Failed"); + Console.Error.WriteLine("Code is " + res.StatusCode.ToString()); + Console.Error.WriteLine("Message is " + res.Message); + } + + public abstract bool Execute(); + } +} diff --git a/src/CbcNet/Program.cs b/src/CbcNet/Program.cs new file mode 100644 index 0000000..11c5ebb --- /dev/null +++ b/src/CbcNet/Program.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using CommandLine; +using CommandLine.Text; +using Couchbase; +using Couchbase.Configuration; +using Enyim.Caching.Memcached; +using Enyim.Caching.Memcached.Results; +using Couchbase.Results; +using Couchbase.Operations; +using Couchbase.Cbc.Commands; + +namespace Couchbase.Cbc +{ + class Program + { + static Dictionary commandMap = new Dictionary() + { + { "set", typeof(CbcSet) }, + { "add", typeof(CbcSet) }, + { "replace", typeof(CbcSet) }, + { "append", typeof(CbcSet) }, + { "prepend", typeof(CbcSet) }, + { "observe", typeof(CbcObserveWrap) }, + { "get", typeof(CbcGet) } + }; + + static void Main(string[] args) + { + CbcOptions options = new CbcOptions(); + CommandLineParserSettings settings = new CommandLineParserSettings(); + settings.CaseSensitive = true; + CommandLineParser parser = new CommandLineParser(settings); + if (!parser.ParseArguments(args, options, System.Console.Error)) + { + return; + } + + + options.Process(); + + var config = new CouchbaseClientConfiguration(); + config.Bucket = options.Bucket; + config.Username = options.Username; + config.Password = options.Password; + config.BucketPassword = options.BucketPassword; + string uriString = "http://" + options.Hostname + "/pools"; + System.Console.WriteLine("URI: " + uriString); + config.Urls.Add(new UriBuilder(uriString).Uri); + + DateTime begin = DateTime.Now; + CouchbaseClient cli = new CouchbaseClient(config); + System.Console.WriteLine("Created new client.."); + + if (!commandMap.ContainsKey(options.Command)) + { + throw new ArgumentException("Unknown command!"); + } + + Type t = commandMap[options.Command]; + Type[] proto = { + typeof(CouchbaseClient), + typeof(string), + typeof(CbcOptions) + }; + object[] cargs = { + cli, + options.Key, + options + }; + + + + CommandBase cmd = (CommandBase) t.GetConstructor(proto).Invoke(cargs); + cmd.Execute(); + + var duration = DateTime.Now - begin; + Console.WriteLine( + String.Format("Duration was {0:F} Sec.", duration.TotalMilliseconds/1000)); + } + } +} diff --git a/src/CbcNet/Properties/AssemblyInfo.cs b/src/CbcNet/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..ab5ec1e --- /dev/null +++ b/src/CbcNet/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("cbc-net")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("cbc-net")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("658320f1-c4d6-4f6d-9bb2-c7a7573a0378")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/CbcNet/app.config b/src/CbcNet/app.config new file mode 100644 index 0000000..e365603 --- /dev/null +++ b/src/CbcNet/app.config @@ -0,0 +1,3 @@ + + + diff --git a/src/CbcNet/packages.config b/src/CbcNet/packages.config new file mode 100644 index 0000000..9ba1139 --- /dev/null +++ b/src/CbcNet/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/cbc-net.sln b/src/cbc-net.sln new file mode 100644 index 0000000..5216631 --- /dev/null +++ b/src/cbc-net.sln @@ -0,0 +1,98 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Couchbase", "..\..\couchbase-net-client\src\Couchbase\Couchbase.csproj", "{708A2350-A26C-444D-B975-8164263951A7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Enyim.Caching", "..\..\couchbase-net-client\lib\EnyimMemcached\Enyim.Caching\Enyim.Caching.csproj", "{D438C0B3-A168-40B8-BDDD-61F0939DFF35}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CbcNet", "CbcNet\CbcNet.csproj", "{E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {708A2350-A26C-444D-B975-8164263951A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {708A2350-A26C-444D-B975-8164263951A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {708A2350-A26C-444D-B975-8164263951A7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {708A2350-A26C-444D-B975-8164263951A7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {708A2350-A26C-444D-B975-8164263951A7}.Debug|x86.ActiveCfg = Debug|Any CPU + {708A2350-A26C-444D-B975-8164263951A7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {708A2350-A26C-444D-B975-8164263951A7}.Release|Any CPU.Build.0 = Release|Any CPU + {708A2350-A26C-444D-B975-8164263951A7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {708A2350-A26C-444D-B975-8164263951A7}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {708A2350-A26C-444D-B975-8164263951A7}.Release|x86.ActiveCfg = Release|Any CPU + {D438C0B3-A168-40B8-BDDD-61F0939DFF35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D438C0B3-A168-40B8-BDDD-61F0939DFF35}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D438C0B3-A168-40B8-BDDD-61F0939DFF35}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {D438C0B3-A168-40B8-BDDD-61F0939DFF35}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {D438C0B3-A168-40B8-BDDD-61F0939DFF35}.Debug|x86.ActiveCfg = Debug|Any CPU + {D438C0B3-A168-40B8-BDDD-61F0939DFF35}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D438C0B3-A168-40B8-BDDD-61F0939DFF35}.Release|Any CPU.Build.0 = Release|Any CPU + {D438C0B3-A168-40B8-BDDD-61F0939DFF35}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {D438C0B3-A168-40B8-BDDD-61F0939DFF35}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {D438C0B3-A168-40B8-BDDD-61F0939DFF35}.Release|x86.ActiveCfg = Release|Any CPU + {E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664}.Debug|Any CPU.ActiveCfg = Debug|x86 + {E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664}.Debug|x86.ActiveCfg = Debug|x86 + {E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664}.Debug|x86.Build.0 = Debug|x86 + {E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664}.Release|Any CPU.ActiveCfg = Release|x86 + {E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664}.Release|Mixed Platforms.Build.0 = Release|x86 + {E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664}.Release|x86.ActiveCfg = Release|x86 + {E72A5EB7-0D3D-45C4-8C0E-9CFBA3A1E664}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + StartupItem = cbc-net\CbcNet.csproj + Policies = $0 + $0.DotNetNamingPolicy = $1 + $1.DirectoryNamespaceAssociation = None + $1.ResourceNamePolicy = FileFormatDefault + $0.TextStylePolicy = $2 + $2.TabsToSpaces = False + $2.NoTabsAfterNonTabs = True + $2.inheritsSet = VisualStudio + $2.inheritsScope = text/plain + $2.scope = text/x-csharp + $0.CSharpFormattingPolicy = $3 + $3.IndentSwitchBody = True + $3.AnonymousMethodBraceStyle = NextLine + $3.PropertyBraceStyle = NextLine + $3.PropertyGetBraceStyle = NextLine + $3.PropertySetBraceStyle = NextLine + $3.EventBraceStyle = NextLine + $3.EventAddBraceStyle = NextLine + $3.EventRemoveBraceStyle = NextLine + $3.StatementBraceStyle = NextLine + $3.ArrayInitializerBraceStyle = NextLine + $3.BeforeMethodDeclarationParentheses = False + $3.BeforeMethodCallParentheses = False + $3.BeforeConstructorDeclarationParentheses = False + $3.BeforeDelegateDeclarationParentheses = False + $3.NewParentheses = False + $3.inheritsSet = Mono + $3.inheritsScope = text/x-csharp + $3.scope = text/x-csharp + $0.TextStylePolicy = $4 + $4.FileWidth = 120 + $4.TabsToSpaces = False + $4.inheritsSet = VisualStudio + $4.inheritsScope = text/plain + $4.scope = text/plain + $0.TextStylePolicy = $5 + $5.inheritsSet = null + $5.scope = application/config+xml + $0.XmlFormattingPolicy = $6 + $6.inheritsSet = null + $6.scope = application/config+xml + EndGlobalSection +EndGlobal diff --git a/src/cbc-net.userprefs b/src/cbc-net.userprefs new file mode 100644 index 0000000..b187e9a --- /dev/null +++ b/src/cbc-net.userprefs @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/packages/CommandLineParser.1.9.3.19/CommandLineParser.1.9.3.19.nupkg b/src/packages/CommandLineParser.1.9.3.19/CommandLineParser.1.9.3.19.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..1eeeefd120d06518368dbada3149c263c566e6d2 GIT binary patch literal 32384 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 + + + /home/giacomo/Projects/CommandLine/src/libcmdline/bin/Release/CommandLine + + + + + Provides base properties for creating an attribute, used to define rules for command line parsing. + + + + + Short name of this command line option. You can use only one character. + + + + + Long name of this command line option. This name is usually a single english word. + + + + + True if this command line option is required. + + + + + Gets or sets mapped property default value. + + + + + A short description of this command line option. Usually a sentence summary. + + + + + Indicates the instance method that must be invoked when it becomes necessary show your help screen. + The method signature is an instance method with no parameters and + return value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + Allows you to define short and long option names. + + The short name of the option or null if not used. + The long name of the option or null if not used. + + + + Returns always false for this kind of option. + This behaviour can't be changed by design; if you try set + an will be thrown. + + + + + Models an option that can accept multiple values as separated arguments. + + + + + Initializes a new instance of the class. + + The short name of the option or null if not used. + The long name of the option or null if not used. + + + + Models an option specification. + + + + + Initializes a new instance of the class. + + The short name of the option or null if not used. + The long name of the option or null if not used. + + + + Gets or sets the option's mutually exclusive set. + + + + + Models an option that can accept multiple values. + Must be applied to a field compatible with an interface + of instances. + + + + + Initializes a new instance of the class. + + The short name of the option or null if not used. + The long name of the option or null if not used. + + + + Initializes a new instance of the class. + + The short name of the option or null if not used. + The long name of the option or null if not used. + Values separator character. + + + + Gets or sets the values separator character. + + + + + Models a list of command line arguments that are not options. + Must be applied to a field compatible with an interface + of instances. + + + + + Initializes a new instance of the class. + + A type that implements . + Thrown if is null. + + + + Gets or sets the maximum element allow for the list managed by type. + If lesser than 0, no upper bound is fixed. + If equal to 0, no elements are allowed. + + + + + Models a bad parsed option. + + + + + The short name of the option + + Returns the short name of the option. + + + + The long name of the option + + Returns the long name of the option. + + + + Models a parsing error. + + + + + Gets or a the bad parsed option. + + + The bad option. + + + + + Gets or sets a value indicating whether this violates required. + + + true if violates required; otherwise, false. + + + + + Gets or sets a value indicating whether this violates format. + + + true if violates format; otherwise, false. + + + + + Gets or sets a value indicating whether this violates mutual exclusiveness. + + + true if violates mutual exclusiveness; otherwise, false. + + + + + Models a type that records the parser state afeter parsing. + + + + + Gets a list of parsing errors. + + + Parsing errors. + + + + + Defines a basic interface to parse command line arguments. + + + + + Parses a array of command line arguments, setting values in + parameter instance's public fields decorated with appropriate attributes. + + A array of command line arguments. + An object's instance used to receive values. + Parsing rules are defined using derived types. + True if parsing process succeed. + Thrown if is null. + Thrown if is null. + + + + Parses a array of command line arguments, setting values in + parameter instance's public fields decorated with appropriate attributes. + This overload allows you to specify a derived instance for write text messages. + + A array of command line arguments. + An object's instance used to receive values. + Parsing rules are defined using derived types. + Any instance derived from , + usually . Setting this argument to null, will disable help screen. + True if parsing process succeed. + Thrown if is null. + Thrown if is null. + + + + Provides the abstract base class for a strongly typed options target. Used when you need to get parsing errors. + + + + + This exception is thrown when a generic parsing error occurs. + + + + + Specifies a set of features to configure a behavior. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class, + setting the case comparison behavior. + + If set to true, parsing will be case sensitive. + + + + Initializes a new instance of the class, + setting the used for help method output. + + Any instance derived from , + default . Setting this argument to null, will disable help screen. + + + + Initializes a new instance of the class, + setting case comparison and help output options. + + If set to true, parsing will be case sensitive. + Any instance derived from , + default . Setting this argument to null, will disable help screen. + + + + Initializes a new instance of the class, + setting case comparison and mutually exclusive behaviors. + + If set to true, parsing will be case sensitive. + If set to true, enable mutually exclusive behavior. + + + + Initializes a new instance of the class, + setting case comparison, mutually exclusive behavior and help output option. + + If set to true, parsing will be case sensitive. + If set to true, enable mutually exclusive behavior. + Any instance derived from , + default . Setting this argument to null, will disable help screen. + + + + Initializes a new instance of the class, + setting case comparison, mutually exclusive behavior and help output option. + + If set to true, parsing will be case sensitive. + If set to true, enable mutually exclusive behavior. + If set to true, allow the parser to skip unknown argument, otherwise return a parse failure + Any instance derived from , + default . Setting this argument to null, will disable help screen. + + + + Gets or sets the case comparison behavior. + Default is set to true. + + + + + Gets or sets the mutually exclusive behavior. + Default is set to false. + + + + + Gets or sets the used for help method output. + Setting this property to null, will disable help screen. + + + + + Gets or sets a value indicating if the parser shall move on to the next argument and ignore the given argument if it + encounter an unknown arguments + + + true to allow parsing the arguments with differents class options that do not have all the arguments. + + + This allows fragmented version class parsing, useful for project with addon where addons also requires command line arguments but + when these are unknown by the main program at build time. + + + + + Provides methods to parse command line arguments. + Default implementation for . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class, + configurable with a object. + + The object is used to configure + aspects and behaviors of the parser. + + + + Singleton instance created with basic defaults. + + + + + Parses a array of command line arguments, setting values in + parameter instance's public fields decorated with appropriate attributes. + + A array of command line arguments. + An object's instance used to receive values. + Parsing rules are defined using derived types. + True if parsing process succeed. + Thrown if is null. + Thrown if is null. + + + + Parses a array of command line arguments, setting values in + parameter instance's public fields decorated with appropriate attributes. + This overload allows you to specify a derived instance for write text messages. + + A array of command line arguments. + An object's instance used to receive values. + Parsing rules are defined using derived types. + Any instance derived from , + usually . Setting this argument to null, will disable help screen. + True if parsing process succeed. + Thrown if is null. + Thrown if is null. + + + + Models an abstract sentence builder. + + + + + Gets a string containing word 'option'. + + + The word 'option'. + + + + + Gets a string containing the word 'and'. + + + The word 'and'. + + + + + Gets a string containing the sentence 'required option missing'. + + + The sentence 'required option missing'. + + + + + Gets a string containing the sentence 'violates format'. + + + The sentence 'violates format'. + + + + + Gets a string containing the sentence 'violates mutual exclusiveness'. + + + The sentence 'violates mutual exclusiveness'. + + + + + Gets a string containing the error heading text. + + + The error heading text. + + + + + Creates the built in sentence builder. + + + The built in sentence builder. + + + + + Models an english sentence builder, currently the default one. + + + + + Gets a string containing word 'option' in english. + + + The word 'option' in english. + + + + + Gets a string containing the word 'and' in english. + + + The word 'and' in english. + + + + + Gets a string containing the sentence 'required option missing' in english. + + + The sentence 'required option missing' in english. + + + + + Gets a string containing the sentence 'violates format' in english. + + + The sentence 'violates format' in english. + + + + + Gets a string containing the sentence 'violates mutual exclusiveness' in english. + + + The sentence 'violates mutual exclusiveness' in english. + + + + + Gets a string containing the error heading text in english. + + + The error heading text in english. + + + + + Models the copyright informations part of an help text. + You can assign it where you assign any instance. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + specifying author and year. + + The company or person holding the copyright. + The year of coverage of copyright. + Thrown when parameter is null or empty string. + + + + Initializes a new instance of the class + specifying author and years. + + The company or person holding the copyright. + The years of coverage of copyright. + Thrown when parameter is null or empty string. + Thrown when parameter is not supplied. + + + + Initializes a new instance of the class + specifying symbol case, author and years. + + The case of the copyright symbol. + The company or person holding the copyright. + The years of coverage of copyright. + Thrown when parameter is null or empty string. + Thrown when parameter is not supplied. + + + + When overridden in a derived class, allows to specify a different copyright word. + + + + + Returns the copyright informations as a . + + The that contains the copyright informations. + + + + When overridden in a derived class, allows to specify a new algorithm to render copyright years + as a instance. + + A array of years. + A instance with copyright years. + + + + Converts the copyright informations to a . + + This instance. + The that contains the copyright informations. + + + + Models the heading informations part of an help text. + You can assign it where you assign any instance. + + + + + Initializes a new instance of the class + specifying program name. + + The name of the program. + Thrown when parameter is null or empty string. + + + + Initializes a new instance of the class + specifying program name and version. + + The name of the program. + The version of the program. + Thrown when parameter is null or empty string. + + + + Returns the heading informations as a . + + The that contains the heading informations. + + + + Writes out a string and a new line using the program name specified in the constructor + and parameter. + + The message to write. + The target derived type. + Thrown when parameter is null or empty string. + Thrown when parameter is null. + + + + Writes out a string and a new line using the program name specified in the constructor + and parameter to standard output stream. + + The message to write. + Thrown when parameter is null or empty string. + + + + Writes out a string and a new line using the program name specified in the constructor + and parameter to standard error stream. + + The message to write. + Thrown when parameter is null or empty string. + + + + Converts the heading informations to a . + + This instance. + The that contains the heading informations. + + + + Handle parsing errors delegate. + + + + + Provides data for the FormatOptionHelpText event. + + + + + Initializes a new instance of the class. + + Option to format. + + + + Gets the option to format. + + + + + Models an help text and collects related informations. + You can assign it in place of a instance. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + specifying the sentence builder. + + + A instance. + + + + + Initializes a new instance of the class + specifying heading informations. + + A string with heading information or + an instance of . + Thrown when parameter is null or empty string. + + + + Initializes a new instance of the class + specifying the sentence builder and heading informations. + + + A instance. + + + A string with heading information or + an instance of . + + + + + Initializes a new instance of the class + specifying heading and copyright informations. + + A string with heading information or + an instance of . + A string with copyright information or + an instance of . + Thrown when one or more parameters are null or empty strings. + + + + Initializes a new instance of the class + specifying heading and copyright informations. + + A string with heading information or + an instance of . + A string with copyright information or + an instance of . + The instance that collected command line arguments parsed with class. + Thrown when one or more parameters are null or empty strings. + + + + Message type enumeration. + + + + + Parsing error due to a violation of the format of an option value. + + + + + Parsing error due to a violation of mandatory option. + + + + + Parsing error due to a violation of the mutual exclusiveness of two or more option. + + + + + Occurs when an option help text is formatted. + + + + + Sets the heading information string. + You can directly assign a instance. + + + + + Sets the copyright information string. + You can directly assign a instance. + + + + + Gets or sets the maximum width of the display. This determines word wrap when displaying the text. + + The maximum width of the display. + + + + Gets or sets the format of options for adding or removing dashes. + It modifies behavior of method. + + + + + Gets or sets whether to add an additional line after the description of the option. + + + + + Creates a new instance of the class using common defaults. + + + An instance of class. + + + The instance that collected command line arguments parsed with class. + + + + + Creates a new instance of the class using common defaults. + + + An instance of class. + + + The instance that collected command line arguments parsed with class. + + + A delegate used to customize the text block for reporting parsing errors. + + + + + Adds a text line after copyright and before options usage informations. + + A instance. + Thrown when parameter is null or empty string. + + + + Adds a text line at the bottom, after options usage informations. + + A instance. + Thrown when parameter is null or empty string. + + + + Adds a text block with options usage informations. + + The instance that collected command line arguments parsed with class. + Thrown when parameter is null. + + + + Adds a text block with options usage informations. + + The instance that collected command line arguments parsed with the class. + The word to use when the option is required. + Thrown when parameter is null. + Thrown when parameter is null or empty string. + + + + Adds a text block with options usage informations. + + The instance that collected command line arguments parsed with the class. + The word to use when the option is required. + The maximum length of the help documentation. + Thrown when parameter is null. + Thrown when parameter is null or empty string. + + + + Builds a string that contains a parsing error message. + + + An options target instance that collected command line arguments parsed with the class. + + + The that contains the parsing error message. + + + + + Returns the help informations as a . + + The that contains the help informations. + + + + Converts the help informations to a . + + This instance. + The that contains the help informations. + + + diff --git a/src/packages/CommandLineParser.1.9.3.19/lib/CommandLine.dll b/src/packages/CommandLineParser.1.9.3.19/lib/CommandLine.dll new file mode 100644 index 0000000000000000000000000000000000000000..9a75d599440223be1dd7193929f26ec1f571e818 GIT binary patch literal 40448 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%0D&fTCQa|K<$m5d)_;?@9BZWWi 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 Ri1Ogo*|Gos=l?ki{0~ISy4U~! literal 0 HcmV?d00001 diff --git a/src/packages/CommandLineParser.1.9.3.19/readme.txt b/src/packages/CommandLineParser.1.9.3.19/readme.txt new file mode 100644 index 0000000..5fecb39 --- /dev/null +++ b/src/packages/CommandLineParser.1.9.3.19/readme.txt @@ -0,0 +1,48 @@ +Command Line Parser Library 1.9.3.19 Beta +----------------------------------------- +Giacomo Stelluti Scala +(gsscoder@gmail.com) + +Codeplex: http://commandline.codeplex.com/ +GitHub (Latest Sources, Updated Docs): https://github.com/gsscoder/commandline + +Upgrading from 1.8.* versions: +------------------------------ +The major API change is that all attributes that inherits from BaseOptionAttribute now +apply only to properties. Fields are no longer supported. + +Old Code: +--------- +class Options { + [Option("o", "my-option", HelpText="This is an option!")] + public int MyOption = 10; +} + +New Code: +--------- +class Options { + [Option("o", "my-option", DefaultValue=10, HelpText="This is an option!")] + public int MyOption { get; set; } +} + +As you can see I've added the new DefaultValue property to help you initialize properties. + +Shortcut for Help Screen +------------------------ +[HelpOption] +public string GetUsage() +{ + return HelpText.AutoBuild(this, + (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current)); +} + +Note: +----- +If you don't use mutually exclusive options, now there's a singleton built for common uses: + +if (CommandLineParser.Default.ParseArguments(args, options)) { + // consume values here +} + + +Have fun! \ No newline at end of file diff --git a/src/packages/repositories.config b/src/packages/repositories.config new file mode 100644 index 0000000..6d281e6 --- /dev/null +++ b/src/packages/repositories.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file