diff --git a/.cargo/config.toml b/.cargo/config.toml index da0b5d5ff..e8a8edce5 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,7 +1,6 @@ # paths = ["/path/to/override"] # path dependency overrides [alias] # command aliases -md-gen = "run --bin doc-gen --features clap-markdown" f = "fmt" # b = "build" # c = "check" diff --git a/.github/workflows/full-help-docs.yml b/.github/workflows/full-help-docs.yml index c8fbd9e02..4893a88fd 100644 --- a/.github/workflows/full-help-docs.yml +++ b/.github/workflows/full-help-docs.yml @@ -18,8 +18,8 @@ jobs: # this looks goofy to get GITHUB_OUTPUT to work with multi-line return values; # see https://stackoverflow.com/a/74266196/249801 run: | - cargo md-gen - raw_diff=$(git diff docs/soroban-cli-full-docs.md) + make generate-full-help-doc + raw_diff=$(git diff FULL_HELP_DOCS.md) if [ "$raw_diff" != "" ]; then echo ""; echo "Unexpected docs change:"; echo "======================="; echo ""; echo "$raw_diff"; echo ""; echo "======================="; echo ""; fi echo diff=$raw_diff >> $GITHUB_OUTPUT id: doc-gen diff --git a/Cargo.lock b/Cargo.lock index 09d548fd4..46ffe86eb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4024,6 +4024,13 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "stellar-cli" +version = "21.0.0-preview.1" +dependencies = [ + "soroban-cli", +] + [[package]] name = "stellar-rpc-client" version = "21.0.1" diff --git a/Cargo.toml b/Cargo.toml index 0f91b7153..97450ffca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [workspace] resolver = "2" members = [ + "cmd/stellar-cli", "cmd/soroban-cli", "cmd/crates/*", "cmd/crates/soroban-test/tests/fixtures/test-wasms/*", diff --git a/docs/soroban-cli-full-docs.md b/FULL_HELP_DOCS.md similarity index 82% rename from docs/soroban-cli-full-docs.md rename to FULL_HELP_DOCS.md index b005f1e7f..61fe2e07d 100644 --- a/docs/soroban-cli-full-docs.md +++ b/FULL_HELP_DOCS.md @@ -1,91 +1,90 @@ -# Command-Line Help for `soroban` +# Command-Line Help for `stellar` -This document contains the help content for the `soroban` command-line program. +This document contains the help content for the `stellar` command-line program. **Command Overview:** -* [`soroban`↴](#soroban) -* [`soroban completion`↴](#soroban-completion) -* [`soroban contract`↴](#soroban-contract) -* [`soroban contract asset`↴](#soroban-contract-asset) -* [`soroban contract asset id`↴](#soroban-contract-asset-id) -* [`soroban contract asset deploy`↴](#soroban-contract-asset-deploy) -* [`soroban contract bindings`↴](#soroban-contract-bindings) -* [`soroban contract bindings json`↴](#soroban-contract-bindings-json) -* [`soroban contract bindings rust`↴](#soroban-contract-bindings-rust) -* [`soroban contract bindings typescript`↴](#soroban-contract-bindings-typescript) -* [`soroban contract build`↴](#soroban-contract-build) -* [`soroban contract extend`↴](#soroban-contract-extend) -* [`soroban contract deploy`↴](#soroban-contract-deploy) -* [`soroban contract fetch`↴](#soroban-contract-fetch) -* [`soroban contract id`↴](#soroban-contract-id) -* [`soroban contract id asset`↴](#soroban-contract-id-asset) -* [`soroban contract id wasm`↴](#soroban-contract-id-wasm) -* [`soroban contract init`↴](#soroban-contract-init) -* [`soroban contract inspect`↴](#soroban-contract-inspect) -* [`soroban contract install`↴](#soroban-contract-install) -* [`soroban contract invoke`↴](#soroban-contract-invoke) -* [`soroban contract optimize`↴](#soroban-contract-optimize) -* [`soroban contract read`↴](#soroban-contract-read) -* [`soroban contract restore`↴](#soroban-contract-restore) -* [`soroban events`↴](#soroban-events) -* [`soroban keys`↴](#soroban-keys) -* [`soroban keys add`↴](#soroban-keys-add) -* [`soroban keys address`↴](#soroban-keys-address) -* [`soroban keys fund`↴](#soroban-keys-fund) -* [`soroban keys generate`↴](#soroban-keys-generate) -* [`soroban keys ls`↴](#soroban-keys-ls) -* [`soroban keys rm`↴](#soroban-keys-rm) -* [`soroban keys show`↴](#soroban-keys-show) -* [`soroban xdr`↴](#soroban-xdr) -* [`soroban xdr types`↴](#soroban-xdr-types) -* [`soroban xdr types list`↴](#soroban-xdr-types-list) -* [`soroban xdr guess`↴](#soroban-xdr-guess) -* [`soroban xdr decode`↴](#soroban-xdr-decode) -* [`soroban xdr encode`↴](#soroban-xdr-encode) -* [`soroban xdr version`↴](#soroban-xdr-version) -* [`soroban network`↴](#soroban-network) -* [`soroban network add`↴](#soroban-network-add) -* [`soroban network rm`↴](#soroban-network-rm) -* [`soroban network ls`↴](#soroban-network-ls) -* [`soroban network start`↴](#soroban-network-start) -* [`soroban network stop`↴](#soroban-network-stop) -* [`soroban version`↴](#soroban-version) -* [`soroban cache`↴](#soroban-cache) -* [`soroban cache clean`↴](#soroban-cache-clean) -* [`soroban cache path`↴](#soroban-cache-path) -* [`soroban cache actionlog`↴](#soroban-cache-actionlog) -* [`soroban cache actionlog ls`↴](#soroban-cache-actionlog-ls) -* [`soroban cache actionlog read`↴](#soroban-cache-actionlog-read) - -## `soroban` +* [`stellar`↴](#stellar) +* [`stellar completion`↴](#stellar-completion) +* [`stellar contract`↴](#stellar-contract) +* [`stellar contract asset`↴](#stellar-contract-asset) +* [`stellar contract asset id`↴](#stellar-contract-asset-id) +* [`stellar contract asset deploy`↴](#stellar-contract-asset-deploy) +* [`stellar contract bindings`↴](#stellar-contract-bindings) +* [`stellar contract bindings json`↴](#stellar-contract-bindings-json) +* [`stellar contract bindings rust`↴](#stellar-contract-bindings-rust) +* [`stellar contract bindings typescript`↴](#stellar-contract-bindings-typescript) +* [`stellar contract build`↴](#stellar-contract-build) +* [`stellar contract extend`↴](#stellar-contract-extend) +* [`stellar contract deploy`↴](#stellar-contract-deploy) +* [`stellar contract fetch`↴](#stellar-contract-fetch) +* [`stellar contract id`↴](#stellar-contract-id) +* [`stellar contract id asset`↴](#stellar-contract-id-asset) +* [`stellar contract id wasm`↴](#stellar-contract-id-wasm) +* [`stellar contract init`↴](#stellar-contract-init) +* [`stellar contract inspect`↴](#stellar-contract-inspect) +* [`stellar contract install`↴](#stellar-contract-install) +* [`stellar contract invoke`↴](#stellar-contract-invoke) +* [`stellar contract optimize`↴](#stellar-contract-optimize) +* [`stellar contract read`↴](#stellar-contract-read) +* [`stellar contract restore`↴](#stellar-contract-restore) +* [`stellar events`↴](#stellar-events) +* [`stellar keys`↴](#stellar-keys) +* [`stellar keys add`↴](#stellar-keys-add) +* [`stellar keys address`↴](#stellar-keys-address) +* [`stellar keys fund`↴](#stellar-keys-fund) +* [`stellar keys generate`↴](#stellar-keys-generate) +* [`stellar keys ls`↴](#stellar-keys-ls) +* [`stellar keys rm`↴](#stellar-keys-rm) +* [`stellar keys show`↴](#stellar-keys-show) +* [`stellar xdr`↴](#stellar-xdr) +* [`stellar xdr types`↴](#stellar-xdr-types) +* [`stellar xdr types list`↴](#stellar-xdr-types-list) +* [`stellar xdr guess`↴](#stellar-xdr-guess) +* [`stellar xdr decode`↴](#stellar-xdr-decode) +* [`stellar xdr encode`↴](#stellar-xdr-encode) +* [`stellar xdr version`↴](#stellar-xdr-version) +* [`stellar network`↴](#stellar-network) +* [`stellar network add`↴](#stellar-network-add) +* [`stellar network rm`↴](#stellar-network-rm) +* [`stellar network ls`↴](#stellar-network-ls) +* [`stellar network start`↴](#stellar-network-start) +* [`stellar network stop`↴](#stellar-network-stop) +* [`stellar version`↴](#stellar-version) +* [`stellar cache`↴](#stellar-cache) +* [`stellar cache clean`↴](#stellar-cache-clean) +* [`stellar cache path`↴](#stellar-cache-path) +* [`stellar cache actionlog`↴](#stellar-cache-actionlog) +* [`stellar cache actionlog ls`↴](#stellar-cache-actionlog-ls) +* [`stellar cache actionlog read`↴](#stellar-cache-actionlog-read) + +## `stellar` Build, deploy, & interact with contracts; set identities to sign with; configure networks; generate keys; and more. -Intro: https://soroban.stellar.org/docs -CLI Reference: https://github.com/stellar/soroban-cli/tree/main/docs/soroban-cli-full-docs.md +Stellar Docs: https://developers.stellar.org +CLI Full Hep Docs: https://github.com/stellar/soroban-cli/tree/main/FULL_HELP_DOCS.md The easiest way to get started is to generate a new identity: - soroban config identity generate alice + stellar config identity generate alice You can use identities with the `--source` flag in other commands later. Commands that relate to smart contract interactions are organized under the `contract` subcommand. List them: - soroban contract --help + stellar contract --help -A Soroban contract has its interface schema types embedded in the binary that gets deployed on-chain, making it possible to dynamically generate a custom CLI for each. `soroban contract invoke` makes use of this: +A Soroban contract has its interface schema types embedded in the binary that gets deployed on-chain, making it possible to dynamically generate a custom CLI for each. The invoke subcommand makes use of this: - soroban contract invoke --id CCR6QKTWZQYW6YUJ7UP7XXZRLWQPFRV6SWBLQS4ZQOSAF4BOUD77OTE2 --source alice --network testnet -- --help + stellar contract invoke --id CCR6QKTWZQYW6YUJ7UP7XXZRLWQPFRV6SWBLQS4ZQOSAF4BOUD77OTE2 --source alice --network testnet -- --help Anything after the `--` double dash (the "slop") is parsed as arguments to the contract-specific CLI, generated on-the-fly from the embedded schema. For the hello world example, with a function called `hello` that takes one string argument `to`, here's how you invoke it: - soroban contract invoke --id CCR6QKTWZQYW6YUJ7UP7XXZRLWQPFRV6SWBLQS4ZQOSAF4BOUD77OTE2 --source alice --network testnet -- hello --to world + stellar contract invoke --id CCR6QKTWZQYW6YUJ7UP7XXZRLWQPFRV6SWBLQS4ZQOSAF4BOUD77OTE2 --source alice --network testnet -- hello --to world -Full CLI reference: https://github.com/stellar/soroban-tools/tree/main/docs/soroban-cli-full-docs.md -**Usage:** `soroban [OPTIONS] ` +**Usage:** `stellar [OPTIONS] ` ###### **Subcommands:** @@ -105,7 +104,7 @@ Full CLI reference: https://github.com/stellar/soroban-tools/tree/main/docs/soro Possible values: `true`, `false` * `--config-dir ` — Location of config directory, default is "." -* `-f`, `--filter-logs ` — Filter logs output. To turn on "soroban_cli::log::footprint=debug" or off "=off". Can also use env var `RUST_LOG` +* `-f`, `--filter-logs ` — Filter logs output. To turn on "stellar_cli::log::footprint=debug" or off "=off". Can also use env var `RUST_LOG` * `-q`, `--quiet` — Do not write logs to stderr including `INFO` Possible values: `true`, `false` @@ -118,7 +117,7 @@ Full CLI reference: https://github.com/stellar/soroban-tools/tree/main/docs/soro Possible values: `true`, `false` -* `--list` — List installed plugins. E.g. `soroban-hello` +* `--list` — List installed plugins. E.g. `stellar-hello` Possible values: `true`, `false` @@ -129,7 +128,7 @@ Full CLI reference: https://github.com/stellar/soroban-tools/tree/main/docs/soro -## `soroban completion` +## `stellar completion` Print shell completion code for the specified shell @@ -142,7 +141,7 @@ To enable autocomplete in the current bash shell, run: To enable autocomplete permanently, run: echo "source <(soroban completion --shell bash)" >> ~/.bashrc -**Usage:** `soroban completion --shell ` +**Usage:** `stellar completion --shell ` ###### **Options:** @@ -153,11 +152,11 @@ To enable autocomplete permanently, run: -## `soroban contract` +## `stellar contract` Tools for smart contract developers -**Usage:** `soroban contract ` +**Usage:** `stellar contract ` ###### **Subcommands:** @@ -178,11 +177,11 @@ Tools for smart contract developers -## `soroban contract asset` +## `stellar contract asset` Utilities to deploy a Stellar Asset Contract or get its id -**Usage:** `soroban contract asset ` +**Usage:** `stellar contract asset ` ###### **Subcommands:** @@ -191,11 +190,11 @@ Utilities to deploy a Stellar Asset Contract or get its id -## `soroban contract asset id` +## `stellar contract asset id` Get Id of builtin Soroban Asset Contract. Deprecated, use `soroban contract id asset` instead -**Usage:** `soroban contract asset id [OPTIONS] --asset --source-account ` +**Usage:** `stellar contract asset id [OPTIONS] --asset --source-account ` ###### **Options:** @@ -213,11 +212,11 @@ Get Id of builtin Soroban Asset Contract. Deprecated, use `soroban contract id a -## `soroban contract asset deploy` +## `stellar contract asset deploy` Deploy builtin Soroban Asset Contract -**Usage:** `soroban contract asset deploy [OPTIONS] --asset --source-account ` +**Usage:** `stellar contract asset deploy [OPTIONS] --asset --source-account ` ###### **Options:** @@ -251,11 +250,11 @@ Deploy builtin Soroban Asset Contract -## `soroban contract bindings` +## `stellar contract bindings` Generate code client bindings for a contract -**Usage:** `soroban contract bindings ` +**Usage:** `stellar contract bindings ` ###### **Subcommands:** @@ -265,11 +264,11 @@ Generate code client bindings for a contract -## `soroban contract bindings json` +## `stellar contract bindings json` Generate Json Bindings -**Usage:** `soroban contract bindings json --wasm ` +**Usage:** `stellar contract bindings json --wasm ` ###### **Options:** @@ -277,11 +276,11 @@ Generate Json Bindings -## `soroban contract bindings rust` +## `stellar contract bindings rust` Generate Rust bindings -**Usage:** `soroban contract bindings rust --wasm ` +**Usage:** `stellar contract bindings rust --wasm ` ###### **Options:** @@ -289,11 +288,11 @@ Generate Rust bindings -## `soroban contract bindings typescript` +## `stellar contract bindings typescript` Generate a TypeScript / JavaScript package -**Usage:** `soroban contract bindings typescript [OPTIONS] --output-dir --contract-id ` +**Usage:** `stellar contract bindings typescript [OPTIONS] --output-dir --contract-id ` ###### **Options:** @@ -315,7 +314,7 @@ Generate a TypeScript / JavaScript package -## `soroban contract build` +## `stellar contract build` Build a contract from source @@ -323,7 +322,7 @@ Builds all crates that are referenced by the cargo manifest (Cargo.toml) that ha To view the commands that will be executed, without executing them, use the --print-commands-only option. -**Usage:** `soroban contract build [OPTIONS]` +**Usage:** `stellar contract build [OPTIONS]` ###### **Options:** @@ -351,13 +350,13 @@ To view the commands that will be executed, without executing them, use the --pr -## `soroban contract extend` +## `stellar contract extend` Extend the time to live ledger of a contract-data ledger entry. If no keys are specified the contract itself is extended. -**Usage:** `soroban contract extend [OPTIONS] --ledgers-to-extend --durability --source-account ` +**Usage:** `stellar contract extend [OPTIONS] --ledgers-to-extend --durability --source-account ` ###### **Options:** @@ -410,11 +409,11 @@ If no keys are specified the contract itself is extended. -## `soroban contract deploy` +## `stellar contract deploy` Deploy a wasm contract -**Usage:** `soroban contract deploy [OPTIONS] --source-account <--wasm |--wasm-hash >` +**Usage:** `stellar contract deploy [OPTIONS] --source-account <--wasm |--wasm-hash >` ###### **Options:** @@ -456,11 +455,11 @@ Deploy a wasm contract -## `soroban contract fetch` +## `stellar contract fetch` Fetch a contract's Wasm binary -**Usage:** `soroban contract fetch [OPTIONS] --id ` +**Usage:** `stellar contract fetch [OPTIONS] --id ` ###### **Options:** @@ -477,11 +476,11 @@ Fetch a contract's Wasm binary -## `soroban contract id` +## `stellar contract id` Generate the contract id for a given contract or asset -**Usage:** `soroban contract id ` +**Usage:** `stellar contract id ` ###### **Subcommands:** @@ -490,11 +489,11 @@ Generate the contract id for a given contract or asset -## `soroban contract id asset` +## `stellar contract id asset` Deploy builtin Soroban Asset Contract -**Usage:** `soroban contract id asset [OPTIONS] --asset --source-account ` +**Usage:** `stellar contract id asset [OPTIONS] --asset --source-account ` ###### **Options:** @@ -512,11 +511,11 @@ Deploy builtin Soroban Asset Contract -## `soroban contract id wasm` +## `stellar contract id wasm` Deploy normal Wasm Contract -**Usage:** `soroban contract id wasm [OPTIONS] --salt --source-account ` +**Usage:** `stellar contract id wasm [OPTIONS] --salt --source-account ` ###### **Options:** @@ -534,11 +533,11 @@ Deploy normal Wasm Contract -## `soroban contract init` +## `stellar contract init` Initialize a Soroban project with an example contract -**Usage:** `soroban contract init [OPTIONS] ` +**Usage:** `stellar contract init [OPTIONS] ` ###### **Arguments:** @@ -556,11 +555,11 @@ Initialize a Soroban project with an example contract -## `soroban contract inspect` +## `stellar contract inspect` Inspect a WASM file listing contract functions, meta, etc -**Usage:** `soroban contract inspect [OPTIONS] --wasm ` +**Usage:** `stellar contract inspect [OPTIONS] --wasm ` ###### **Options:** @@ -585,11 +584,11 @@ Inspect a WASM file listing contract functions, meta, etc -## `soroban contract install` +## `stellar contract install` Install a WASM file to the ledger without creating a contract instance -**Usage:** `soroban contract install [OPTIONS] --source-account --wasm ` +**Usage:** `stellar contract install [OPTIONS] --source-account --wasm ` ###### **Options:** @@ -629,7 +628,7 @@ Install a WASM file to the ledger without creating a contract instance -## `soroban contract invoke` +## `stellar contract invoke` Invoke a contract function @@ -637,7 +636,7 @@ Generates an "implicit CLI" for the specified contract on-the-fly using the cont soroban contract invoke ... -- --help -**Usage:** `soroban contract invoke [OPTIONS] --id --source-account [-- ...]` +**Usage:** `stellar contract invoke [OPTIONS] --id --source-account [-- ...]` ###### **Arguments:** @@ -679,11 +678,11 @@ soroban contract invoke ... -- --help -## `soroban contract optimize` +## `stellar contract optimize` Optimize a WASM file -**Usage:** `soroban contract optimize [OPTIONS] --wasm ` +**Usage:** `stellar contract optimize [OPTIONS] --wasm ` ###### **Options:** @@ -692,11 +691,11 @@ Optimize a WASM file -## `soroban contract read` +## `stellar contract read` Print the current value of a contract-data ledger entry -**Usage:** `soroban contract read [OPTIONS] --durability --source-account ` +**Usage:** `stellar contract read [OPTIONS] --durability --source-account ` ###### **Options:** @@ -740,13 +739,13 @@ Print the current value of a contract-data ledger entry -## `soroban contract restore` +## `stellar contract restore` Restore an evicted value for a contract-data legder entry. If no keys are specificed the contract itself is restored. -**Usage:** `soroban contract restore [OPTIONS] --durability --source-account ` +**Usage:** `stellar contract restore [OPTIONS] --durability --source-account ` ###### **Options:** @@ -799,11 +798,11 @@ If no keys are specificed the contract itself is restored. -## `soroban events` +## `stellar events` Watch the network for contract events -**Usage:** `soroban events [OPTIONS]` +**Usage:** `stellar events [OPTIONS]` ###### **Options:** @@ -843,11 +842,11 @@ Watch the network for contract events -## `soroban keys` +## `stellar keys` Create and manage identities including keys and addresses -**Usage:** `soroban keys ` +**Usage:** `stellar keys ` ###### **Subcommands:** @@ -861,11 +860,11 @@ Create and manage identities including keys and addresses -## `soroban keys add` +## `stellar keys add` Add a new identity (keypair, ledger, macOS keychain) -**Usage:** `soroban keys add [OPTIONS] ` +**Usage:** `stellar keys add [OPTIONS] ` ###### **Arguments:** @@ -889,11 +888,11 @@ Add a new identity (keypair, ledger, macOS keychain) -## `soroban keys address` +## `stellar keys address` Given an identity return its address (public key) -**Usage:** `soroban keys address [OPTIONS] ` +**Usage:** `stellar keys address [OPTIONS] ` ###### **Arguments:** @@ -910,11 +909,11 @@ Given an identity return its address (public key) -## `soroban keys fund` +## `stellar keys fund` Fund an identity on a test network -**Usage:** `soroban keys fund [OPTIONS] ` +**Usage:** `stellar keys fund [OPTIONS] ` ###### **Arguments:** @@ -934,11 +933,11 @@ Fund an identity on a test network -## `soroban keys generate` +## `stellar keys generate` Generate a new identity with a seed phrase, currently 12 words -**Usage:** `soroban keys generate [OPTIONS] ` +**Usage:** `stellar keys generate [OPTIONS] ` ###### **Arguments:** @@ -971,11 +970,11 @@ Generate a new identity with a seed phrase, currently 12 words -## `soroban keys ls` +## `stellar keys ls` List identities -**Usage:** `soroban keys ls [OPTIONS]` +**Usage:** `stellar keys ls [OPTIONS]` ###### **Options:** @@ -991,11 +990,11 @@ List identities -## `soroban keys rm` +## `stellar keys rm` Remove an identity -**Usage:** `soroban keys rm [OPTIONS] ` +**Usage:** `stellar keys rm [OPTIONS] ` ###### **Arguments:** @@ -1011,11 +1010,11 @@ Remove an identity -## `soroban keys show` +## `stellar keys show` Given an identity return its private key -**Usage:** `soroban keys show [OPTIONS] ` +**Usage:** `stellar keys show [OPTIONS] ` ###### **Arguments:** @@ -1032,11 +1031,11 @@ Given an identity return its private key -## `soroban xdr` +## `stellar xdr` Decode and encode XDR -**Usage:** `soroban xdr [CHANNEL] ` +**Usage:** `stellar xdr [CHANNEL] ` ###### **Subcommands:** @@ -1057,11 +1056,11 @@ Decode and encode XDR -## `soroban xdr types` +## `stellar xdr types` View information about types -**Usage:** `soroban xdr types ` +**Usage:** `stellar xdr types ` ###### **Subcommands:** @@ -1069,9 +1068,9 @@ View information about types -## `soroban xdr types list` +## `stellar xdr types list` -**Usage:** `soroban xdr types list [OPTIONS]` +**Usage:** `stellar xdr types list [OPTIONS]` ###### **Options:** @@ -1084,11 +1083,11 @@ View information about types -## `soroban xdr guess` +## `stellar xdr guess` Guess the XDR type -**Usage:** `soroban xdr guess [OPTIONS] [FILE]` +**Usage:** `stellar xdr guess [OPTIONS] [FILE]` ###### **Arguments:** @@ -1114,11 +1113,11 @@ Guess the XDR type -## `soroban xdr decode` +## `stellar xdr decode` Decode XDR -**Usage:** `soroban xdr decode [OPTIONS] --type [FILES]...` +**Usage:** `stellar xdr decode [OPTIONS] --type [FILES]...` ###### **Arguments:** @@ -1142,11 +1141,11 @@ Decode XDR -## `soroban xdr encode` +## `stellar xdr encode` Encode XDR -**Usage:** `soroban xdr encode [OPTIONS] --type [FILES]...` +**Usage:** `stellar xdr encode [OPTIONS] --type [FILES]...` ###### **Arguments:** @@ -1170,19 +1169,19 @@ Encode XDR -## `soroban xdr version` +## `stellar xdr version` Print version information -**Usage:** `soroban xdr version` +**Usage:** `stellar xdr version` -## `soroban network` +## `stellar network` Start and configure networks -**Usage:** `soroban network ` +**Usage:** `stellar network ` ###### **Subcommands:** @@ -1194,11 +1193,11 @@ Start and configure networks -## `soroban network add` +## `stellar network add` Add a new network -**Usage:** `soroban network add [OPTIONS] --rpc-url --network-passphrase ` +**Usage:** `stellar network add [OPTIONS] --rpc-url --network-passphrase ` ###### **Arguments:** @@ -1216,11 +1215,11 @@ Add a new network -## `soroban network rm` +## `stellar network rm` Remove a network -**Usage:** `soroban network rm [OPTIONS] ` +**Usage:** `stellar network rm [OPTIONS] ` ###### **Arguments:** @@ -1236,11 +1235,11 @@ Remove a network -## `soroban network ls` +## `stellar network ls` List networks -**Usage:** `soroban network ls [OPTIONS]` +**Usage:** `stellar network ls [OPTIONS]` ###### **Options:** @@ -1256,7 +1255,7 @@ List networks -## `soroban network start` +## `stellar network start` Start network @@ -1266,7 +1265,7 @@ soroban network start [OPTIONS] By default, when starting a testnet container, without any optional arguments, it will run the equivalent of the following docker command: docker run --rm -p 8000:8000 --name stellar stellar/quickstart:testing --testnet --enable-soroban-rpc -**Usage:** `soroban network start [OPTIONS] ` +**Usage:** `stellar network start [OPTIONS] ` ###### **Arguments:** @@ -1287,11 +1286,11 @@ By default, when starting a testnet container, without any optional arguments, i -## `soroban network stop` +## `stellar network stop` Stop a network started with `network start`. For example, if you ran `soroban network start local`, you can use `soroban network stop local` to stop it -**Usage:** `soroban network stop [OPTIONS] ` +**Usage:** `stellar network stop [OPTIONS] ` ###### **Arguments:** @@ -1306,19 +1305,19 @@ Stop a network started with `network start`. For example, if you ran `soroban ne -## `soroban version` +## `stellar version` Print version information -**Usage:** `soroban version` +**Usage:** `stellar version` -## `soroban cache` +## `stellar cache` Cache for tranasctions and contract specs -**Usage:** `soroban cache ` +**Usage:** `stellar cache ` ###### **Subcommands:** @@ -1328,27 +1327,27 @@ Cache for tranasctions and contract specs -## `soroban cache clean` +## `stellar cache clean` Delete the cache -**Usage:** `soroban cache clean` +**Usage:** `stellar cache clean` -## `soroban cache path` +## `stellar cache path` Show the location of the cache -**Usage:** `soroban cache path` +**Usage:** `stellar cache path` -## `soroban cache actionlog` +## `stellar cache actionlog` Access details about cached actions like transactions, and simulations. (Experimental. May see breaking changes at any time.) -**Usage:** `soroban cache actionlog ` +**Usage:** `stellar cache actionlog ` ###### **Subcommands:** @@ -1357,11 +1356,11 @@ Access details about cached actions like transactions, and simulations. (Experim -## `soroban cache actionlog ls` +## `stellar cache actionlog ls` List cached actions (transactions, simulations) -**Usage:** `soroban cache actionlog ls [OPTIONS]` +**Usage:** `stellar cache actionlog ls [OPTIONS]` ###### **Options:** @@ -1377,11 +1376,11 @@ List cached actions (transactions, simulations) -## `soroban cache actionlog read` +## `stellar cache actionlog read` Read cached action -**Usage:** `soroban cache actionlog read --id ` +**Usage:** `stellar cache actionlog read --id ` ###### **Options:** diff --git a/Makefile b/Makefile index d2faac330..7c2f8a78c 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,7 @@ install_rust: install install: cargo install --locked --path ./cmd/soroban-cli --debug + cargo install --locked --path ./cmd/stellar-cli --debug cargo install --locked --path ./cmd/crates/soroban-test/tests/fixtures/hello --root ./target --debug --quiet # regenerate the example lib in `cmd/crates/soroban-spec-typsecript/fixtures/ts` @@ -41,6 +42,9 @@ build-test-wasms: build-test: build-test-wasms install +generate-full-help-doc: + cargo run --bin doc-gen --features clap-markdown + generate-examples-list: curl -sSL https://api.github.com/repos/stellar/soroban-examples/git/trees/main \ | jq -r '.tree[] | select(.type != "blob" and .path != "hello_world" and (.path | startswith(".") | not)) | .path' \ diff --git a/README.md b/README.md index 1e40b861d..d53e90542 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This repo is home to the Soroban CLI, the command-line multi-tool for running an ## Documentation -For installation options see below, for usage instructions [see the manual](/docs/soroban-cli-full-docs.md). +For installation options see below, for usage instructions [see the full help docs](FULL_HELP_DOCS.md). ## Install Install the latest version from source: diff --git a/cmd/soroban-cli/README.md b/cmd/soroban-cli/README.md index d17261b18..c68ffd346 100644 --- a/cmd/soroban-cli/README.md +++ b/cmd/soroban-cli/README.md @@ -1,8 +1,8 @@ # soroban-cli -CLI for running Soroban contracts locally in a test VM. Executes WASM files built using the [rs-soroban-sdk](https://github.com/stellar/rs-soroban-sdk). +CLI for interacting with the Stellar network and Soroban contracts locally in a test VM. Executes WASM files built using the [rs-soroban-sdk](https://github.com/stellar/rs-soroban-sdk). -Soroban: https://soroban.stellar.org +Docs: https://developer.stellar.org ## Install diff --git a/cmd/soroban-cli/src/bin/doc-gen.rs b/cmd/soroban-cli/src/bin/doc-gen.rs index 096f9681c..96c6b09fd 100644 --- a/cmd/soroban-cli/src/bin/doc-gen.rs +++ b/cmd/soroban-cli/src/bin/doc-gen.rs @@ -1,5 +1,5 @@ use std::{ - env, fs, + env, path::{Path, PathBuf}, }; @@ -11,12 +11,10 @@ fn main() -> Result<(), DynError> { } fn doc_gen() -> std::io::Result<()> { - let out_dir = docs_dir(); - - fs::create_dir_all(out_dir.clone())?; + let out_dir = project_root(); std::fs::write( - out_dir.join("soroban-cli-full-docs.md"), + out_dir.join("FULL_HELP_DOCS.md"), clap_markdown::help_markdown::(), )?; @@ -30,7 +28,3 @@ fn project_root() -> PathBuf { .unwrap() .to_path_buf() } - -fn docs_dir() -> PathBuf { - project_root().join("docs") -} diff --git a/cmd/soroban-cli/src/bin/main.rs b/cmd/soroban-cli/src/bin/main.rs index 70eeb6110..27a46b76a 100644 --- a/cmd/soroban-cli/src/bin/main.rs +++ b/cmd/soroban-cli/src/bin/main.rs @@ -1,52 +1,3 @@ -use clap::CommandFactory; -use dotenvy::dotenv; -use tracing_subscriber::{fmt, EnvFilter}; - -use soroban_cli::{commands, Root}; - -#[tokio::main] -async fn main() { - let _ = dotenv().unwrap_or_default(); - let mut root = Root::new().unwrap_or_else(|e| match e { - commands::Error::Clap(e) => { - let mut cmd = Root::command(); - e.format(&mut cmd).exit(); - } - e => { - eprintln!("{e}"); - std::process::exit(1); - } - }); - // Now use root to setup the logger - if let Some(level) = root.global_args.log_level() { - let mut e_filter = EnvFilter::from_default_env() - .add_directive("hyper=off".parse().unwrap()) - .add_directive(format!("soroban_cli={level}").parse().unwrap()); - - for filter in &root.global_args.filter_logs { - e_filter = e_filter.add_directive( - filter - .parse() - .map_err(|e| { - eprintln!("{e}: {filter}"); - std::process::exit(1); - }) - .unwrap(), - ); - } - - let builder = fmt::Subscriber::builder() - .with_env_filter(e_filter) - .with_ansi(false) - .with_writer(std::io::stderr); - - let subscriber = builder.finish(); - tracing::subscriber::set_global_default(subscriber) - .expect("Failed to set the global tracing subscriber"); - } - - if let Err(e) = root.run().await { - eprintln!("error: {e}"); - std::process::exit(1); - } +fn main() { + soroban_cli::main(); } diff --git a/cmd/soroban-cli/src/cli.rs b/cmd/soroban-cli/src/cli.rs new file mode 100644 index 000000000..a6be9572d --- /dev/null +++ b/cmd/soroban-cli/src/cli.rs @@ -0,0 +1,76 @@ +use clap::CommandFactory; +use dotenvy::dotenv; +use tracing_subscriber::{fmt, EnvFilter}; + +use crate::{commands, Root}; + +#[tokio::main] +pub async fn main() { + let _ = dotenv().unwrap_or_default(); + + // Map SOROBAN_ env vars to STELLAR_ env vars for backwards compatibility + // with the soroban-cli prior to when the stellar-cli was released. + let vars = &[ + "FEE", + "NO_CACHE", + "ACCOUNT", + "CONTRACT_ID", + "INVOKE_VIEW", + "RPC_URL", + "NETWORK_PASSPHRASE", + "NETWORK", + "PORT", + "SECRET_KEY", + "CONFIG_HOME", + ]; + for var in vars { + let soroban_key = format!("SOROBAN_{var}"); + let stellar_key = format!("STELLAR_{var}"); + if let Ok(val) = std::env::var(soroban_key) { + std::env::set_var(stellar_key, val); + } + } + + let mut root = Root::new().unwrap_or_else(|e| match e { + commands::Error::Clap(e) => { + let mut cmd = Root::command(); + e.format(&mut cmd).exit(); + } + e => { + eprintln!("{e}"); + std::process::exit(1); + } + }); + // Now use root to setup the logger + if let Some(level) = root.global_args.log_level() { + let mut e_filter = EnvFilter::from_default_env() + .add_directive("hyper=off".parse().unwrap()) + .add_directive(format!("stellar_cli={level}").parse().unwrap()); + + for filter in &root.global_args.filter_logs { + e_filter = e_filter.add_directive( + filter + .parse() + .map_err(|e| { + eprintln!("{e}: {filter}"); + std::process::exit(1); + }) + .unwrap(), + ); + } + + let builder = fmt::Subscriber::builder() + .with_env_filter(e_filter) + .with_ansi(false) + .with_writer(std::io::stderr); + + let subscriber = builder.finish(); + tracing::subscriber::set_global_default(subscriber) + .expect("Failed to set the global tracing subscriber"); + } + + if let Err(e) = root.run().await { + eprintln!("error: {e}"); + std::process::exit(1); + } +} diff --git a/cmd/soroban-cli/src/commands/config/mod.rs b/cmd/soroban-cli/src/commands/config/mod.rs index 4d835685b..e80aea73c 100644 --- a/cmd/soroban-cli/src/commands/config/mod.rs +++ b/cmd/soroban-cli/src/commands/config/mod.rs @@ -31,7 +31,7 @@ pub struct Args { #[command(flatten)] pub network: network::Args, - #[arg(long, visible_alias = "source", env = "SOROBAN_ACCOUNT")] + #[arg(long, visible_alias = "source", env = "STELLAR_ACCOUNT")] /// Account that signs the final transaction. Alias `source`. Can be an identity (--source alice), a secret key (--source SC36…), or a seed phrase (--source "kite urban…"). Default: `identity generate --default-seed` pub source_account: String, diff --git a/cmd/soroban-cli/src/commands/contract/fetch.rs b/cmd/soroban-cli/src/commands/contract/fetch.rs index 73ba12c2d..e9d73db98 100644 --- a/cmd/soroban-cli/src/commands/contract/fetch.rs +++ b/cmd/soroban-cli/src/commands/contract/fetch.rs @@ -32,7 +32,7 @@ use crate::{ #[group(skip)] pub struct Cmd { /// Contract ID to fetch - #[arg(long = "id", env = "SOROBAN_CONTRACT_ID")] + #[arg(long = "id", env = "STELLAR_CONTRACT_ID")] pub contract_id: String, /// Where to write output otherwise stdout is used #[arg(long, short = 'o')] diff --git a/cmd/soroban-cli/src/commands/contract/invoke.rs b/cmd/soroban-cli/src/commands/contract/invoke.rs index e9c30598f..d44a75172 100644 --- a/cmd/soroban-cli/src/commands/contract/invoke.rs +++ b/cmd/soroban-cli/src/commands/contract/invoke.rs @@ -44,13 +44,13 @@ use soroban_spec_tools::{contract, Spec}; #[group(skip)] pub struct Cmd { /// Contract ID to invoke - #[arg(long = "id", env = "SOROBAN_CONTRACT_ID")] + #[arg(long = "id", env = "STELLAR_CONTRACT_ID")] pub contract_id: String, // For testing only #[arg(skip)] pub wasm: Option, /// View the result simulating and do not sign and submit transaction - #[arg(long, env = "SOROBAN_INVOKE_VIEW")] + #[arg(long, env = "STELLAR_INVOKE_VIEW")] pub is_view: bool, /// Function name as subcommand, then arguments for that function as `--arg-name value` #[arg(last = true, id = "CONTRACT_FN_AND_ARGS")] diff --git a/cmd/soroban-cli/src/commands/global.rs b/cmd/soroban-cli/src/commands/global.rs index bb530f043..6ee659fae 100644 --- a/cmd/soroban-cli/src/commands/global.rs +++ b/cmd/soroban-cli/src/commands/global.rs @@ -10,7 +10,7 @@ pub struct Args { #[clap(flatten)] pub locator: config::locator::Args, - /// Filter logs output. To turn on "soroban_cli::log::footprint=debug" or off "=off". Can also use env var `RUST_LOG`. + /// Filter logs output. To turn on "stellar_cli::log::footprint=debug" or off "=off". Can also use env var `RUST_LOG`. #[arg(long, short = 'f')] pub filter_logs: Vec, @@ -26,12 +26,12 @@ pub struct Args { #[arg(long, visible_alias = "vv")] pub very_verbose: bool, - /// List installed plugins. E.g. `soroban-hello` + /// List installed plugins. E.g. `stellar-hello` #[arg(long)] pub list: bool, /// Do not cache your simulations and transactions - #[arg(long, env = "SOROBAN_NO_CACHE")] + #[arg(long, env = "STELLAR_NO_CACHE")] pub no_cache: bool, } diff --git a/cmd/soroban-cli/src/commands/mod.rs b/cmd/soroban-cli/src/commands/mod.rs index 37328cd1a..4b56f76df 100644 --- a/cmd/soroban-cli/src/commands/mod.rs +++ b/cmd/soroban-cli/src/commands/mod.rs @@ -19,37 +19,36 @@ pub mod txn_result; pub const HEADING_RPC: &str = "Options (RPC)"; const ABOUT: &str = "Build, deploy, & interact with contracts; set identities to sign with; configure networks; generate keys; and more. -Intro: https://soroban.stellar.org/docs -CLI Reference: https://github.com/stellar/soroban-cli/tree/main/docs/soroban-cli-full-docs.md"; +Stellar Docs: https://developers.stellar.org +CLI Full Hep Docs: https://github.com/stellar/soroban-cli/tree/main/FULL_HELP_DOCS.md"; // long_about is shown when someone uses `--help`; short help when using `-h` const LONG_ABOUT: &str = " The easiest way to get started is to generate a new identity: - soroban config identity generate alice + stellar config identity generate alice You can use identities with the `--source` flag in other commands later. Commands that relate to smart contract interactions are organized under the `contract` subcommand. List them: - soroban contract --help + stellar contract --help -A Soroban contract has its interface schema types embedded in the binary that gets deployed on-chain, making it possible to dynamically generate a custom CLI for each. `soroban contract invoke` makes use of this: +A Soroban contract has its interface schema types embedded in the binary that gets deployed on-chain, making it possible to dynamically generate a custom CLI for each. The invoke subcommand makes use of this: - soroban contract invoke --id CCR6QKTWZQYW6YUJ7UP7XXZRLWQPFRV6SWBLQS4ZQOSAF4BOUD77OTE2 --source alice --network testnet -- \ + stellar contract invoke --id CCR6QKTWZQYW6YUJ7UP7XXZRLWQPFRV6SWBLQS4ZQOSAF4BOUD77OTE2 --source alice --network testnet -- \ --help Anything after the `--` double dash (the \"slop\") is parsed as arguments to the contract-specific CLI, generated on-the-fly from the embedded schema. For the hello world example, with a function called `hello` that takes one string argument `to`, here's how you invoke it: - soroban contract invoke --id CCR6QKTWZQYW6YUJ7UP7XXZRLWQPFRV6SWBLQS4ZQOSAF4BOUD77OTE2 --source alice --network testnet -- \ + stellar contract invoke --id CCR6QKTWZQYW6YUJ7UP7XXZRLWQPFRV6SWBLQS4ZQOSAF4BOUD77OTE2 --source alice --network testnet -- \ hello --to world - -Full CLI reference: https://github.com/stellar/soroban-tools/tree/main/docs/soroban-cli-full-docs.md"; +"; #[derive(Parser, Debug)] #[command( - name = "soroban", + name = "stellar", about = ABOUT, version = version::long(), long_about = ABOUT.to_string() + LONG_ABOUT, diff --git a/cmd/soroban-cli/src/commands/network/mod.rs b/cmd/soroban-cli/src/commands/network/mod.rs index e56d99068..9df58cdda 100644 --- a/cmd/soroban-cli/src/commands/network/mod.rs +++ b/cmd/soroban-cli/src/commands/network/mod.rs @@ -101,7 +101,7 @@ pub struct Args { long = "rpc-url", requires = "network_passphrase", required_unless_present = "network", - env = "SOROBAN_RPC_URL", + env = "STELLAR_RPC_URL", help_heading = HEADING_RPC, )] pub rpc_url: Option, @@ -110,7 +110,7 @@ pub struct Args { long = "network-passphrase", requires = "rpc_url", required_unless_present = "network", - env = "SOROBAN_NETWORK_PASSPHRASE", + env = "STELLAR_NETWORK_PASSPHRASE", help_heading = HEADING_RPC, )] pub network_passphrase: Option, @@ -118,7 +118,7 @@ pub struct Args { #[arg( long, required_unless_present = "rpc_url", - env = "SOROBAN_NETWORK", + env = "STELLAR_NETWORK", help_heading = HEADING_RPC, )] pub network: Option, @@ -150,14 +150,14 @@ pub struct Network { /// RPC server endpoint #[arg( long = "rpc-url", - env = "SOROBAN_RPC_URL", + env = "STELLAR_RPC_URL", help_heading = HEADING_RPC, )] pub rpc_url: String, /// Network passphrase to sign the transaction sent to the rpc server #[arg( long, - env = "SOROBAN_NETWORK_PASSPHRASE", + env = "STELLAR_NETWORK_PASSPHRASE", help_heading = HEADING_RPC, )] pub network_passphrase: String, diff --git a/cmd/soroban-cli/src/commands/version.rs b/cmd/soroban-cli/src/commands/version.rs index d9fc091b2..95aae8c60 100644 --- a/cmd/soroban-cli/src/commands/version.rs +++ b/cmd/soroban-cli/src/commands/version.rs @@ -11,7 +11,7 @@ pub struct Cmd; impl Cmd { #[allow(clippy::unused_self)] pub fn run(&self) { - println!("soroban {}", long()); + println!("stellar {}", long()); } } diff --git a/cmd/soroban-cli/src/fee.rs b/cmd/soroban-cli/src/fee.rs index b7b7e0441..ab057a587 100644 --- a/cmd/soroban-cli/src/fee.rs +++ b/cmd/soroban-cli/src/fee.rs @@ -9,7 +9,7 @@ use crate::commands::HEADING_RPC; #[group(skip)] pub struct Args { /// fee amount for transaction, in stroops. 1 stroop = 0.0000001 xlm - #[arg(long, default_value = "100", env = "SOROBAN_FEE", help_heading = HEADING_RPC)] + #[arg(long, default_value = "100", env = "STELLAR_FEE", help_heading = HEADING_RPC)] pub fee: u32, /// Output the cost execution to stderr #[arg(long = "cost", help_heading = HEADING_RPC)] diff --git a/cmd/soroban-cli/src/lib.rs b/cmd/soroban-cli/src/lib.rs index 5cde45436..f1996b29d 100644 --- a/cmd/soroban-cli/src/lib.rs +++ b/cmd/soroban-cli/src/lib.rs @@ -8,6 +8,9 @@ use std::path::Path; pub(crate) use soroban_env_host::xdr; pub(crate) use soroban_rpc as rpc; +mod cli; +pub use cli::main; + pub mod commands; pub mod fee; pub mod key; diff --git a/cmd/soroban-cli/src/utils.rs b/cmd/soroban-cli/src/utils.rs index 97fc9bfcc..e74222c2c 100644 --- a/cmd/soroban-cli/src/utils.rs +++ b/cmd/soroban-cli/src/utils.rs @@ -71,16 +71,32 @@ pub fn contract_id_from_str(contract_id: &str) -> Result<[u8; 32], stellar_strke /// # Errors /// May not find a config dir pub fn find_config_dir(mut pwd: std::path::PathBuf) -> std::io::Result { - let soroban_dir = |p: &std::path::Path| p.join(".soroban"); - while !soroban_dir(&pwd).exists() { + loop { + let stellar_dir = pwd.join(".stellar"); + let stellar_exists = stellar_dir.exists(); + + let soroban_dir = pwd.join(".soroban"); + let soroban_exists = soroban_dir.exists(); + + if stellar_exists && soroban_exists { + tracing::warn!("the .stellar and .soroban config directories exist at path {pwd:?}, using the .stellar"); + } + + if stellar_exists { + return Ok(stellar_dir); + } + + if soroban_exists { + return Ok(soroban_dir); + } if !pwd.pop() { - return Err(std::io::Error::new( - std::io::ErrorKind::Other, - "soroban directory not found", - )); + break; } } - Ok(soroban_dir(&pwd)) + Err(std::io::Error::new( + std::io::ErrorKind::Other, + "stellar directory not found", + )) } pub(crate) fn into_signing_key(key: &PrivateKey) -> ed25519_dalek::SigningKey { diff --git a/cmd/stellar-cli/Cargo.toml b/cmd/stellar-cli/Cargo.toml new file mode 100644 index 000000000..3b1aa53d3 --- /dev/null +++ b/cmd/stellar-cli/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "stellar-cli" +description = "Stellar CLI" +homepage = "https://github.com/stellar/soroban-cli" +repository = "https://github.com/stellar/soroban-cli" +authors = ["Stellar Development Foundation "] +license = "Apache-2.0" +readme = "README.md" +version = "21.0.0-preview.1" +edition = "2021" +rust-version.workspace = true +autobins = false +default-run = "stellar" + +[[bin]] +name = "stellar" +path = "src/bin/main.rs" + +[package.metadata.binstall] +pkg-url = "{ repo }/releases/download/v{ version }/{ name }-{ version }-{ target }{ archive-suffix }" +bin-dir = "{ bin }{ binary-ext }" + +[features] +default = [] +opt = ["soroban-cli/opt"] + +[dependencies] +soroban-cli = { workspace = true } diff --git a/cmd/stellar-cli/README.md b/cmd/stellar-cli/README.md new file mode 100644 index 000000000..e77fe623b --- /dev/null +++ b/cmd/stellar-cli/README.md @@ -0,0 +1,28 @@ +# stellar-cli + +CLI for interacting with the Stellar network and Soroban contracts locally in a test VM. Executes WASM files built using the [rs-soroban-sdk](https://github.com/stellar/rs-soroban-sdk). + +Docs: https://developer.stellar.org + +## Install + +``` +cargo install --locked stellar-cli +``` + +To install with the `opt` feature, which includes a WASM optimization feature and wasm-opt built in: + +``` +cargo install --locked stellar-cli --features opt +``` + +## Usage + +Can invoke a contract method as a subcommand with different arguments. Anything after the slop (`--`) is passed to the contract's CLI. You can use `--help` to learn about which methods are available and what their arguments are including an example of the type of the input. + +## Example + +``` +stellar invoke --id --wasm -- --help +stellar invoke --id --network futurenet -- --help +``` diff --git a/cmd/stellar-cli/src/bin/main.rs b/cmd/stellar-cli/src/bin/main.rs new file mode 100644 index 000000000..27a46b76a --- /dev/null +++ b/cmd/stellar-cli/src/bin/main.rs @@ -0,0 +1,3 @@ +fn main() { + soroban_cli::main(); +} diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index ce8ce2e15..000000000 --- a/docs/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Auto-generated docs - -The docs in this folder are auto-generated. Do not edit them manually or your changes will be lost!