Skip to content

Commit 68baaa6

Browse files
vgoat21robertmarsal
andcommitted
feat: public release of version 3 of the plugin
Co-authored-by: Rob Marsal <[email protected]>
1 parent 3ec4e03 commit 68baaa6

File tree

124 files changed

+16587
-10
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+16587
-10
lines changed

.github/workflows/publish.yaml

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
name: Publish
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
concurrency:
8+
group: release-${{ github.event.release.tag_name }}
9+
cancel-in-progress: false
10+
11+
jobs:
12+
build:
13+
name: Build Plugin (${{ matrix.os }}, py${{ matrix.python }}, ${{ matrix.arch }})
14+
runs-on: ${{ matrix.os }}
15+
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
include:
20+
- os: ubuntu-latest
21+
python: "3.10"
22+
arch: x86_64
23+
package-name: linux_x86_64
24+
- os: macos-latest
25+
python: "3.10"
26+
arch: arm64
27+
package-name: macos_arm64
28+
- os: macos-15-intel
29+
python: "3.10"
30+
arch: x86_64
31+
package-name: macos_x86_64
32+
- os: windows-latest
33+
python: "3.10"
34+
arch: x86_64
35+
package-name: windows_x86_64
36+
37+
steps:
38+
- name: Checkout code
39+
uses: actions/checkout@v4
40+
41+
- name: Set up Python ${{ matrix.python }}
42+
uses: actions/setup-python@v5
43+
with:
44+
python-version: ${{ matrix.python }}
45+
46+
- name: Install uv
47+
uses: astral-sh/setup-uv@v6
48+
49+
- name: Install build tools
50+
run: python -m pip install --upgrade pip setuptools wheel
51+
52+
- name: Build vendor dependencies
53+
run: |
54+
rm -rf screenshots
55+
mkdir -p reai_toolkit/vendor
56+
uv pip install . --target reai_toolkit/vendor --no-cache-dir
57+
rm -rf reai_toolkit/vendor/reai_toolkit
58+
rm -rf reai_toolkit/vendor/reai_toolkit-*.dist-info
59+
shell: bash
60+
61+
- name: Verify vendor folder contents
62+
run: |
63+
echo "Listing vendor packages:"
64+
find reai_toolkit/vendor -maxdepth 2 -type d | head -n 50
65+
shell: bash
66+
67+
- name: Package plugin for release (cross-platform)
68+
run: |
69+
python - <<'PY'
70+
import zipfile, os
71+
from pathlib import Path
72+
73+
os.makedirs("dist", exist_ok=True)
74+
zip_path = f"dist/reveng_ida_plugin_${{ matrix.package-name }}.zip"
75+
76+
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zf:
77+
# Add the entry file to root
78+
zf.write("reai_toolkit_entry.py", "reai_toolkit_entry.py")
79+
80+
# Add all files from reai_toolkit/ to root of zip
81+
for root, dirs, files in os.walk("reai_toolkit"):
82+
for file in files:
83+
file_path = os.path.join(root, file)
84+
# Archive name is relative to reai_toolkit (removes the reai_toolkit/ prefix)
85+
arcname = os.path.relpath(file_path, ".")
86+
zf.write(file_path, arcname)
87+
PY
88+
shell: bash
89+
90+
- name: Upload plugin artifact
91+
uses: actions/upload-artifact@v4
92+
with:
93+
name: reveng_ida_plugin_${{ matrix.package-name }}
94+
path: dist/*.zip
95+
96+
attach:
97+
name: Attach Artifacts to GitHub Release
98+
runs-on: ubuntu-latest
99+
needs: build
100+
101+
steps:
102+
- name: Download built artifacts
103+
uses: actions/download-artifact@v4
104+
with:
105+
path: dist
106+
107+
- name: List artifacts
108+
run: ls -R dist
109+
110+
- name: Attach to published release
111+
uses: softprops/action-gh-release@v2
112+
with:
113+
tag_name: ${{ github.event.release.tag_name }}
114+
name: ${{ github.event.release.name }}
115+
body: |
116+
RevEng.AI IDA Plugin
117+
118+
Each ZIP contains:
119+
```
120+
reai_toolkit/
121+
vendor/ (all vendor dependencies)
122+
app/
123+
reai_toolkit_entry.py
124+
```
125+
126+
Extract into your IDA plugins folder.
127+
files: dist/**/*.zip
128+
env:
129+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 58 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
# Byte-compiled / optimized / DLL files
22
__pycache__/
3-
*.py[cod]
3+
*.py[codz]
44
*$py.class
55

6+
*/*.autosave
7+
68
# C extensions
79
*.so
810

911
# Distribution / packaging
1012
.Python
13+
.idea/
1114
build/
1215
develop-eggs/
1316
dist/
@@ -46,7 +49,7 @@ htmlcov/
4649
nosetests.xml
4750
coverage.xml
4851
*.cover
49-
*.py,cover
52+
*.py.cover
5053
.hypothesis/
5154
.pytest_cache/
5255
cover/
@@ -94,20 +97,35 @@ ipython_config.py
9497
# install all needed dependencies.
9598
#Pipfile.lock
9699

100+
# UV
101+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
102+
# This is especially recommended for binary packages to ensure reproducibility, and is more
103+
# commonly ignored for libraries.
104+
#uv.lock
105+
97106
# poetry
98107
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99108
# This is especially recommended for binary packages to ensure reproducibility, and is more
100109
# commonly ignored for libraries.
101110
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102111
#poetry.lock
112+
#poetry.toml
103113

104114
# pdm
105115
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
116+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
117+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
106118
#pdm.lock
107-
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108-
# in version control.
109-
# https://pdm.fming.dev/#use-with-ide
110-
.pdm.toml
119+
#pdm.toml
120+
.pdm-python
121+
.pdm-build/
122+
123+
# pixi
124+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
125+
#pixi.lock
126+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
127+
# in the .venv directory. It is recommended not to include this directory in version control.
128+
.pixi
111129

112130
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113131
__pypackages__/
@@ -121,6 +139,7 @@ celerybeat.pid
121139

122140
# Environments
123141
.env
142+
.envrc
124143
.venv
125144
env/
126145
venv/
@@ -157,7 +176,36 @@ cython_debug/
157176
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158177
# and can be added to the global gitignore or merged into this file. For a more nuclear
159178
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
160-
.idea/
161-
162-
# macOS
163-
.DS_Store
179+
#.idea/
180+
181+
# Abstra
182+
# Abstra is an AI-powered process automation framework.
183+
# Ignore directories containing user credentials, local state, and settings.
184+
# Learn more at https://abstra.io/docs
185+
.abstra/
186+
187+
# Visual Studio Code
188+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
189+
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
190+
# and can be added to the global gitignore or merged into this file. However, if you prefer,
191+
# you could uncomment the following to ignore the entire vscode folder
192+
# .vscode/
193+
194+
# Ruff stuff:
195+
.ruff_cache/
196+
197+
# PyPI configuration file
198+
.pypirc
199+
200+
# Cursor
201+
# Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
202+
# exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
203+
# refer to https://docs.cursor.com/context/ignore-files
204+
.cursorignore
205+
.cursorindexingignore
206+
207+
# Marimo
208+
marimo/_static/
209+
marimo/_lsp/
210+
__marimo__/
211+
/reai_toolkit/vendor/*

0 commit comments

Comments
 (0)