Skip to main content

A tool to generate ASCII art signatures (tattoos) and apply them to your code files recursively.

Project description

Tatuagem, the boastful code signature suite

coverage

Tatuagem is a tool to generate ASCII art signatures (tattoos) and apply them to your code files recursively.

Usage

python3 tatuagem.py [text_input] [options]

Arguments

Argument Description Default
text_input The string you want to convert into a tattoo. Required if --file is not provided. None
--text The character used to draw the text pixels. 1
--backsplash The character used to fill the background. 0$*~
--font The TrueType font file (.ttf) to use for generating the text shape. unicode-arial.ttf
--pattern A repeating string pattern to use for the background. Overrides --backsplash. None
--margin Number of empty lines (margin) to add above and below the text. 3
--recurse-path Path to a directory. Tatuagem will walk through this directory and prepend the tattoo to every file found. None
--file, -f Path to a file containing text.
Standard Mode: The content of the file is converted into the tattoo art.
Recurse Mode (with --recurse-path): The content of the file is used as-is for the tattoo (useful for pre-generated art).
None
--overwrite When using --recurse-path, this flag allows overwriting existing tattoos in files. Without this flag, files that are already tattooed will be skipped. False

Examples

Basic Example

Generate a simple tattoo.

python3 tatuagem.py "tatuagem"

Defaults: '1' for text, '0' for background, unicode-arial.ttf for font

Elaborate Syntax Example

Customizing the text and background characters.

python3 tatuagem.py "L'appel du vide" --font 'unicode-arial.ttf' --backsplash '!' --text '@'

alt text

Wallpaper: Pattern-Argument Syntax Example

Using a pattern string for the background.

python3 tatuagem.py "Tatuagem" --pattern '`':,:''

alt text

Recurse your project

Apply the generated tattoo to all files in test_tattoo/.

python tatuagem.py "Tatuagem" --pattern '`':,:''  --recurse-path test_tattoo/

Recurse your project with a text file

Apply the contents of tests/aeaea.inc as a header to all files in test_tattoo/.

python3 tatuagem.py --file tests/aeaea.inc --recurse-path test_tattoo/

Replace existing tattoos with --overwrite

Update existing tattoos in files that were already tattooed. Without this flag, already-tattooed files will be skipped.

python3 tatuagem.py "New Tattoo" --recurse-path test_tattoo/ --overwrite

Features

Shebang detection and preservation - files with #!/... shebangs keep them at the top

Safe for npm projects - tattooed npm projects continue to work after tattooing

Idempotent - Tattoos won't repeat on themselves if run multiple times

.tatignore support - Exclude specific files and directories from tattooing

.tatignore

Similar to .gitignore, you can create a .tatignore file in the root of the directory you want to tattoo to specify patterns of files and directories to exclude from tattooing.

.tatignore Syntax

The .tatignore file supports the following patterns:

  • Simple filenames: file.txt - ignores any file named file.txt
  • Wildcards: *.log - ignores all files ending with .log
  • Directory patterns: node_modules/ - ignores all files in node_modules directory
  • Recursive patterns: build/** - ignores all files in build and its subdirectories
  • Comments: Lines starting with # are treated as comments
  • Empty lines: Empty lines are ignored

.tatignore Example

# Ignore log files
*.log

# Ignore build artifacts
build/
dist/

# Ignore dependencies
node_modules/

# Ignore specific files
secrets.py
config.local.json

# Ignore test directories
tests/**

Usage with .tatignore

  1. Create a .tatignore file in the directory you want to tattoo (or copy .tatignore.example from this repository)
  2. Add patterns for files/directories to exclude
  3. Run tatuagem with --recurse-path as usual
# This will respect patterns in .tatignore
python3 tatuagem.py "MyProject" --recurse-path ./my-project/

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

tatuagem-0.1.9.tar.gz (15.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tatuagem-0.1.9-py3-none-any.whl (15.3 MB view details)

Uploaded Python 3

File details

Details for the file tatuagem-0.1.9.tar.gz.

File metadata

  • Download URL: tatuagem-0.1.9.tar.gz
  • Upload date:
  • Size: 15.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tatuagem-0.1.9.tar.gz
Algorithm Hash digest
SHA256 ba56fd4239140b1d3b371f24d221062b8524478f7bd0f758a0fd3ef08c00f573
MD5 336c92296d5a3bc91e1fb8fb01bf1dba
BLAKE2b-256 dded7446afda00136b8f4292f7d4632aceceaaf3d79929bb4067af5962a2fa44

See more details on using hashes here.

Provenance

The following attestation bundles were made for tatuagem-0.1.9.tar.gz:

Publisher: publish.yml on juleshenry/tatuagem

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tatuagem-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: tatuagem-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 15.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tatuagem-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 b89c47baf457522da583a11842131adf71aab6c27d3271b28b455b014f137063
MD5 992d0d061af9279fe4d78565198529ed
BLAKE2b-256 ff62b2e53d3e5ad1f31f9de8e74bbf29096c6f82a1a4ba3908973584aa78e52c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tatuagem-0.1.9-py3-none-any.whl:

Publisher: publish.yml on juleshenry/tatuagem

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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