{"id":19337659,"url":"https://github.com/sheetjs/rooster","last_synced_at":"2025-10-20T12:08:28.523Z","repository":{"id":64306304,"uuid":"276734103","full_name":"SheetJS/rooster","owner":"SheetJS","description":"🐓 File filter for version control systems.","archived":false,"fork":false,"pushed_at":"2020-07-24T17:37:03.000Z","size":34,"stargazers_count":7,"open_issues_count":0,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-19T08:53:04.929Z","etag":null,"topics":["go","vcs"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SheetJS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-02T19:56:38.000Z","updated_at":"2021-06-15T14:04:36.000Z","dependencies_parsed_at":"2023-01-15T10:45:40.493Z","dependency_job_id":null,"html_url":"https://github.com/SheetJS/rooster","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SheetJS%2Frooster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SheetJS%2Frooster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SheetJS%2Frooster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SheetJS%2Frooster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SheetJS","download_url":"https://codeload.github.com/SheetJS/rooster/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250352216,"owners_count":21416457,"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":["go","vcs"],"created_at":"2024-11-10T03:15:01.481Z","updated_at":"2025-10-20T12:08:28.451Z","avatar_url":"https://github.com/SheetJS.png","language":"Go","readme":"# Rooster\n\n![LogoMakr_7ZIRlg](https://user-images.githubusercontent.com/13544676/86405652-91fa2f80-bc66-11ea-8543-f56ab909bb9d.png)\n\nRooster is a file filter for version control systems.\n\n## Installation\n\n1. Clone the repo\n\n`git clone https://github.com/SheetJS/rooster.git rooster`\n\n2. Run go build\n\n```\ncd rooster\ngo build\n```\n\n## Usage\n\nIn order to use `rooster` a config file must be provided:\n\n```\nUsage of ./rooster:\n  -config string\n        Rooster's config file (default \".rooster.yaml\")\n```\n\nThe layout of the .rooster.yaml is as follows:\n\n```yaml\n- repo: https://github.com/foo/bar\n  extensions:\n    - docx\n    - doc\n    - xlsx\n  out: foo_bar\n\n- repo: https://github.com/baz/qux\n  type: svn\n  extensions:\n    - .docx\n    - .doc\n    - xlsx\n  out: baz_qux\n\n- repo: https://github.com/quux/corge\n  type: hg\n  extensions:\n    - md\n    - \"*.x*\"\n```\n\nEach object must have the following keys:\n\n- `repo`: The repository's URL\n- `extension`: An array of extensions to filter for\n\nNote the following:\n\n1. The leading `.` is optional, unless shell patterns are used (see below).\n2. Standard shell patterns (as defined [here](https://golang.org/pkg/path/filepath/#Match)) may be used.\n   - If a shell pattern is used then the leading `.` becomes mandatory, and the extension must be enclosed in quotes.\n\nThe following keys are optional:\n\n- `type`: The version control system to use (supported options: git,svn,hg) [default: git]\n- `out`: The output directory to save the filtered files to (default: rooster_output_xxxx)\n\n### Example Output\n\nOnce `rooster` is done each filtered repository will have a output directory similar to the one below:\n\n```\nrooster_output_xxx\n├── doc\n├── docx\n└── txt\n```\n\nWhere all docx files will be in the `docx` directory and all the `doc` files will be in the `doc` folder, etc, etc.\n\n### Dependencies\n\nYou'll need to have your vcs provider installed on your system.\nAn exception to this is `git` as `rooster` uses a go-based implementation of git.\n\nThe currently supported vcs'es are:\n\n- Git\n- Subversion\n- Mercurial\n\n## Credits\n\n### Logo\n\nCreated at [LogoMakr.com](https://www.LogoMakr.com)\n\n### go-git\n\nFor the awesome git [library](https://github.com/go-git/go-git) written in pure go.\n\n### go-yaml\n\nFor the awesome [YAML parser](https://github.com/go-yaml/yaml).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsheetjs%2Frooster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsheetjs%2Frooster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsheetjs%2Frooster/lists"}