{"id":15101873,"url":"https://github.com/iloveitaly/github-actions-metadata-sync","last_synced_at":"2025-10-22T22:31:16.712Z","repository":{"id":228649792,"uuid":"774571054","full_name":"iloveitaly/github-actions-metadata-sync","owner":"iloveitaly","description":"Github Action to sync repo metadata from code to repo","archived":false,"fork":false,"pushed_at":"2024-11-09T22:50:52.000Z","size":85,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-30T15:27:03.627Z","etag":null,"topics":["description","homepage","keywords","metadata","npm","nuget","repo","sync","topics","website"],"latest_commit_sha":null,"homepage":"https://github.com/iloveitaly/github-actions-metadata-sync","language":"Shell","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/iloveitaly.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-03-19T19:30:26.000Z","updated_at":"2024-11-09T22:50:45.000Z","dependencies_parsed_at":"2024-03-19T20:49:30.699Z","dependency_job_id":"dc290620-f99b-408d-a23a-5b8638ed1331","html_url":"https://github.com/iloveitaly/github-actions-metadata-sync","commit_stats":null,"previous_names":["iloveitaly/github-actions-metadata-sync"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iloveitaly%2Fgithub-actions-metadata-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iloveitaly%2Fgithub-actions-metadata-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iloveitaly%2Fgithub-actions-metadata-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iloveitaly%2Fgithub-actions-metadata-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iloveitaly","download_url":"https://codeload.github.com/iloveitaly/github-actions-metadata-sync/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237743729,"owners_count":19359287,"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":["description","homepage","keywords","metadata","npm","nuget","repo","sync","topics","website"],"created_at":"2024-09-25T18:42:12.648Z","updated_at":"2025-10-22T22:31:16.708Z","avatar_url":"https://github.com/iloveitaly.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Metadata Sync [![version](https://img.shields.io/github/v/release/iloveitaly/github-actions-metadata-sync)](https://img.shields.io/github/v/release/iloveitaly/github-actions-metadata-sync)\n\nGithub Action to sync repo metadata (description, homepage, topics) from code to repo.\n\n## Use Cases\n\nKeep the GitHub repo metadata (description, tags) in sync with your code! Metadata is now configuration as code, and can be validated with a Pull Request.\n\nThis is nearly identical to [github-actions-repo-sync](https://github.com/kbrashears5/github-action-repo-sync) with the primary differences being:\n\n* Docker container is pulled and not built dynamically (less runtime)\n* The file name and type are inferred from the repo, so there's less configuration\n\n## Setup\n\nCreate a new file called `.github/workflows/repo-sync.yml` that looks like so:\n\n```yaml\nname: Repository Metadata Sync\n\non:\n  push:\n    branches: [main, master]\n\njobs:\n  repo_sync:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Fetching Local Repository\n        uses: actions/checkout@v4\n      - name: Repository Metadata Sync\n        uses: iloveitaly/github-actions-metadata-sync@v1\n        with:\n          TOKEN: ${{ secrets.GH_PERSONAL_TOKEN }}\n```\n\nNote that the built in `secrets.github_token` does not have the necessary permissions to update the repo description. You must use a personal access token instead:\n\n```shell\ngh secret set GH_PERSONAL_TOKEN --app actions --body ghp_the_key\n```\n\nAlternatively, you can manually specify the type and path (these are inferred from the repo type by default):\n\n```yaml\nname: Repository Metadata Sync\n\non:\n  push:\n    branches: [main,master]\n\njobs:\n  repo_sync:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Fetching Local Repository\n        uses: actions/checkout@v4\n      - name: Repository Metadata Sync\n        uses: iloveitaly/github-actions-metadata-sync@v1\n        with:\n          TOKEN: ${{ secrets.GH_PERSONAL_TOKEN }}\n          # optional params, these are inferred from the repo type!\n          TYPE: npm\n          PATH: package.json\n```\n\n## Parameters\n\n| Parameter | Required | Description |\n| --- | --- | --- |\n| TYPE | true | Type of repo. See below for supported repo types |\n| PATH | true | Path to the repo type's metadata file |\n| TOKEN | true | Personal Access Token with Repo scope |\n\n## Supported Repo Types\n\n| Repo Type | File | Description |\n| --- | --- | --- |\n| npm | package.json | package.json for repo |\n| nuget | ProjectName.csproj | csproj file for project |\n| python | ProjectName.toml | toml file for project |\n\nNote if using standard `PATH` inputs the `TYPE` input is not required.\n\n## Metadata without a package manager\n\nIf you have a project that does not have a supported package manager, or if you just don't want to store metadata in your `package.json` and friends, you can create a file called `metadata.json` and store your metadata there.\n\nThis file will be prioritized over the package manager metadata files. Here's an example.\n\n```json\n{\n  \"description\": \"Repo description\",\n  \"homepage\": \"https://github.com/kbrashears5/github-action-repo-sync\",\n  \"keywords\": [\n    \"sync\",\n    \"repo\",\n    \"metadata\"\n  ]\n}\n```\n\nFor example, see [.github/workflows/repo-sync.yml](.github/workflows/repo-metadata-sync.yml) and `metadata.json` in this repo\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filoveitaly%2Fgithub-actions-metadata-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filoveitaly%2Fgithub-actions-metadata-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filoveitaly%2Fgithub-actions-metadata-sync/lists"}