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(); }
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(); }