{"id":40875029,"url":"https://github.com/m-haisham/warpa","last_synced_at":"2026-01-22T01:02:34.650Z","repository":{"id":57750516,"uuid":"524471502","full_name":"m-haisham/warpa","owner":"m-haisham","description":"A command-line tool used to create and extract from renpy archives (rpa).","archived":false,"fork":false,"pushed_at":"2023-01-10T04:04:53.000Z","size":2639,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T10:36:20.804Z","etag":null,"topics":["archive","cli","library","renpy","rpa"],"latest_commit_sha":null,"homepage":"https://docs.rs/warpalib","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/m-haisham.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-13T17:58:51.000Z","updated_at":"2025-09-20T21:15:39.000Z","dependencies_parsed_at":"2023-02-08T17:15:36.969Z","dependency_job_id":null,"html_url":"https://github.com/m-haisham/warpa","commit_stats":null,"previous_names":["mensch272/warpa"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/m-haisham/warpa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-haisham%2Fwarpa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-haisham%2Fwarpa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-haisham%2Fwarpa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-haisham%2Fwarpa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m-haisham","download_url":"https://codeload.github.com/m-haisham/warpa/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m-haisham%2Fwarpa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28648480,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["archive","cli","library","renpy","rpa"],"created_at":"2026-01-22T01:02:33.405Z","updated_at":"2026-01-22T01:02:34.635Z","avatar_url":"https://github.com/m-haisham.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Warpa\n\n![Crates.io](https://img.shields.io/crates/v/warpalib)\n![Crates.io](https://img.shields.io/crates/d/warpalib)\n![Crates.io](https://img.shields.io/crates/l/warpalib)\n![docs.rs](https://img.shields.io/docsrs/warpalib)\n\nWarpa is a command-line tool used to create and extract from renpy archives (rpa).\n\nThe program fully supports v3.0 and v2.0 and reading v3.2.\n\n## Features\n\n- **Fast threaded extraction.** Extract files from multiple archives at the same time using threads. Use `-m` to enable multi-threaded extraction for a single archive by lazy reading file into memory as needed.\n- **Built-in glob pattern support.** Built-in support for glob pattern matching allows adding and removing files, and extracting and updating archives using patterns.\n- **Minimal memory footprint.** Warpa does not read archive into memory. It copies segments from the archive into specified location (extracting file or temporary archive depending on command).\n\n## Install\n\n```bash\ncargo install --git https://github.com/mensch272/warpa\n```\n\n## Usage\n\nThis and the following examples are focused on [warpa], the commandline tool. For information on [warpalib] visit the [docs] or check out the [examples].\n\n```text\nUSAGE:\n    warpa [OPTIONS] \u003cSUBCOMMAND\u003e\n\nOPTIONS:\n    -h, --help\n            Print help information\n    -k, --key \u003cKEY\u003e\n            The encryption key used for creating v3 archives (default=0xDEADBEEF)\n    -o, --override-version\n            Override with default write version (3) if archive version does not support write\n    -v, --verbose\n            Provide additional information (default only shows errors)\n    -V, --version\n            Print version information\n    -w, --write-version \u003cWRITE_VERSION\u003e\n            The write version of archives\n\nSUBCOMMANDS:\n    add        Add files to existing or new archive\n    extract    Extract files with full paths\n    help       Print this message or the help of the given subcommand(s)\n    list       List contents of archive\n    remove     Delete files from archive\n    update     Update existing archive by reading from filesystem\n```\n\n[warpa]: warpa/\n[warpalib]: warpalib/\n[docs]: https://docs.rs/warpalib/latest/warpalib/\n[examples]: warpalib/examples/\n\n### Config\n\n#### Key\n\nThe key argument can be used to specify the index table encryption key for the archive.\nThe default key is \"0xDEADBEEF\".\n\n```bash\nwarpa -k BA5E7023 add path/to/archive.rpa file.txt\n```\n\n### Add\n\nAdd files to an archive either existing (will overwrite the existing file with the same path) or create a new archive with:\n\n```bash\nwarpa add path/to/archive.rpa file1.txt file2.txt\n```\n\nFiles can alternatively mapped to different paths than in filesystem with ARCHIVE=REAL pattern.\nIn the below example, the file is stored as archive.txt while being read from filesystem.txt\n\n```bash\nwarpa add path/to/archive.rpa archive.txt=filesystem.txt\n```\n\nOr, alternatively you can add files based on glob patterns. The example below adds all files in images folder into the archive.\n\n```bash\nwarpa add path/to/archive.rpa -p \"images/**/*\"\n```\n\n### Extract\n\nExtract contents of a single archive into the archive directory with:\n\n```bash\nwarpa extract path/to/archive.rpa\n```\n\nOr, specify a extraction target explicitly by providing the `--out` option. In the example below the contents are extracted into the current working directory.\n\n```bash\nwarpa extract path/to/archive.rpa -o .\n```\n\nExtract multiples archives by providing them consecutively.\n\n```bash\nwarpa extract path/to/archive.rpa path/to/another/archive.rpa\n```\n\nOr, use glob patterns to select specific files in the current working directory (and subdirectories). Here as `--out` is not specified, the files will be extracted relative to the archive directory.\n\n```bash\nwarpa extract -a \"**/*.rpa\"\n```\n\nOr, you can even use unix commands like `find`\n\n```bash\nfind . -type f -name \"*.rpa\" | xargs warpa extract\n```\n\nExtract has an optional and experimental `--memory` flag which enables multi-threaded read into archives. This allows for the extraction of multiple files from the archive at the same time. This works best with large archives containing many files.\n\n```bash\nwarpa extract path/to/archive.rpa -m\n```\n\n### List\n\nList out all the files from an archive with:\n\n```bash\nwarpa list path/to/archive.rpa\n```\n\n### Remove\n\nRemove files from an archive by specifying their full paths in archive.\n\n```bash\nwarpa remove path/to/archive.rpa file1.txt file2.txt\n```\n\nOr, remove files that match a glob pattern. The example below removes all files ending with `.txt`.\n\n```bash\nwarpa remove path/to/archive.rpa -p *.txt\n```\n\nYou can alternatively keep the files matching by passing the `--keep` flag. This example keeps only the files ending with `.txt`.\n\n```bash\nwarpa remove path/to/archive.rpa -p *.txt -k\n```\n\n### Update\n\nYou can update an existing archive by reading from the surrounding file system. This example tries to read all files that exist in archive from the filessystem. If the archive contains `README.md` then warpa would attempt to read `README.md` from the directory of the archive.\n\n```bash\nwarpa update path/to/archive.rpa\n```\n\nThe files being updated can be filtered using `--files` and `--pattern` arguments. The command below only updates `file1.txt` **and** other files that end in `.md`.\n\n```bash\nwarpa update path/to/archive.rpa -f file1.txt -p \"*.md\"\n```\n\nWarpa can be instructed to find files relative to another directory by giving the `--relative` argument. The command below will look for `README.md` in the current working directory.\n\n```bash\nwarpa update path/to/archive.rpa -f README.md -r .\n```\n\n## License\n\nThis tool and library is licensed under [MIT License](LICENSE).\n\n## Disclaimer\n\nThis tool is intended for use with files on which the authors allow modification of and/or extraction. Unpermitted use on files where such consent was not given is highly discouraged.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-haisham%2Fwarpa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm-haisham%2Fwarpa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm-haisham%2Fwarpa/lists"}