001package org.consensusj.bitcoin.cli;
002
003import org.apache.commons.cli.Option;
004import org.apache.commons.cli.OptionGroup;
005import org.apache.commons.cli.Options;
006
007/**
008 * Command-line options for tools that communicate with Bitcoin RPC
009 */
010public class BitcoinRpcCliOptions extends Options {
011    public BitcoinRpcCliOptions() {
012        super();
013        this.addOption("?", "help", false, "This help message")
014            .addOption((Option.builder("v")
015                        .longOpt("verbose")
016                        .desc("Print verbose output")
017                        .build()))
018// 'conf' and 'datadir' aren't implemented yet.
019//            .addOption("c", "conf", true, "Specify configuration file (default: bitcoin.conf)")
020//            .addOption("d", "datadir", true, "Specify data directory")
021            .addOptionGroup(new OptionGroup()
022                    .addOption(new Option(null, "testnet", false, "Use the test network"))
023                    .addOption(new Option(null, "regtest", false, "Enter regression test mode")))
024            .addOption(Option.builder()
025                    .longOpt("rpcconnect")
026                    .desc("Send commands to node running on <ip> (default: 127.0.0.1)")
027                    .hasArg()
028                    .argName("ip")
029                    .build())
030            .addOption(Option.builder()
031                    .longOpt("rpcport")
032                    .desc("Connect to JSON-RPC on <port> (default: 8332 or testnet: 18332)")
033                    .hasArg()
034                    .argName("port")
035                    .build())
036            .addOption(null, "rpcwait", false, "Wait for RPC server to start")
037            .addOption(Option.builder()
038                    .longOpt("rpcuser")
039                    .desc("Username for JSON-RPC connections")
040                    .hasArg()
041                    .argName("user")
042                    .build())
043            .addOption(Option.builder()
044                    .longOpt("rpcpassword")
045                    .desc("Password for JSON-RPC connections")
046                    .hasArg()
047                    .argName("pw")
048                    .build())
049            .addOption(null, "rpcssl", false, "Use https for JSON-RPC connections");
050    }
051
052}