Skip to content

Commit

Permalink
Merge pull request #7 from webmasterskaya/update-workflows
Browse files Browse the repository at this point in the history
Update workflows
  • Loading branch information
kernusr authored Nov 25, 2024
2 parents 067e3ae + 0ab2f42 commit f03b7ea
Show file tree
Hide file tree
Showing 12 changed files with 415 additions and 411 deletions.
56 changes: 36 additions & 20 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
steps:

- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Install dependencies
run: |
Expand All @@ -21,37 +21,53 @@ jobs:
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
extensions: imagick, swoole
extensions: "mbstring, gd, bcmath, bz2, json"
tools: composer

- name: Set run permissions
run: sudo chmod +x ./build.sh
- name: Get composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- name: Run build script
run: |
export TERM=xterm
./build.sh jmpdf
ls -l
- name: Cache dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-

- name: Install composer dependencies from source
run: composer install --prefer-dist --no-dev --no-progress --no-interaction --optimize-autoloader

- name: Get build info
id: build_info
run: |
ls -l
BUILD_VERSION=$(unzip -p ./jmpdf.zip jmpdf.xml | grep -oPm1 "(?<=<version>)[^<]+")
BUILD_TIMESTAMP=$(date +%s)
echo ::set-output name=TIMESTAMP::$BUILD_TIMESTAMP
BUILD_VERSION=$(grep -oPm1 "(?<=<version>)[^<]+" ./jmpdf.xml)
echo "TIMESTAMP=$(date +%s)" >> $GITHUB_OUTPUT
if [[ -n $BUILD_VERSION ]]; then
echo ::set-output name=VERSION::$BUILD_VERSION
echo "VERSION=$BUILD_VERSION" >> $GITHUB_OUTPUT
else
echo "Failed to get package version"
exit 1
fi
- name: Build release archive with fonts
run: |
export TERM=xterm
zip -r pkg_rzs_with_fonts.zip libraries src config.php jmpdf.xml
- name: Removes all unnecessary fonts
run: composer clear-fonts

- name: Build release archive without fonts
run: |
export TERM=xterm
zip -r pkg_rzs.zip libraries src config.php jmpdf.xml
- name: Draft release
uses: ncipollo/release-action@v1
uses: softprops/action-gh-release@v2
with:
artifacts: "jmpdf.zip"
token: ${{ secrets.REPO_TOKEN }}
allowUpdates: false
artifactErrorsFailBuild: true
tag: "build.${{ steps.build_info.outputs.TIMESTAMP }}"
files: |
pkg_rzs.zip
pkg_rzs_with_fonts.zip
tag_name: "build.${{ steps.build_info.outputs.TIMESTAMP }}"
name: "${{ steps.build_info.outputs.VERSION }}-build.${{ steps.build_info.outputs.TIMESTAMP }}"
78 changes: 49 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,70 @@
# JMpdf
Mpdf for Joomla!

- ✔ Устанавливается в Joomla стандартными средствами;
- ✔ Не вызывает конфликтов зависимостей c ядром Joomla;
- ✔ Оптимизированный загрузчик классов;
- ✔ Содержит облегчённую версию (удалены лишние шрифты)

## Mpdf
- Ссылка на github: https://github.com/mpdf/mpdf
- Ссылка на документацию: https://mpdf.github.io

## Сборки

В релизе содержится 2 сборки (2 архива):
- `pkg_rzs.zip` - облегчённая сборки библиотеки, из которой удалены все дополнительные шрифты, кроме `DejaVuSans`;
- `pkg_rzs_with_fonts.zip` - полная сборка, которая содержит абсолютно все шрифты из оригинальной библиотеки `mpdf/mpdf`.

## Изменения
Прочитать изменения вы можете в файле [changelog.md](https://github.com/Delo-Design/jmpdf/blob/master/changelog.md)

## Примеры запуска
Вы можете посмотреть в папке examples примеры запуска класса JMpdf.
В папке [examples](https://github.com/Delo-Design/jmpdf/blob/master/examples) содержатся примеры использования класса JMpdf.

## Параметры конструктора JMpdf

1) html - html для записи в pdf
2) $config - параметры для mpdf, список параметров:
- mode
- format
- margin_left
- margin_right
- margin_top
- margin_bottom
- margin_header
- margin_footer
- tempDir
- author
- creator
- subject
- keywords
- display_mode
- instanceConfigurator


## Сборка из исходного кода
В git репозитории нет всех библиотек. Они выкачиваются из composer. Полные дампы лежат в релизах на github и на сервере обновлений hika.su для Joomla!
Чтобы получить конечный архив надо чтобы у вас на той машине где вы собираете должен быть установлен composer. Пропишите название композера вашего в cli/config.php
После этого запустите скрипт обновления: <br/>
```php cli/update.php```

После этого скрипт сборки архива: <br/>
```php cli/build.php```

Чтобы очистить от лишних шрифтов, запускайте (этого делать не надо, если запускаете update.php):
```php cli/clearFonts.php```
- mode
- format
- margin_left
- margin_right
- margin_top
- margin_bottom
- margin_header
- margin_footer
- tempDir
- author
- creator
- subject
- keywords
- display_mode
- instanceConfigurator


## Самостоятельная сборка из исходных кодов

В git репозитории отсутствуют дополнительные библиотеки, требующиеся для работы пакета. Они устанавливаются, при помощи менеджера пакетов `composer`.

Архивы в релизах на github и на сервере обновлений hika.su для Joomla уже содержат все зависимости и готовы к использованию.

Для самостоятельной сборки клонируйте репозиторий себе на компьютер, перейдите в его папку и установите зависимости:

```
git clone https://github.com/Delo-Design/jmpdf.git
cd jmpdf
composer install
```

Чтобы очистить сборку от лишних шрифтов, запускайте скрипт очистки:

```
composer clear-fonts
```

## Методы JMpdf

Аргументы расписаны в phpdoc в классе JMpdf. <br/>
Базовые методы:
- setProtection - установить пароль
Expand Down
21 changes: 0 additions & 21 deletions build.sh

This file was deleted.

7 changes: 7 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
8.2.5
- Обновлена библиотека mpdf до 8.2.5
- В релизе публикуются 2 сборки: со шрифтами (~44.7 Mb) и без шрифтов (~3.1 Mb)
- Добавлены скрипты сборки для запуска через composer
- В composer.json добавлены параметры оптимизации загрузчика классов
- Решена проблема конфликта с зависимостями joomla (`psr/log`, `psr/http-message`)

8.2.2
- Обновлена библиотека mpdf до 8.2.2
- Добавлены namespace для класса JMpdf
Expand Down
23 changes: 23 additions & 0 deletions cli/clear-fonts.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

$vendor_dir = dirname(__FILE__, 2) . '/libraries/vendor/';
$fonts_dir = $vendor_dir . 'mpdf/mpdf/ttfonts';

$exclude = 'DejaVuSans';

$files = scandir($fonts_dir);
foreach ($files as $file) {
if (in_array($file, ['.', '..'])) {
continue;
}

$split = explode('.', $file);
$ext = array_pop($split);
$name = implode('.', $split);

if ($name !== $exclude && (strpos($name, $exclude . '-') === false)) {
unlink($fonts_dir . '/' . $file);
}
}

echo "Clear fonts - complete" . PHP_EOL;
27 changes: 0 additions & 27 deletions cli/clearFonts.php

This file was deleted.

5 changes: 0 additions & 5 deletions cli/config.php

This file was deleted.

24 changes: 24 additions & 0 deletions cli/update-manifest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

$vendor_dir = dirname(__FILE__, 2) . '/libraries/vendor/';
$root_dir = dirname(__FILE__, 2);

$lockfile_path = $root_dir . '/composer.lock';
$manifest_path = $root_dir . '/jmpdf.xml';

$lockfile = json_decode(file_get_contents($lockfile_path), true, 128, JSON_OBJECT_AS_ARRAY);
$manifest = file_get_contents($manifest_path);

$find_version = '';

foreach ($lockfile['packages'] as $package) {
if ($package['name'] === 'mpdf/mpdf') {
$find_version = str_replace('v', '', $package['version']);
}
}

$manifest = preg_replace("#(<version>).*?(</version>)#isu", '${1}' . $find_version . '${2}', $manifest);

file_put_contents($manifest_path, $manifest);

echo "Manifest update - complete" . PHP_EOL;
32 changes: 0 additions & 32 deletions cli/update.php

This file was deleted.

Loading

0 comments on commit f03b7ea

Please sign in to comment.