A global flag before a plugin name makes the plugin unreachable

Đang mở
#2,878 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
62/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
rust
Lĩnh vực
cli

Hướng nghiên cứu

Start in cmd/soroban-cli/src/commands/plugin/default.rs around lines 64-70, where the plugin name is built from arguments up to the first one starting with --. Reproduce with a stellar-foo binary on PATH by running stellar -q foo a b and stellar --quiet foo a b, which should both reach the plugin. Done means those invocations run stellar-foo with "a b" while stellar foo -q a still passes -q a through unchanged.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

What's wrong:
Global flags work before any built-in command, but not before a plugin. With CLI 28.1.0 and a plugin stellar-foo on PATH:

$ stellar foo a b              # runs stellar-foo with "a b"
$ stellar foo -q a             # runs stellar-foo with "-q a"
$ stellar -q foo a b
error: unrecognized subcommand 'foo'
$ stellar --quiet foo          # same error, also for --verbose and --config-dir <dir>

Plugin lookup builds the plugin name from the arguments up to the first one starting with -- (v28.1.0 plugin/default.rs#L64-L70), so a leading --quiet leaves no name, and a leading -q becomes part of the name. This came in with multi-word plugin names (#2014), which didn't discuss global flags; it doesn't look deliberate.

Impact:
Scripts, wrappers and coding agents usually put global flags first (one hackathon repo wraps every call as stellar --quiet ...), and the error says the command doesn't exist, which reads as "plugin not installed". It becomes a common path once stellar contract bindings typescript is served by the JS SDK's plugin (#2758).

How we found it:
While reviewing the CLI plugin model for the HackMeridian 2026 tooling research (147 public hackathon repos), then reproduced with the 28.1.0 release binary on 1 November 2026. Example wrapper: LATCH scripts/testnet/bootstrap.mjs#L70-L72.

Outcome we're after:
A global flag placed before a plugin name doesn't stop the plugin from running, the same as for built-in commands. How to get there is up to the implementer.

Compatibility: Arguments after the plugin name keep reaching the plugin unchanged.

How to check:

  • stellar -q foo a b and stellar --quiet foo a b run stellar-foo.
  • A flag that takes a value, such as --config-dir <dir> foo, also runs the plugin.
  • stellar foo -q a behaves as today.

Related: #2014 (plugin subcommand lookup), #2758 (bindings plugin), #2343 (config and env precedence).

Ngôn ngữ chính
Rust
Star
129
Fork
153
Merge trung bình
1 ngày 14 giờ
Pull request đã merge (30 ngày)
11

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của stellar/stellar-cli

Tất cả issue của stellar/stellar-cli

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.