Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

codeanim-0.0.10.tar.gz (7.7 kB view hashes)

Uploaded Source

Built Distribution

codeanim-0.0.10-py3-none-any.whl (8.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page