예제 #1
0
		private static void InteractiveRun(string[] args)
		{
			string backupLocation = null;
			string restoreLocation = null;
			Action actionToTake = null;
			bool launchBrowser = false;
			var ravenConfiguration = new RavenConfiguration();

			OptionSet optionSet = null;
			optionSet = new OptionSet
			{
				{"set={==}", "The configuration {0:option} to set to the specified {1:value}" , (key, value) =>
				{
					ravenConfiguration.Settings[key] = value;
					ravenConfiguration.Initialize();
				}},
				{"config=", "The config {0:file} to use", path => ravenConfiguration.LoadFrom(path)},
				{"install", "Installs the RavenDB service", key => actionToTake= () => AdminRequired(InstallAndStart, key)},
				{"service-name=", "The {0:service name} to use when installing or uninstalling the service, default to RavenDB", name => ProjectInstaller.SERVICE_NAME = name},
				{"uninstall", "Uninstalls the RavenDB service", key => actionToTake= () => AdminRequired(EnsureStoppedAndUninstall, key)},
				{"start", "Starts the RavenDB service", key => actionToTake= () => AdminRequired(StartService, key)},
				{"restart", "Restarts the RavenDB service", key => actionToTake= () => AdminRequired(RestartService, key)},
				{"stop", "Stops the RavenDB service", key => actionToTake= () => AdminRequired(StopService, key)},
				{"ram", "Run RavenDB in RAM only", key =>
				{
					ravenConfiguration.Settings["Raven/RunInMemory"] = "true";
					ravenConfiguration.RunInMemory = true;
					actionToTake = () => RunInDebugMode(AnonymousUserAccessMode.All, ravenConfiguration, launchBrowser);		
				}},
				{"debug", "Runs RavenDB in debug mode", key => actionToTake = () => RunInDebugMode(null, ravenConfiguration, launchBrowser)},
				{"browser|launchbrowser", "After the server starts, launches the browser", key => launchBrowser = true},
				{"help", "Help about the command line interface", key =>
				{
					actionToTake = () => PrintUsage(optionSet);
				}},
				{"config-help", "Help about configuration options", key=>
				{
					actionToTake = PrintConfig;
				}},
				{"restore", 
					"Restores a RavenDB database from backup",
					key => actionToTake = () =>
					{
						if(backupLocation == null || restoreLocation == null)
						{
							throw new OptionException("when using restore, source and destination must be specified", "restore");
						}
						RunRestoreOperation(backupLocation, restoreLocation);
					}},
				{"dest=|destination=", "The {0:path} of the new new database", value => restoreLocation = value},
				{"src=|source=", "The {0:path} of the backup", value => backupLocation = value},
				{"encrypt-self-config", "Encrypt the RavenDB configuration file", file =>
						{
							actionToTake = () => ProtectConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
				        }},
				{"encrypt-config=", "Encrypt the specified {0:configuration file}", file =>
						{
							actionToTake = () => ProtectConfiguration(file);
				        }},
				{"decrypt-self-config", "Decrypt the RavenDB configuration file", file =>
						{
							actionToTake = () => UnprotectConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
				        }},
				{"decrypt-config=", "Decrypt the specified {0:configuration file}", file =>
						{
							actionToTake = () => UnprotectConfiguration(file);
				        }}
			};


			try
			{
				if (args.Length == 0) // we default to executing in debug mode 
					args = new[] { "--debug" };

				optionSet.Parse(args);
			}
			catch (Exception e)
			{
				Console.WriteLine(e.Message);
				PrintUsage(optionSet);
				return;
			}

			if (actionToTake == null)
				actionToTake = () => RunInDebugMode(null, ravenConfiguration, launchBrowser);

			actionToTake();

		}
예제 #2
0
파일: Program.cs 프로젝트: wbinford/ravendb
        private static void InteractiveRun(string[] args)
        {
        	string backupLocation = null;
        	string restoreLocation = null;
        	Action actionToTake = null;
        	bool launchBrowser = false;
			var ravenConfiguration = new RavenConfiguration();

        	OptionSet optionSet = null;
        	optionSet = new OptionSet
        	{
				{"config=", "The config section to use", path => ravenConfiguration.LoadFrom(path)},
        		{"install", "Installs the RavenDB service", key => actionToTake= () => AdminRequired(InstallAndStart, key)},
        		{"uninstall", "Uninstalls the RavenDB service", key => actionToTake= () => AdminRequired(EnsureStoppedAndUninstall, key)},
        		{"start", "Starts the RavenDB servce", key => actionToTake= () => AdminRequired(StartService, key)},
        		{"restart", "Restarts the RavenDB service", key => actionToTake= () => AdminRequired(RestartService, key)},
        		{"stop", "Stops the RavenDB service", key => actionToTake= () => AdminRequired(StopService, key)},
        		{"ram", "Run RavenDB in RAM only", key =>
        		{
        			ravenConfiguration.Settings["Raven/RunInMemory"] = "true";
        			ravenConfiguration.RunInMemory = true;
					actionToTake = () => RunInDebugMode(AnonymousUserAccessMode.All, ravenConfiguration, launchBrowser);		
        		}},
        		{"debug", "Runs RavenDB in debug mode", key => actionToTake = () => RunInDebugMode(null, ravenConfiguration, launchBrowser)},
				{"browser|launchbrowser", "After the server starts, launches the browser", key => launchBrowser = true},
        		{"help", "Help about the command line interface", key =>
        		{
					actionToTake = () => PrintUsage(optionSet);
        		}},
        		{"restore", 
        			"Restores a RavenDB database from backup",
        			key => actionToTake = () =>
        			{
        				if(backupLocation == null || restoreLocation == null)
        				{
        					throw new OptionException("when using restore, source and destination must be specified", "restore");
        				}
        				RunRestoreOperation(backupLocation, restoreLocation);
        			}},
        		{"dest=|destination=", "The {0:path} of the new new database", value => restoreLocation = value},
        		{"src=|source=", "The {0:path} of the backup", value => backupLocation = value},
        	};


        	try
        	{
				if(args.Length == 0) // we default to executing in debug mode 
					args = new[]{"--debug"};

        		optionSet.Parse(args);
        	}
        	catch (Exception e)
        	{
        		Console.WriteLine(e.Message);
        		PrintUsage(optionSet);
        		return;
        	}

			if (actionToTake == null)
				actionToTake = () => PrintUsage(optionSet);
			
			actionToTake();
			
        }