{"id":13588543,"url":"https://github.com/balena-io-modules/scrutinizer","last_synced_at":"2025-04-08T06:32:13.680Z","repository":{"id":34081034,"uuid":"117857250","full_name":"balena-io-modules/scrutinizer","owner":"balena-io-modules","description":"Extract a git repository's metadata relying on open source conventions","archived":true,"fork":false,"pushed_at":"2022-09-12T11:55:41.000Z","size":1315,"stargazers_count":8,"open_issues_count":30,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-31T09:42:13.794Z","etag":null,"topics":["git","github","github-api"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/balena-io-modules.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-17T15:47:04.000Z","updated_at":"2023-12-05T15:23:05.000Z","dependencies_parsed_at":"2022-08-08T12:30:21.017Z","dependency_job_id":null,"html_url":"https://github.com/balena-io-modules/scrutinizer","commit_stats":null,"previous_names":["resin-io-modules/scrutinizor","resin-io-modules/examinator","resin-io-modules/scrutinizer"],"tags_count":121,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-io-modules%2Fscrutinizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-io-modules%2Fscrutinizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-io-modules%2Fscrutinizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/balena-io-modules%2Fscrutinizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/balena-io-modules","download_url":"https://codeload.github.com/balena-io-modules/scrutinizer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246238226,"owners_count":20745494,"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":["git","github","github-api"],"created_at":"2024-08-01T15:06:46.950Z","updated_at":"2025-04-08T06:32:11.125Z","avatar_url":"https://github.com/balena-io-modules.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"scrutinizer\n===========\n\n[![npm](https://img.shields.io/npm/v/scrutinizer.svg?style=flat-square)](https://npmjs.com/package/scrutinizer)\n[![npm license](https://img.shields.io/npm/l/scrutinizer.svg?style=flat-square)](https://npmjs.com/package/scrutinizer)\n[![npm downloads](https://img.shields.io/npm/dm/scrutinizer.svg?style=flat-square)](https://npmjs.com/package/scrutinizer)\n[![travis](https://img.shields.io/travis/resin-io-modules/scrutinizer/master.svg?style=flat-square\u0026label=linux)](https://travis-ci.org/resin-io-modules/scrutinizer)\n\n\u003e Extract a git repository's metadata relying on open source\n\u003e conventions\n\nInstallation\n------------\n\nInstall `scrutinizer` by running:\n\n```sh\nnpm install --save scrutinizer\n```\n\nDocumentation\n-------------\n\n\n* [scrutinizer](#module_scrutinizer)\n    * [.local(gitRepository, options)](#module_scrutinizer.local) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n    * [.remote(gitRepository, options)](#module_scrutinizer.remote) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n\n\u003ca name=\"module_scrutinizer.local\"\u003e\u003c/a\u003e\n\n### scrutinizer.local(gitRepository, options) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n**Kind**: static method of [\u003ccode\u003escrutinizer\u003c/code\u003e](#module_scrutinizer)  \n**Summary**: Examine a local git repository directory  \n**Access**: public  \n**Fulfil**: \u003ccode\u003eObject\u003c/code\u003e - examination results  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| gitRepository | \u003ccode\u003eString\u003c/code\u003e | path to git repository |\n| options | \u003ccode\u003eObject\u003c/code\u003e | options |\n| options.reference | \u003ccode\u003eString\u003c/code\u003e | git reference to check |\n| [options.progress] | \u003ccode\u003efunction\u003c/code\u003e | progress callback (state) |\n| [options.whitelistPlugins] | \u003ccode\u003eArray.\u0026lt;String\u0026gt;\u003c/code\u003e | list of plugins to run. Matches all if empty |\n\n**Example**  \n```js\nscrutinizer.local('./foo/bar/baz', {\n  reference: 'master',\n  progress: (state) =\u003e {\n    console.log(state.percentage)\n  }\n}).then((results) =\u003e {\n  console.log(results)\n})\n```\n\u003ca name=\"module_scrutinizer.remote\"\u003e\u003c/a\u003e\n\n### scrutinizer.remote(gitRepository, options) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nIf `$GITHUB_TOKEN` is set, it will be used to authenticate with\nGitHub to increase rate-limiting.\n\n**Kind**: static method of [\u003ccode\u003escrutinizer\u003c/code\u003e](#module_scrutinizer)  \n**Summary**: Examine a remote git repository url  \n**Access**: public  \n**Fulfil**: \u003ccode\u003eObject\u003c/code\u003e - examination results  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| gitRepository | \u003ccode\u003eString\u003c/code\u003e | git repository url |\n| options | \u003ccode\u003eObject\u003c/code\u003e | options |\n| options.reference | \u003ccode\u003eString\u003c/code\u003e | git reference to check |\n| [options.progress] | \u003ccode\u003efunction\u003c/code\u003e | progress callback (state) |\n| [options.whitelistPlugins] | \u003ccode\u003eArray.\u0026lt;String\u0026gt;\u003c/code\u003e | list of plugins to run. Matches all if empty |\n\n**Example**  \n```js\nscrutinizer.remote('git@github.com:foo/bar.git', {\n  reference: 'master',\n  progress: (state) =\u003e {\n    console.log(state.percentage)\n  }\n}).then((results) =\u003e {\n  console.log(results)\n})\n```\n\nTests\n-----\n\nOur test suite contains integration test cases that run this module against\nreal projects. For that reason, we maintain a set of git submodules in\n`test/repositories`, where the actual test cases that assert their results live\nin `test/e2e`.\n\n1. Fetch all git submodules\n\n```sh\ngit submodule update --init --recursive\n```\n\n2. Set `$GITHUB_TOKEN`, to increase rate-limiting\n\n3. Run the `test` npm script:\n\n```sh\nnpm test\n```\n\nYou may enable debug information by setting `DEBUG=scrutinizer*`.\n\nContribute\n----------\n\n- Issue Tracker: [github.com/resin-io-modules/scrutinizer/issues](https://github.com/resin-io-modules/scrutinizer/issues)\n- Source Code: [github.com/resin-io-modules/scrutinizer](https://github.com/resin-io-modules/scrutinizer)\n\nBefore submitting a PR, please make sure that you include tests, and that the\nlinter runs without any warning:\n\n```sh\nnpm run lint\n```\n\nOne of the most valuable things you can contribute to this project is implement\nor improve plugins, which are small functions whose duty is to extract a\ncertain facet about the repository, like license information.\n\n1. Create a new file in `lib/plugins`, like `myplugin.js`\n\n2. Export a function that takes a single argument, `backend`, which contains\nevery function you need to interact with a git repository, like reading a file\n\nMake sure you use the `backend` object instead of falling back to `fs` or an\nAPI call, so the plugin works fine in both local and remote modes.\n\nYou can do whatever you need here, including checking out other branches.\n`scrutinizer` will make sure the project is properly reset before calling\nanother plugin.\n\n3. Add the new plugin to `BUILTIN_PLUGINS` in `lib/index.js`\n\n4. Update test cases in `test/e2e`\n\nSupport\n-------\n\nIf you're having any problem, please [raise an issue][newissue] on GitHub.\n\nLicense\n-------\n\nThis project is free software, and may be redistributed under the terms\nspecified in the [license].\n\n[newissue]: https://github.com/resin-io-modules/scrutinizer/issues/new\n[license]: https://github.com/resin-io-modules/scrutinizer/blob/master/LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbalena-io-modules%2Fscrutinizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbalena-io-modules%2Fscrutinizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbalena-io-modules%2Fscrutinizer/lists"}