A tool that automates presentation of software demos.
Project description
CodeAnim
CodeAnim is a tool to help you animate VS Code. It provides methods that enable you to type, move the cursor, and send commands to VS Code. It works by sending keystrokes using the pynput library.
Installation
Create a venv and then pip install CodeAnim from the GitHub repo:
python3 -m venv .venv
. .venv/bin/activate
pip install git+https://github.com/shadanan/codeanim
The run command uses a custom keybinding. Please add this to your keybindings.json
file in VS Code:
[
{
"key": "ctrl+shift+alt+cmd+enter",
"command": "python.execInTerminal"
}
]
Usage
There are two ways to use CodeAnim:
- As commands in a Markdown file
- Imported as a library and executed in a Python script
Usage of CodeAnim CLI
Create a Markdown file and enclose codeanim commands in a python codeanim
fence.
Example
Add this to codeanim-markdown-demo.md
:
# A Markdown Header
Some text to be read.
```python codeanim
# Bring VS Code to the front
vscode.activate()
# Open myfile.py
vscode.focus("myfile.py")
# Insert print("Hello, World!") into myfile.py
write('print("Hello, World!")\n')
# Execute the script
vscode.run()
```
To execute the CodeAnim commands in the Markdown file:
codeanim codeanim-markdown-demo.md
Flags
- Set
-v
or--verbose
to enable verbose mode. Commands will be printed out as they are executed. - Set
--live
to enable presentation mode. In this mode, a wait() will be injected after every codeanim fence.
Usage of CodeAnim Library
Import CodeAnim, and call the functions.
Example
Add this to codeanim_script_demo.py
:
#!/usr/bin/env python3
from codeanim import *
# Bring VS Code to the front
vscode.activate()
# Open myfile.py
vscode.focus("myfile.py")
# Insert print("Hello, World!") into myfile.py
write('print("Hello, World!")\n')
# Execute the script
vscode.run()
Execute your Python script:
./codeanim_script_demo.py
Development
Clone the repo, create a venv, and install dependencies:
git clone https://github.com/shadanan/codeanim.git
cd codeanim
python3 -m venv .venv
pip install .
Formatting
This project adopts the Ruff formatter and is enforced by a GitHub action.
VS Code
Useful extensions when developing CodeAnim:
Tests
There aren't any unit tests yet. In the tests folder, there is an end-to-end test that uses CodeAnim to open the scratch.py
file, types out some code, and executes it. To run the test:
PYTHONPATH=src codeanim tests/e2e.md -v
Then, validate that it worked by observing that the animation runs, types out:
print("Hello, World!")
And executes the script.
VS Code Tests
PYTHONPATH=src tests/vscode.py
Limitations
CodeAnim currently only works on MacOS because of a dependency on AppleScript, which is used to switch to the VS Code window. Also, many of the commands send Mac specific keystrokes. With some effort, CodeAnim can be made to work on other platforms.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for codeanim-0.0.10-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f936608afd965e7812769d824090d6a34aeecf04c5b5819924a9a39cf78025c |
|
MD5 | 824374779735abfd4a314f8d7d2771ee |
|
BLAKE2b-256 | efd4ccc1a90f58b8fe58a0c2a95178a6efbc372607112b40b87568751e27c6eb |