diff --git a/.distignore b/.distignore index 30128dd..46ab074 100644 --- a/.distignore +++ b/.distignore @@ -29,3 +29,4 @@ node_modules *.zip authors.txt composer.* +.php-commitizen.php diff --git a/.php-commitizen.php b/.php-commitizen.php new file mode 100644 index 0000000..70ae02f --- /dev/null +++ b/.php-commitizen.php @@ -0,0 +1,30 @@ + [ + 'lengthMin' => 1, // Min length of the type + 'lengthMax' => 8, // Max length of the type + 'acceptExtra' => false, // Allow adding types not listed in 'values' key + 'values' => ['feat', 'fix', 'refactor', 'style', 'docs', 'chore', 'test', 'perf', 'build', 'ci'], // All the values usable as type + ], + 'scope' => [ + 'lengthMin' => 0, // Min length of the scope + 'lengthMax' => 10, // Max length of the scope + 'acceptExtra' => true, // Allow adding scopes not listed in 'values' key + 'values' => [], // All the values usable as scope + ], + 'description' => [ + 'lengthMin' => 1, // Min length of the description + 'lengthMax' => 44, // Max length of the description + ], + 'subject' => [ + 'lengthMin' => 1, // Min length of the subject + 'lengthMax' => 50, // Max length of the subject + ], + 'body' => [ + 'wrap' => 72, // Wrap the body at 72 characters + ], + 'footer' => [ + 'wrap' => 72, // Wrap the footer at 72 characters + ], +]; diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 83e6a64..b08e8d6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,33 +5,39 @@ request the best chance of being accepted: # Requesting Features/Reporting Bugs -- To request a new feature or to report a bug, create an - [Issue](https://github.com/markcheret/footnotes/issues/new/choose) and choose - the correct template +- To request a new feature or to report a bug, create an [Issue][new-issue] and + choose the correct template # Contributing Code -- **footnotes** uses [GitHub Flow](https://githubflow.github.io/) +- **footnotes** uses [GitHub Flow][github-flow] - branch off of `main` to start developing (`git checkout -b `) - ensure that your new branch has a descriptive name - create a remote copy of your new branch (`git push`) -- create a draft [pull request](https://github.com/markcheret/footnotes/compare) - to merge your branch with `main` — tag any related Issues, and if they are - assigned to a Project board, this will automatically move them into the - ‘In Progress’ bucket +- create a draft [pull request][pull-request] to merge your branch with `main` — + tag any related Issues, and if they are assigned to a Project board, this will + automatically move them into the ‘In Progress’ bucket - when you think you're finished, un-draft your pull request — if the PR is assigned to a Project board, this will automatically move it and any related Issues into the ‘Review in progress’ bucket # Commits -- **footnotes** uses [Conventional Commits](https://www.conventionalcommits.org) +- **footnotes** uses [Conventional Commits][conventional-commits] +- we use [PHP Commitizen][php-commitizen] to automate this - use `composer commit` - keep individual commits as small as possible # Versioning -- **footnotes** uses [Semantic Versioning](https://semver.org/) +- **footnotes** uses [Semantic Versioning][semver] # Translating - Translations are welcome! + +[new-issue]: https://github.com/markcheret/footnotes/issues/new/choose +[github-flow]: https://githubflow.github.io/ +[pull-request]: https://github.com/markcheret/footnotes/compare +[conventional-commits]: https://www.conventionalcommits.org +[php-commitizen]: https://github.com/conventional-commits/php-commitizen +[semver]: https://semver.org/ diff --git a/composer.json b/composer.json index 134107f..4b3354c 100644 --- a/composer.json +++ b/composer.json @@ -11,11 +11,14 @@ "lint-css": "echo TODO", "lint-js": "echo TODO", "docs": "./vendor/bin/phpdoc -d . -t ./docs --ignore vendor/", + "commit": "./vendor/bin/php-commitizen commit -- ./.php-commitizen.php", "post-install-cmd": "./_tools/setup.sh" }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1", "wp-coding-standards/wpcs": "^2.3", - "phpdocumentor/phpdocumentor": "^3.0" + "phpdocumentor/phpdocumentor": "^3.0", + "damianopetrungaro/php-commitizen": "^0.2.0", + "marcocesarato/php-conventional-changelog": "^1.9" } } diff --git a/composer.lock b/composer.lock index b1a01a4..040a599 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "96b80176526406b01227fcaef2a4c2fc", + "content-hash": "c15a58a62ba5d8b2d7f3273717a8381a", "packages": [], "packages-dev": [ { @@ -80,6 +80,61 @@ ], "time": "2020-11-11T10:22:58+00:00" }, + { + "name": "damianopetrungaro/php-commitizen", + "version": "v0.2.0", + "source": { + "type": "git", + "url": "https://github.com/conventional-commits/php-commitizen.git", + "reference": "985283538f013c37146b2ec83812eeef2ff9d73c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/conventional-commits/php-commitizen/zipball/985283538f013c37146b2ec83812eeef2ff9d73c", + "reference": "985283538f013c37146b2ec83812eeef2ff9d73c", + "shasum": "" + }, + "require": { + "symfony/console": "^4 || ^5" + }, + "require-dev": { + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9" + }, + "bin": [ + "php-commitizen" + ], + "type": "library", + "autoload": { + "psr-4": { + "Damianopetrungaro\\PHPCommitizen\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Damiano Petrungaro", + "email": "damianopetrungaro@gmail.com" + } + ], + "description": "Help writing Git commit following conventional commit specs", + "keywords": [ + "atomic", + "atomic commit", + "commit", + "conventional commit", + "conventionalcommit", + "git" + ], + "support": { + "issues": "https://github.com/conventional-commits/php-commitizen/issues", + "source": "https://github.com/conventional-commits/php-commitizen/tree/v0.2.0" + }, + "time": "2020-07-15T23:51:42+00:00" + }, { "name": "dealerdirect/phpcodesniffer-composer-installer", "version": "v0.7.1", @@ -1343,6 +1398,79 @@ ], "time": "2020-10-31T13:45:51+00:00" }, + { + "name": "marcocesarato/php-conventional-changelog", + "version": "v1.9.9", + "source": { + "type": "git", + "url": "https://github.com/marcocesarato/php-conventional-changelog.git", + "reference": "072ca71c733cf82dae8e6523aa40f4133c288f8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/marcocesarato/php-conventional-changelog/zipball/072ca71c733cf82dae8e6523aa40f4133c288f8c", + "reference": "072ca71c733cf82dae8e6523aa40f4133c288f8c", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/console": "^4 || ^5" + }, + "require-dev": { + "brainmaestro/composer-git-hooks": "^2.8", + "friendsofphp/php-cs-fixer": "^2.18" + }, + "bin": [ + "conventional-changelog" + ], + "type": "library", + "extra": { + "hooks": { + "pre-commit": "composer fix-cs", + "pre-push": "composer check-cs", + "post-merge": "composer install" + } + }, + "autoload": { + "psr-4": { + "ConventionalChangelog\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-or-later" + ], + "authors": [ + { + "name": "Marco Cesarato", + "email": "cesarato.developer@gmail.com" + } + ], + "description": "Generate changelogs and release notes from a project's commit messages and metadata and automate versioning with semver.org and conventionalcommits.org", + "keywords": [ + "changelog", + "commit", + "commits", + "convention", + "conventional", + "conventional-changelog", + "conventional-changelog-preset", + "conventional-commit", + "conventional-commits", + "conventionalcommits", + "generation", + "git", + "history", + "php", + "readme", + "tag" + ], + "support": { + "issues": "https://github.com/marcocesarato/php-conventional-changelog/issues", + "source": "https://github.com/marcocesarato/php-conventional-changelog/tree/v1.9.9" + }, + "time": "2021-04-02T12:29:26+00:00" + }, { "name": "monolog/monolog", "version": "2.2.0",