{"id":21547580,"url":"https://github.com/zabackary/vexmason","last_synced_at":"2026-02-10T09:09:15.416Z","repository":{"id":222299949,"uuid":"756768416","full_name":"zabackary/vexmason","owner":"zabackary","description":"A comprehensive build system for VEX V5 Python, extensible and easy to integrate with modules support and more","archived":false,"fork":false,"pushed_at":"2025-02-19T14:24:50.000Z","size":158,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-30T08:09:46.824Z","etag":null,"topics":["compiler","vex","vex-python","vex-robotics","vex-robotics-competition","vex-v5","vexcode","vexmason"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zabackary.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-13T09:20:42.000Z","updated_at":"2025-02-19T14:24:53.000Z","dependencies_parsed_at":"2025-02-19T15:27:44.946Z","dependency_job_id":"bcd15981-ae47-4a1b-8b88-86a996fc8cd7","html_url":"https://github.com/zabackary/vexmason","commit_stats":null,"previous_names":["zabackary/vexmason"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zabackary%2Fvexmason","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zabackary%2Fvexmason/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zabackary%2Fvexmason/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zabackary%2Fvexmason/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zabackary","download_url":"https://codeload.github.com/zabackary/vexmason/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251666283,"owners_count":21624293,"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","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":["compiler","vex","vex-python","vex-robotics","vex-robotics-competition","vex-v5","vexcode","vexmason"],"created_at":"2024-11-24T06:15:35.825Z","updated_at":"2026-02-10T09:09:15.329Z","avatar_url":"https://github.com/zabackary.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n      \u003cimg src=\"./assets/vexmason-logo-outlined.svg\" alt=\"vexmason logo\" width=\"240\" height=\"240\" /\u003e\n\u003c/div\u003e\n\u003ch1 align=\"center\"\u003evexmason\u003c/h1\u003e\n\n\u003ctable align=\"center\"\u003e\n      \u003ctr\u003e\n            \u003ctd\u003e\n                  \u003cb\u003e\n                        Get started now!\n                        \u003ci\u003e\u003ca href=\"https://github.com/zabackary/vexmason-template\"\u003e\n                              Go make a copy of the vexmason template\n                        \u003c/a\u003e\u003c/i\u003e\n                  \u003c/b\u003e\n            \u003c/td\u003e\n      \u003c/tr\u003e\n\u003c/table\u003e\n\nvexmason is a comprehensive build system for VEX V5 Python. It lets you\nmodularize and refactor your code into maintainable and modern OOP Python\nclasses and files within the V5 ecosystem.\n\nvexmason acts as a compiler/bundler for Python, like Rollup is for JS, and makes\nit so you can write your code in different modules and rely on the tooling to\ncondense it into an uploadable single Python file. It also lets you do CPP-style\n`#define` at compile-time!\n\nvexmason utilizes\n[`python-compiler`](https://github.com/zabackary/python-compiler) to bundle the\nfiles, which I also wrote.\n\nWhy \"vexmason\"? Mason means to someone/thing who builds something, and I didn't\nhave any better ideas.\n\n\u003e [!WARNING]\n\u003e\n\u003e ~~As the maintainer's team has switched to either PROS or vexide, this repo isn't\n\u003e maintained much anymore. No new features will be added but bugs will still be\n\u003e fixed if they are reported.~~\n\u003e\n\u003e One of the teams working with the maintainer has switched to vexide, but\n\u003e there are still two teams who will use vexmason in the coming season.\n\n## Features\n\n- [x] Integrate into the native VEX VSCode extension and bundle files behind-\n      the-scenes.\n- [x] Read a config file and substitute defined constants.\n- [ ] Completely replace the VEXCode VSCode extension for easier installation\n      and better DX\n\n## Installation\n\n\u003e [!NOTE]\n\u003e\n\u003e vexmason is only supported on Windows for now. The code is cross-platform,\n\u003e though, so as soon as I finish initial development I'll work on supporting\n\u003e Linux. Please let me know if you would like to try to build on OSX.\n\u003e\n\u003e The maintainer now uses a Linux laptop, so it's a bit ironic.\n\nInstallation is easy. Just head over to the\n[GitHub releases page](https://github.com/zabackary/vexmason/releases/) and\ndownload/run the `installer.exe` file associated with the latest release.\nWindows will (probably) flag the file as \"unsafe\". If you trust me, you can\nignore it. If you don't, read the code and\n[compile it from the source](#Development) yourself.\n\n## Configuration\n\nvexmason will only run on directories with both a `vex_project_settings.json`\nfile AND a `vexmason-config.json` file in the `.vscode` directory. You should\nalso have a `vexmason-local-config.json` file there too. The format is:\n\n`vexmason-config.json`\n\n```json\n{\n  \"config_version\": \"1.1\",\n  \"name\": \"{{ defines/__AUTONOMOUS_ROUTE__ }} | vexmason template\",\n  \"description\": \"A description. If ommited, vexmason will generate one for you.\",\n  \"language\": \"python\",\n  \"default_defines\": {\n    \"__AUTONOMOUS_ROUTE__\": \"route1\"\n  }\n}\n```\n\n`vexmason-local-config.json`\n\n```json\n{\n  \"config_version\": \"1.1\",\n  \"computer_name\": \"your computer name, can be used like {{ computer-name }} in `name` and `description` fields\",\n  \"defines_overrides\": {\n    \"__COMPETITION_MODE__\": false\n  }\n}\n```\n\nNote `config_version`: it indicates the vexmason config version the config was\nwritten for. vexmason will error if it doesn't support the version. The latest\nversion is `1.1` with support for types in defines.\n\n## Development\n\n### Building\n\nYou'll need the Rust compiler (rustc) and Cargo installed to build this project,\nas it's written in [Rust](https://www.rust-lang.org/). The easiest way to do\nthis is through [`rustup`](https://rustup.rs/).\n\nOnce you've done that, you can build the project with `cargo build` and/or run\nthe code with `cargo run --bin {binary name}`. There are three main binaries\nbuilt: the `vexcom` binary, the main binary (\"`vexmason`\"), and the installer\n(\"`installer`\").\n\n### Steps to put the binaries in the right place\n\n1. Run the installer. That's it. It will fetch the binaries from GitHub, though,\n   so make sure you trust me.\n\nor\n\n1. Navigate to\n   `~/.vscode/extensions/vexcode-{version}/resources/tools/vexcom/{platform}`\n   and rename the existing `vexcom` or `vexcom.exe` to `vexcom.old` or\n   `vexcom.old.exe`. Tip: make a backup and name it something like `vexcom.bak`\n   beforehand in case something goes wrong.\n2. Take your built `vexcom.exe` file (the one you built in\n   [Building](#Building)) and make a copy of it in that directory.\n3. Create the installation directory at `%LOCALAPPDATA%/vexmason` and\n   `git clone` [`python-compiler`](https://github.com/zabackary/python-compiler)\n   into `./lib/python-compiler`.\n4. Make a copy of your built `vexmason.exe` and put it in `./bin`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzabackary%2Fvexmason","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzabackary%2Fvexmason","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzabackary%2Fvexmason/lists"}