Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,10 @@ updates:
interval: monthly
labels:
- dependencies

- package-ecosystem: "composer"
directory: "/"
schedule:
interval: monthly
labels:
- dependencies
34 changes: 32 additions & 2 deletions .github/workflows/on-pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,40 @@ on:
- main

jobs:

test:
runs-on: ubuntu-latest
strategy:
matrix:
php:
- 7.4
- 8.0
- 8.1
- 8.2

steps:
- name: Checkouting code...
uses: actions/checkout@v3

- name: Installing PHP...
uses: shivammathur/setup-php@2.24.0
with:
php-version: ${{ matrix.php }}
extensions: curl, gd, json, mbstring, pcre, session
coverage: none
tools: composer:v2

- name: Setup BATS
uses: mig4/setup-bats@v1
with:
bats-version: 1.8.2

- name: Test
run: bats tests

dependabot:
# needs:
# - test
needs:
- test
permissions:
pull-requests: write
contents: write
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/vendor/
/composer.lock
.idea/
36 changes: 12 additions & 24 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,19 @@ runs:
using: 'composite'
steps:
- name: Setting env variables...
run: |
GENERATOR_TMP_SUFIX=${{ github.sha }}-${{ github.run_id }}-${{ github.github.run_attempt }}
GENERATOR_TMP_PATH="${{ runner.temp }}"
GENERATOR_TMP_FILES_PATH=$GENERATOR_TMP_PATH/files-$GENERATOR_TMP_SUFIX
echo "COPY_DATA_PATH=$GENERATOR_TMP_PATH/data-$GENERATOR_TMP_SUFIX" >> $GITHUB_ENV
echo "GENERATOR_TMP_FILES_PATH=$GENERATOR_TMP_FILES_PATH" >> $GITHUB_ENV
echo "RULES_FILE=$GENERATOR_TMP_FILES_PATH/filtering-rules.lst" >> $GITHUB_ENV
echo "PHP_CLASSES_ORIG_FILE=$GENERATOR_TMP_FILES_PATH/php-classes.original.lst" >> $GITHUB_ENV
echo "PHP_CLASSES_FILTERED_FILE=$GENERATOR_TMP_FILES_PATH/php-classes.filtered.lst" >> $GITHUB_ENV
shell: bash
env:
GENERATOR_TMP_SUFIX: ${{ github.sha }}-${{ github.run_id }}-${{ github.github.run_attempt }}
GENERATOR_TMP_PATH: ${{ runner.temp }}
ACTION_BIN_PATH: ${{ github.action_path }}/bin
run: $ACTION_BIN_PATH/generate-env.sh "$GENERATOR_TMP_SUFIX" "$GENERATOR_TMP_PATH" "$ACTION_BIN_PATH" >> $GITHUB_ENV
shell: bash

- name: Creating tmp folders
run: |
rm -rf ${{ env.COPY_DATA_PATH }} || true
mkdir -p ${{ env.COPY_DATA_PATH }}
rm -rf ${{ env.GENERATOR_TMP_FILES_PATH }} || true
mkdir -p ${{ env.GENERATOR_TMP_FILES_PATH }}
run: $ACTION_BIN_PATH/create-temp-folders.sh
shell: bash

- name: Copying current project to tmp folder...
run: cp -R ./* ${{ env.COPY_DATA_PATH }}/
run: $ACTION_BIN_PATH/copy-current-project-to-tmp-folder.sh
shell: bash

- name: Getting PHP class list...
Expand All @@ -64,24 +56,20 @@ runs:

- name: Generating generator config...
env:
ACTION_PATH: ${{ github.action_path }}
PHPDOCMD_FILE: ${{ env.COPY_DATA_PATH }}/.phpdoc-md
CLASS_ROOT_NAMESPACE: ${{ inputs.class_root_namespace }}
DOCS_PATH: ${{ inputs.output_path }}
run: |
php $ACTION_PATH/generate-config.php "$PHPDOCMD_FILE" "$PHP_CLASSES_FILTERED_FILE" "$CLASS_ROOT_NAMESPACE" "$DOCS_PATH"
run: $ACTION_BIN_PATH/generate-config.php "$PHPDOCMD_FILE" "$PHP_CLASSES_FILTERED_FILE" "$CLASS_ROOT_NAMESPACE" "$DOCS_PATH"
shell: bash

- name: Including documentation generator...
run: composer require --no-plugins --ignore-platform-reqs --no-scripts --working-dir=${{ env.COPY_DATA_PATH }}/ --dev 'clean/phpdoc-md=^0.19'
run: $ACTION_BIN_PATH/add-composer-packages.sh
shell: bash

- name: Generating documentation...
run: composer exec --working-dir=${{ env.COPY_DATA_PATH }}/ phpdoc-md
run: $ACTION_BIN_PATH/generate-docs.sh
shell: bash

- name: Deleting tmp data...
run: |
rm -rf ${{ env.COPY_DATA_PATH }} || true
rm -rf ${{ env.GENERATOR_TMP_FILES_PATH }} || true
run: $ACTION_BIN_PATH/delete-temp-folders.sh
shell: bash
18 changes: 18 additions & 0 deletions bin/add-composer-packages.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/usr/bin/env bash

set -e

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

CURRENT_CMD=$(
cat <<EOF
composer require \
$("$SCRIPT_DIR"/get-composer-dependencies.php) \
--no-plugins \
--ignore-platform-reqs \
--no-scripts \
--working-dir=$COPY_DATA_PATH
EOF
);

$CURRENT_CMD
3 changes: 3 additions & 0 deletions bin/copy-current-project-to-tmp-folder.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/usr/bin/env bash

cp -R ./. "$COPY_DATA_PATH/"
8 changes: 8 additions & 0 deletions bin/create-temp-folders.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/usr/bin/env bash

set -e

rm -rf "$COPY_DATA_PATH" || true
mkdir -p "$COPY_DATA_PATH"
rm -rf "$GENERATOR_TMP_FILES_PATH" || true
mkdir -p "$GENERATOR_TMP_FILES_PATH"
4 changes: 4 additions & 0 deletions bin/delete-temp-folders.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env bash

rm -rf "$COPY_DATA_PATH" || true
rm -rf "$GENERATOR_TMP_FILES_PATH" || true
1 change: 1 addition & 0 deletions generate-config.php → bin/generate-config.php
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#!/usr/bin/env php
<?php

$outputFile = $argv[1];
Expand Down
3 changes: 3 additions & 0 deletions bin/generate-docs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/usr/bin/env bash

composer exec --working-dir="$COPY_DATA_PATH" phpdoc-md
16 changes: 16 additions & 0 deletions bin/generate-env.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash

GENERATOR_TMP_SUFIX="$1"
GENERATOR_TMP_PATH="$2"

GENERATOR_TMP_FILES_PATH="$GENERATOR_TMP_PATH/files-$GENERATOR_TMP_SUFIX"
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

cat <<EOF
COPY_DATA_PATH=$GENERATOR_TMP_PATH/data-$GENERATOR_TMP_SUFIX
GENERATOR_TMP_FILES_PATH=$GENERATOR_TMP_FILES_PATH
RULES_FILE=$GENERATOR_TMP_FILES_PATH/filtering-rules.lst
PHP_CLASSES_ORIG_FILE=$GENERATOR_TMP_FILES_PATH/php-classes.original.lst
PHP_CLASSES_FILTERED_FILE=$GENERATOR_TMP_FILES_PATH/php-classes.filtered.lst
ACTION_BIN_PATH=$SCRIPT_DIR
EOF
12 changes: 12 additions & 0 deletions bin/get-composer-dependencies.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env php
<?php

$contents = file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'composer.json');
$composer = json_decode($contents, true);

$packages = [];
foreach ($composer['require'] as $package => $version) {
$packages[] = $package . "=" . $version;
}

echo implode(" ", $packages);
15 changes: 15 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "impresscms-dev/generate-phpdocs-with-clean-phpdoc-md-action",
"description": "Packages for same name action",
"type": "metapackage",
"require": {
"clean/phpdoc-md": "^0.19.3"
},
"license": "MIT",
"authors": [
{
"name": "Raimondas Rimkevičius (aka MekDrop)",
"email": "github@mekdrop.name"
}
]
}
39 changes: 39 additions & 0 deletions tests/01-generate-env.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env bats

@test "COPY_DATA_PATH var exists" {
eval $("$BATS_TEST_DIRNAME/../bin/generate-env.sh" test1 test2)
[ ! -z "$COPY_DATA_PATH" ];
}

@test "GENERATOR_TMP_FILES_PATH var exists" {
eval $("$BATS_TEST_DIRNAME/../bin/generate-env.sh" test1 test2)
[ ! -z "$GENERATOR_TMP_FILES_PATH" ];
}

@test "RULES_FILE var exists" {
eval $("$BATS_TEST_DIRNAME/../bin/generate-env.sh" test1 test2)
[ ! -z "$RULES_FILE" ];
}

@test "PHP_CLASSES_ORIG_FILE var exists" {
eval $("$BATS_TEST_DIRNAME/../bin/generate-env.sh" test1 test2)
[ ! -z "$PHP_CLASSES_ORIG_FILE" ];
}

@test "PHP_CLASSES_FILTERED_FILE var exists" {
eval $("$BATS_TEST_DIRNAME/../bin/generate-env.sh" test1 test2)
[ ! -z "$PHP_CLASSES_FILTERED_FILE" ];
}

@test "ACTION_BIN_PATH var exists" {
eval $("$BATS_TEST_DIRNAME/../bin/generate-env.sh" test1 test2)
[ ! -z "$ACTION_BIN_PATH" ];
}

@test "ACTION_BIN_PATH is correct" {
eval $("$BATS_TEST_DIRNAME/../bin/generate-env.sh" test1 test2)
NORMALIZED_PATH_1=$(realpath "$ACTION_BIN_PATH")
NORMALIZED_PATH_2=$(realpath "$BATS_TEST_DIRNAME/../bin")

[ "$NORMALIZED_PATH_1" == "$NORMALIZED_PATH_2" ];
}
23 changes: 23 additions & 0 deletions tests/02-create-temp-folders.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/usr/bin/env bats

setup() {
export COPY_DATA_PATH=$(mktemp -d)
export GENERATOR_TMP_FILES_PATH=$(mktemp -d)
}

tear() {
rm -rf "$COPY_DATA_PATH" || true
rm -rf "$GENERATOR_TMP_FILES_PATH" || true
}

@test "Creating COPY_DATA_PATH if needed" {
$BATS_TEST_DIRNAME/../bin/create-temp-folders.sh

[ -d "$COPY_DATA_PATH" ]
}

@test "Creating GENERATOR_TMP_FILES_PATH if needed" {
$BATS_TEST_DIRNAME/../bin/create-temp-folders.sh

[ -d "$GENERATOR_TMP_FILES_PATH" ]
}
44 changes: 44 additions & 0 deletions tests/03-copy-current-project-to-tmp-folder.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/usr/bin/env bats

setup() {
export COPY_DATA_PATH=$(mktemp -d)
export CURRENT_PATH=$(mktemp -d)
export TMP_TEST_PATH=$(mktemp -d)

pushd "$CURRENT_PATH"
git clone --no-tags --quiet https://github.com/impresscms-dev/generate-php-project-classes-list-file-action.git .
popd
}

tear() {
rm -rf "$COPY_DATA_PATH" || true
rm -rf "$CURRENT_PATH" || true
rm -rf "$TMP_TEST_PATH" || true
}

@test "Copier finishes with exit status 0" {

EXIT_CODE=0
pushd $CURRENT_PATH
$BATS_TEST_DIRNAME/../bin/copy-current-project-to-tmp-folder.sh
EXIT_CODE=$?
popd

[ "$EXIT_CODE" == "0" ]
}

@test "Paths results are same" {

pushd $CURRENT_PATH
$BATS_TEST_DIRNAME/../bin/copy-current-project-to-tmp-folder.sh
popd

pushd "$CURRENT_PATH"
find . -type f | cut -sd / -f 2- | sort -k 2 > $TMP_TEST_PATH/dir1.lst
popd
pushd "$COPY_DATA_PATH"
find . -type f | cut -sd / -f 2- | sort -k 2 > $TMP_TEST_PATH/dir2.lst
popd

diff $TMP_TEST_PATH/dir1.lst $TMP_TEST_PATH/dir2.lst
}
32 changes: 32 additions & 0 deletions tests/04-generate-config.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env bats

setup() {
export DOCS_PATH=$(mktemp -d)
export COPY_DATA_PATH=$(mktemp -d)
export TMP_DATA_PATH=$(mktemp -d)
export PHPDOCMD_FILE=$COPY_DATA_PATH/.phpdoc-md
export CLASS_ROOT_NAMESPACE="DeveloperA\\PackageB\\"
export PHP_CLASSES_FILTERED_FILE=$TMP_DATA_PATH/classes.lst

cat > "$PHP_CLASSES_FILTERED_FILE" <<EOL
DeveloperA\\PackageB\\ClassC
DeveloperA\\PackageB\\ClassD
DeveloperA\\PackageB\\ClassE
EOL
}

tear() {
rm -rf "$DOCS_PATH" || true
rm -rf "$COPY_DATA_PATH" || true
rm -rf "$TMP_DATA_PATH" || true
}

@test "config generator generates config" {
$BATS_TEST_DIRNAME/../bin/generate-config.php \
"$PHPDOCMD_FILE" \
"$PHP_CLASSES_FILTERED_FILE" \
"$CLASS_ROOT_NAMESPACE" \
"$DOCS_PATH"

[ -f "$PHPDOCMD_FILE" ] && [ -s "$PHPDOCMD_FILE" ]
}
14 changes: 14 additions & 0 deletions tests/05-get-composer-dependencies.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bats

@test "composer.json exists" {
[ -f "$BATS_TEST_DIRNAME/../composer.json" ]
}

@test "get-composer-dependencies.php runs" {
$BATS_TEST_DIRNAME/../bin/get-composer-dependencies.php
}

@test "get-composer-dependencies.php returns output" {
RET=$($BATS_TEST_DIRNAME/../bin/get-composer-dependencies.php)
[ ! -z "$RET" ]
}
Loading