Skip to content

feat(ant-dev): expand ant dev example to dispatch all 15 SDKs#84

Open
Nic-dorman wants to merge 1 commit into
mainfrom
fix/ant-dev-example-dispatcher
Open

feat(ant-dev): expand ant dev example to dispatch all 15 SDKs#84
Nic-dorman wants to merge 1 commit into
mainfrom
fix/ant-dev-example-dispatcher

Conversation

@Nic-dorman
Copy link
Copy Markdown
Collaborator

Closes #65.

ant dev example only knew how to run Python and C# — the other 13 SDKs each ship runnable examples in their own directories, but the dispatcher couldn't reach them. New contributors who wanted to verify e.g. their Go binding had to know the per-language invocation by hand.

Approach

cmd_example.py is now a small data-driven adapter table. Each language is a single Adapter(...) entry declaring:

  • sdk_dir / cwd_subdir — where to cd before running
  • examples — mapping of short names (connect, data, chunks, ...) to the language's identifier (filename, gradle arg, cargo example name, ...)
  • prep — optional list of build/install commands (gradle build, composer install, dart pub get, cmake, etc.)
  • run — callable returning the argv for a given example

cli.py's --language choices read straight from LANGUAGES.keys(), so adding a new SDK is a one-entry change with no second site to update.

Languages supported now

cpp, csharp, dart, elixir, go, java, js, kotlin, lua, php, python, ruby, rust, swift, zig

swift is configured but auto-skipped with a clear message, because its REST/gRPC SDK is macOS-only per the antd-swift README.

Test plan

Daemon up via ant dev start --ant-node-dir ~/Projects/ant-node (small preset), then:

  • ant dev example data -l python — round-trip OK
  • ant dev example data -l go — round-trip OK
  • ant dev example data -l rust — round-trip OK
  • ant dev example data -l swiftSkipping swift: REST/gRPC SDK is macOS-only per antd-swift README
  • ant dev example --help — all 15 languages listed in choices

End-to-end across the rest was already validated via the cross-SDK e2e harness in this repo's sandbox (the same one that surfaced #66#71, #78).

Notes for reviewers

  • A handful of languages still need their own one-PR fix before their per-language data example will actually green up (#79/#82 for zig). The dispatcher itself doesn't gate on those — it just shells out and lets the underlying tool exit non-zero if the example is broken.
  • The examples maps don't need to be complete for every short name — they declare what's available per SDK (e.g. antd-go/examples/ only has 01-connect, 02-data, 03-files, so the Go adapter declares only those).
  • If a language wants something genuinely complex (custom preflight, environment variables, conditional flags), prefer adding a small helper script in the SDK directory rather than extending this dispatcher.

ant dev example only supported python and csharp. The other 13 SDKs all
ship runnable examples in their own directories but were unreachable
through the dispatcher (see #65).

Rewrite cmd_example.py as a data-driven adapter table. Each language is
one entry declaring its examples map, an optional prep step list, and a
run-argv builder. Adding the next SDK is a single entry.

Languages now supported:
  cpp, csharp, dart, elixir, go, java, js, kotlin, lua, php, python,
  ruby, rust, swift, zig

swift is configured but auto-skipped with a clear reason because its
REST/gRPC SDK is macOS-only per the antd-swift README.

cli.py reads choices straight from the LANGUAGES table so help/argparse
stay in sync automatically when a new SDK is added.

Closes #65
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ant dev example dispatcher supports only python+csharp; 13 other SDKs have examples but are unreachable

1 participant