-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
611 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
on: pull_request | ||
name: Review | ||
jobs: | ||
changelog: | ||
runs-on: ubuntu-latest | ||
name: Changelog should be updated | ||
strategy: | ||
fail-fast: false | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
with: | ||
fetch-depth: 2 | ||
|
||
- name: Git fetch | ||
run: git fetch | ||
|
||
- name: Check that changelog has been updated. | ||
run: git diff --exit-code origin/${{ github.base_ref }} -- CHANGELOG.md && exit 1 || exit 0 | ||
|
||
test-composer-files: | ||
name: Validate composer | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
php-versions: [ '8.1' ] | ||
dependency-version: [ prefer-lowest, prefer-stable ] | ||
steps: | ||
- uses: actions/checkout@master | ||
- name: Setup PHP, with composer and extensions | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: ${{ matrix.php-versions }} | ||
extensions: json | ||
coverage: none | ||
tools: composer:v2 | ||
# https://github.com/shivammathur/setup-php#cache-composer-dependencies | ||
- name: Get composer cache directory | ||
id: composer-cache | ||
run: echo "::set-output name=dir::$(composer config cache-files-dir)" | ||
- name: Cache dependencies | ||
uses: actions/cache@v2 | ||
with: | ||
path: ${{ steps.composer-cache.outputs.dir }} | ||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | ||
restore-keys: ${{ runner.os }}-composer- | ||
- name: Validate composer files | ||
run: | | ||
composer validate --strict composer.json | ||
# Check that dependencies resolve. | ||
composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction | ||
- name: Check that composer file is normalized | ||
run: | | ||
composer normalize --dry-run | ||
php-coding-standards: | ||
name: PHP coding standards | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
php-versions: [ '8.1' ] | ||
steps: | ||
- uses: actions/checkout@master | ||
- name: Setup PHP, with composer and extensions | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: ${{ matrix.php-versions }} | ||
extensions: json | ||
coverage: none | ||
tools: composer:v2 | ||
# https://github.com/shivammathur/setup-php#cache-composer-dependencies | ||
- name: Get composer cache directory | ||
id: composer-cache | ||
run: echo "::set-output name=dir::$(composer config cache-files-dir)" | ||
- name: Cache dependencies | ||
uses: actions/cache@v2 | ||
with: | ||
path: ${{ steps.composer-cache.outputs.dir }} | ||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | ||
restore-keys: ${{ runner.os }}-composer- | ||
- name: Install Dependencies | ||
run: | | ||
composer install --no-interaction --no-progress | ||
- name: PHPCS | ||
run: | | ||
composer coding-standards-check/phpcs | ||
php-code-analysis: | ||
name: PHP code analysis | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
php-versions: [ '8.1' ] | ||
steps: | ||
- uses: actions/checkout@master | ||
- name: Setup PHP, with composer and extensions | ||
uses: shivammathur/setup-php@v2 | ||
with: | ||
php-version: ${{ matrix.php-versions }} | ||
extensions: json | ||
coverage: none | ||
tools: composer:v2 | ||
# https://github.com/shivammathur/setup-php#cache-composer-dependencies | ||
- name: Get composer cache directory | ||
id: composer-cache | ||
run: echo "::set-output name=dir::$(composer config cache-files-dir)" | ||
- name: Cache dependencies | ||
uses: actions/cache@v2 | ||
with: | ||
path: ${{ steps.composer-cache.outputs.dir }} | ||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | ||
restore-keys: ${{ runner.os }}-composer- | ||
- name: Code analysis | ||
run: | | ||
./scripts/code-analysis | ||
coding-standards-markdown: | ||
name: Markdown coding standards | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Coding standards | ||
run: | | ||
docker run --rm --volume "$(pwd):/md" peterdavehello/markdownlint markdownlint --ignore LICENSE.md '**/*.md' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
composer.lock | ||
vendor/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
{ | ||
"default": true, | ||
// https://github.com/DavidAnson/markdownlint/blob/main/doc/md013.md | ||
"line-length": { | ||
"line_length": 120, | ||
"code_blocks": false, | ||
"tables": false | ||
}, | ||
// https://github.com/DavidAnson/markdownlint/blob/main/doc/md024.md | ||
"no-duplicate-heading": { | ||
"siblings_only": true | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# Changelog | ||
|
||
All notable changes to this project will be documented in this file. | ||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), | ||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||
|
||
## [Unreleased] | ||
|
||
[Unreleased]: https://github.com/rimi-itk/os2web_key |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,57 @@ | ||
# OS2Web key | ||
|
||
Key stuff for OS2Web. | ||
|
||
Implements certificate key providers for [the Key module](https://www.drupal.org/project/key). A *certificate key | ||
provider* provides a passwordless certificate. | ||
|
||
## Installation | ||
|
||
``` shell | ||
composer require os2web/os2web_key | ||
drush pm:install os2web_key | ||
``` | ||
|
||
## Usage | ||
|
||
Go to `/admin/config/system/keys` and add a key with Key type "Certificate" and one of the following key providers: | ||
|
||
* Certificate (file): Provides a certificate stored in the local file system. | ||
|
||
## Example | ||
|
||
`@todo` | ||
|
||
## Coding standards | ||
|
||
Our coding are checked by GitHub Actions (cf. | ||
[.github/workflows/pr.yml](.github/workflows/pr.yml)). Use the commands below to | ||
run the checks locally. | ||
|
||
### PHP | ||
|
||
```shell | ||
docker run --rm --volume ${PWD}:/app --workdir /app itkdev/php8.1-fpm composer install | ||
# Fix (some) coding standards issues | ||
docker run --rm --volume ${PWD}:/app --workdir /app itkdev/php8.1-fpm composer coding-standards-apply | ||
# Check that code adheres to the coding standards | ||
docker run --rm --volume ${PWD}:/app --workdir /app itkdev/php8.1-fpm composer coding-standards-check | ||
``` | ||
|
||
### Markdown | ||
|
||
```shell | ||
docker run --rm --volume $PWD:/md peterdavehello/markdownlint markdownlint --ignore vendor --ignore LICENSE.md '**/*.md' --fix | ||
docker run --rm --volume $PWD:/md peterdavehello/markdownlint markdownlint --ignore vendor --ignore LICENSE.md '**/*.md' | ||
``` | ||
|
||
## Code analysis | ||
|
||
We use [PHPStan](https://phpstan.org/) for static code analysis. | ||
|
||
Running statis code analysis on a standalone Drupal module is a bit tricky, so we use a helper script to run the | ||
analysis: | ||
|
||
```shell | ||
docker run --rm --volume ${PWD}:/app --workdir /app itkdev/php8.1-fpm ./scripts/code-analysis | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
{ | ||
"name": "os2web/os2web_key", | ||
"description": "OS2Web key", | ||
"license": "EUPL-1.2", | ||
"type": "drupal-module", | ||
"authors": [ | ||
{ | ||
"name": "Mikkel Ricky", | ||
"email": "[email protected]" | ||
} | ||
], | ||
"require": { | ||
"php": "^8.1", | ||
"ext-openssl": "*", | ||
"drupal/core": "^9 || ^10", | ||
"drupal/key": "^1.17" | ||
}, | ||
"require-dev": { | ||
"dealerdirect/phpcodesniffer-composer-installer": "^1.0", | ||
"drupal/coder": "^8.3", | ||
"ergebnis/composer-normalize": "^2.42", | ||
"mglaman/phpstan-drupal": "^1.2", | ||
"phpstan/extension-installer": "^1.3", | ||
"phpstan/phpstan-deprecation-rules": "^1.1" | ||
}, | ||
"repositories": [ | ||
{ | ||
"type": "composer", | ||
"url": "https://packages.drupal.org/8" | ||
} | ||
], | ||
"config": { | ||
"allow-plugins": { | ||
"dealerdirect/phpcodesniffer-composer-installer": true, | ||
"ergebnis/composer-normalize": true, | ||
"phpstan/extension-installer": true | ||
}, | ||
"sort-packages": true | ||
}, | ||
"scripts": { | ||
"coding-standards-apply": [ | ||
"@coding-standards-apply/phpcs" | ||
], | ||
"coding-standards-apply/phpcs": [ | ||
"phpcbf --standard=phpcs.xml.dist" | ||
], | ||
"coding-standards-check": [ | ||
"@coding-standards-check/phpcs" | ||
], | ||
"coding-standards-check/phpcs": [ | ||
"phpcs --standard=phpcs.xml.dist" | ||
] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
name: 'OS2Web key' | ||
type: module | ||
description: 'Key stuff for OS2Web' | ||
package: 'OS2web' | ||
core_version_requirement: ^9 || ^10 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
services: | ||
logger.channel.os2web_key: | ||
parent: logger.channel_base | ||
arguments: [ 'os2web_key' ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<ruleset name="PHP_CodeSniffer"> | ||
<description>PHP Code Sniffer configuration</description> | ||
|
||
<file>.</file> | ||
<exclude-pattern>vendor/</exclude-pattern> | ||
|
||
<!-- Show progress of the run --> | ||
<arg value="p"/> | ||
<arg value="s"/> | ||
|
||
<arg name="extensions" value="php,module,inc,install,test,profile,theme,css,info,txt,yml"/> | ||
<config name="drupal_core_version" value="10"/> | ||
|
||
<rule ref="Drupal"> | ||
<!-- We want to be able to use "package" and "version" in our custom modules --> | ||
<exclude name="Drupal.InfoFiles.AutoAddedKeys.Project"/> | ||
<exclude name="Drupal.InfoFiles.AutoAddedKeys.Version"/> | ||
</rule> | ||
|
||
<rule ref="DrupalPractice"/> | ||
</ruleset> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
parameters: | ||
level: 6 | ||
paths: | ||
- src | ||
|
||
ignoreErrors: | ||
- "#Method [a-zA-Z0-9\\_\\\\:\\(\\)]+ has parameter \\$[a-zA-Z0-9_]+ with no value type specified in iterable type array#" | ||
- "#Method [a-zA-Z0-9\\_\\\\:\\(\\)]+ return type has no value type specified in iterable type array#" | ||
|
||
|
||
# Local Variables: | ||
# mode: yaml | ||
# End: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
#!/usr/bin/env bash | ||
script_dir=$(pwd) | ||
module_name=$(basename "$script_dir") | ||
drupal_dir=vendor/drupal-module-code-analysis | ||
# Relative to $drupal_dir | ||
module_path=web/modules/contrib/$module_name | ||
|
||
cd "$script_dir" || exit | ||
|
||
drupal_composer() { | ||
composer --working-dir="$drupal_dir" --no-interaction "$@" | ||
} | ||
|
||
# Create new Drupal 9 project | ||
if [ ! -f "$drupal_dir/composer.json" ]; then | ||
composer --no-interaction create-project drupal/recommended-project:^9 "$drupal_dir" | ||
fi | ||
# Copy our code into the modules folder | ||
|
||
# Clean up | ||
rm -fr "${drupal_dir:?}/$module_path" | ||
|
||
# https://stackoverflow.com/a/15373763 | ||
# rsync --archive --compress . --filter=':- .gitignore' --exclude "$drupal_dir" --exclude .git "$drupal_dir/$module_path" | ||
|
||
# The rsync command in not available in itkdev/php8.1-fpm | ||
|
||
git config --global --add safe.directory /app | ||
# Copy module files into module path | ||
for f in $(git ls-files); do | ||
mkdir -p "$drupal_dir/$module_path/$(dirname "$f")" | ||
cp "$f" "$drupal_dir/$module_path/$f" | ||
done | ||
|
||
drupal_composer config minimum-stability dev | ||
|
||
# Allow ALL plugins | ||
# https://getcomposer.org/doc/06-config.md#allow-plugins | ||
drupal_composer config --no-plugins allow-plugins true | ||
|
||
drupal_composer require wikimedia/composer-merge-plugin | ||
drupal_composer config extra.merge-plugin.include "$module_path/composer.json" | ||
# https://www.drupal.org/project/drupal/issues/3220043#comment-14845434 | ||
drupal_composer require --dev symfony/phpunit-bridge | ||
|
||
# Run PHPStan | ||
(cd "$drupal_dir" && vendor/bin/phpstan --configuration="$module_path/phpstan.neon") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<?php | ||
|
||
namespace Drupal\os2web_key\Exception; | ||
|
||
/** | ||
* Runtime exception. | ||
*/ | ||
class RuntimeException extends \RuntimeException { | ||
|
||
} |
Oops, something went wrong.