{"id":20531990,"url":"https://github.com/pkgforge/squishy-rs","last_synced_at":"2026-03-16T05:03:37.522Z","repository":{"id":261606339,"uuid":"884595249","full_name":"pkgforge/squishy-rs","owner":"pkgforge","description":"Convenient high level library for reading SquashFS files in Rust [maintainer=@QaidVoid]","archived":false,"fork":false,"pushed_at":"2025-01-14T14:53:45.000Z","size":79,"stargazers_count":12,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-27T20:11:16.536Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/pkgforge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-07T03:17:08.000Z","updated_at":"2025-01-14T14:53:49.000Z","dependencies_parsed_at":"2024-11-07T13:33:25.144Z","dependency_job_id":"dcadb04e-9006-4bb5-8b61-2e81aaf3717e","html_url":"https://github.com/pkgforge/squishy-rs","commit_stats":null,"previous_names":["pkgforge/squishy-rs"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgforge%2Fsquishy-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgforge%2Fsquishy-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgforge%2Fsquishy-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pkgforge%2Fsquishy-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pkgforge","download_url":"https://codeload.github.com/pkgforge/squishy-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248831027,"owners_count":21168388,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-16T00:11:43.517Z","updated_at":"2026-03-16T05:03:32.485Z","avatar_url":"https://github.com/pkgforge.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🗜️ Squishy\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\nA convenient wrapper around the [backhand](https://github.com/wcampbell0x2a/backhand) library for reading and extracting files from SquashFS filesystems. Provides both a library and CLI tool.\n\n## Features\n\n- 📚 **Library Features**\n  - Read and extract files from SquashFS filesystems\n  - Traverse filesystem entries\n  - Handle symlinks with cycle detection\n  - Search for files using custom predicates\n\n- 🛠️ **CLI Features**\n  - Extract AppImage resources:\n    - Icon files (PNG/SVG)\n    - Desktop entries\n    - AppStream metadata\n  - Flexible output options\n\n## Installation\n\n### From crates.io\n\n```bash\ncargo install squishy-cli\n```\n\n### From source\n\n```bash\ngit clone https://github.com/pkgforge/squishy-rs\ncd squishy-rs\ncargo install --path squishy-cli\n```\n\n## Library Usage\n\nAdd this to your `Cargo.toml`:\n\n```toml\n[dependencies]\nsquishy = \"0.2.1\"\n```\n\n### Example\n\n```rust\nuse squishy::{SquashFS, EntryKind};\nuse std::path::Path;\n\n// Open a SquashFS file\nlet squashfs = SquashFS::from_path(\u0026Path::new(\"example.squashfs\"))?;\n\n// List all entries\nfor entry in squashfs.entries() {\n    println!(\"{}\", entry.path.display());\n}\n\n// Optionally, parallel read with rayon\nuse rayon::iter::ParallelIterator;\nfor entry in squashfs.par_entries() {\n    println!(\"{}\", entry.path.display());\n}\n\n// Write file entries to disk\nfor entry in squashfs.entries() {\n    if let EntryKind::File(file) = entry.kind {\n        squashfs.write_file(file, \"/path/to/output/file\")?;\n    }\n}\n\n// Read a specific file\n// Note: the whole file content will be loaded into memory\nlet contents = squashfs.read_file(\"path/to/file.txt\")?;\n```\n\n## CLI Usage\n\nThe CLI tool provides convenient commands for working with AppImage files.\n\n### Basic Commands\n\n```bash\n# Extract icon from an AppImage\nsquishy appimage path/to/app.AppImage --icon\n\n# Extract desktop file\nsquishy appimage path/to/app.AppImage --desktop\n\n# Extract AppStream metadata\nsquishy appimage path/to/app.AppImage --appstream\n\n# Extract and save files to a specific directory\nsquishy appimage path/to/app.AppImage --icon --write /output/path\n\n# Extract multiple resources at once\nsquishy appimage path/to/app.AppImage --icon --desktop --appstream --write\n\n# Filter path by query\nsquishy appimage path/to/app.AppImage --filter \"squishy\" --icon --desktop --appstream --write\n\n# Provide custom offset (it'd be calculated automatically if not provided)\n# Appimage offset can be read using `path/to/app.AppImage --appimage-offset`\nsquishy appimage path/to/app.AppImage --offset 128128 --icon --desktop --appstream --write\n\n# Extract contents of squashfs to a specific directory\nsquishy unsquashfs path/to/app.AppImage -w /output/path\n```\n\n### Command Options\n\n- `--offset`: Custom offset (i.e. the size of ELF)\n- `--filter`: Filter the files using provided query\n- `--icon`: Extract application icon\n- `--desktop`: Extract desktop entry file\n- `--appstream`: Extract AppStream metadata\n- `--write`: Write files to disk (optional path argument)\n\n## License\n\nThis project is licensed under the [MIT] License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkgforge%2Fsquishy-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpkgforge%2Fsquishy-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpkgforge%2Fsquishy-rs/lists"}