{"id":30162909,"url":"https://github.com/rust3ds/cargo-3ds","last_synced_at":"2025-10-23T19:08:22.135Z","repository":{"id":40302899,"uuid":"422528977","full_name":"rust3ds/cargo-3ds","owner":"rust3ds","description":"Cargo command to work with Nintendo 3DS project binaries.","archived":false,"fork":false,"pushed_at":"2025-08-01T18:28:53.000Z","size":200,"stargazers_count":73,"open_issues_count":7,"forks_count":16,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-08-10T05:38:17.274Z","etag":null,"topics":["cargo-subcommand","homebrew","nintendo-3ds","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rust3ds.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-29T10:12:49.000Z","updated_at":"2025-08-01T18:28:09.000Z","dependencies_parsed_at":"2023-01-21T05:46:14.639Z","dependency_job_id":"f1ebd7ee-6341-45dd-afaa-52bc49de632b","html_url":"https://github.com/rust3ds/cargo-3ds","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/rust3ds/cargo-3ds","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust3ds%2Fcargo-3ds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust3ds%2Fcargo-3ds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust3ds%2Fcargo-3ds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust3ds%2Fcargo-3ds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rust3ds","download_url":"https://codeload.github.com/rust3ds/cargo-3ds/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust3ds%2Fcargo-3ds/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269923396,"owners_count":24497106,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cargo-subcommand","homebrew","nintendo-3ds","rust"],"created_at":"2025-08-11T17:13:58.714Z","updated_at":"2025-10-23T19:08:17.098Z","avatar_url":"https://github.com/rust3ds.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cargo-3ds\n\nCargo command to work with Nintendo 3DS project binaries. Based on cargo-psp.\n\n## Installation\n\nTo install the latest release on \u003chttps://crates.io\u003e:\n\n```sh\ncargo install --locked cargo-3ds\n```\n\nTo install the current `master` version of `cargo-3ds`:\n\n```sh\ncargo install --locked --git https://github.com/rust3ds/cargo-3ds\n```\n\n## Usage\n\nUse the nightly toolchain to build 3DS apps (either by using `rustup override nightly` for the project directory or by adding `+nightly` in the `cargo` invocation).\n\n```txt\nCommands:\n  build\n          Builds an executable suitable to run on a 3DS (3dsx)\n  run\n          Builds an executable and sends it to a device with `3dslink`\n  test\n          Builds a test executable and sends it to a device with `3dslink`\n  new\n          Sets up a new cargo project suitable to run on a 3DS\n  help\n          Print this message or the help of the given subcommand(s)\n\nOptions:\n  -h, --help\n          Print help information (use `-h` for a summary)\n\n  -V, --version\n          Print version information\n```\n\nAdditional arguments will be passed through to the given subcommand.\nSee [passthrough arguments](#passthrough-arguments) for more details.\n\nIt is also possible to pass any other `cargo` command (e.g. `doc`, `check`),\nand all its arguments will be passed through directly to `cargo` unmodified,\nwith the proper `--target armv6k-nintendo-3ds` set.\n\n### Basic Examples\n\n* `cargo 3ds build`\n* `cargo 3ds check --verbose`\n* `cargo 3ds run --release --example foo`\n* `cargo 3ds test --no-run`\n* `cargo 3ds new my-new-project --edition 2021`\n\n### Running executables\n\n`cargo 3ds test` and `cargo 3ds run` use the `3dslink` tool to send built\nexecutables to a device, and thus accept specific related arguments that correspond\nto `3dslink` arguments:\n\n```txt\n-a, --address \u003cADDRESS\u003e\n      Specify the IP address of the device to send the executable to.\n\n      Corresponds to 3dslink's `--address` arg, which defaults to automatically finding the device.\n\n-0, --argv0 \u003cARGV0\u003e\n      Set the 0th argument of the executable when running it. Corresponds to 3dslink's `--argv0` argument\n\n-s, --server\n      Start the 3dslink server after sending the executable. Corresponds to 3dslink's `--server` argument\n\n  --retries \u003cRETRIES\u003e\n      Set the number of tries when connecting to the device to send the executable. Corresponds to 3dslink's `--retries` argument\n```\n\n### Passthrough Arguments\n\nDue to the way `cargo-3ds`, `cargo`, and `3dslink` parse arguments, there is\nunfortunately some complexity required when invoking an executable with arguments.\n\nAll unrecognized arguments beginning with a dash (e.g. `--release`, `--features`,\netc.) will be passed through to `cargo` directly.\n\n\u003e **NOTE:** arguments for [running executables](#running-executables) must be\n\u003e specified *before* other unrecognized `cargo` arguments. Otherwise they will\n\u003e be treated as passthrough arguments which will most likely fail the resulting\n\u003e `cargo` command.\n\nAn optional `--` may be used to explicitly pass subsequent args to `cargo`, including\narguments to pass to the executable itself. To separate `cargo` arguments from\nexecutable arguments, *another* `--` can be used. For example:\n\n* `cargo 3ds run -- -- xyz`\n\n    Builds an executable and send it to a device to run it with the argument `xyz`.\n\n* `cargo 3ds test --address 192.168.0.2 -- -- --test-arg 1`\n\n  Builds a test executable and attempts to send it to a device with the\n  address `192.168.0.2` and run it using the arguments `[\"--test-arg\", \"1\"]`.\n\n* `cargo 3ds test --address 192.168.0.2 --verbose -- --test-arg 1`\n\n  Build a test executable with `cargo test --verbose`, and attempts to send\n  it to a device with the address `192.168.0.2` and run it using the arguments\n  `[\"--test-arg\", \"1\"]`.\n\n  This works without two `--` instances because `--verbose` begins the set of\n  `cargo` arguments and ends the set of 3DS-specific arguments.\n\n### Caveats\n\nDue to the fact that only one executable at a time can be sent with `3dslink`,\nby default only the \"last\" executable built will be used. If a `test` or `run`\ncommand builds more than one binary, you may need to filter it in order to run\nthe executable you want.\n\nDoc tests sort of work, but `cargo-3ds` uses a number of unstable cargo and\nrustdoc features to make them work, so the output won't be as pretty and will\nrequire some manual workarounds to actually run the tests and see output from them.\nFor now, `cargo 3ds test --doc` will not build a 3dsx file or use `3dslink` at all.\n\n## License\n\nThis project is distributed under the MIT license or the Apache-2.0 license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frust3ds%2Fcargo-3ds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frust3ds%2Fcargo-3ds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frust3ds%2Fcargo-3ds/lists"}