Compare commits

..

11 Commits

Author SHA1 Message Date
Alexey Chubar c47306b609 fixed PROP macro losing quotation marks from string props
Publish PHP Package / docker (push) Successful in 8s Details
2024-07-09 11:50:00 +03:00
Pavel Shevaev 6d6e9e6e7b Добавить .gitea/workflows/build_composer.yaml
Publish PHP Package / docker (push) Successful in 4s Details
2024-02-13 14:55:39 +03:00
wrenge acebcca92b VCLASSID implemented 2023-11-14 17:40:46 +03:00
Pavel Shevaev 861c5d4608 Making PHPStan happy 2023-08-16 14:12:22 +03:00
wrenge 2d0129267b Merge branch 'master' of https://git.bit5.ru/bit/jsm_macros 2023-07-06 10:03:58 +03:00
wrenge 4c4d1af1a5 New WEEK_DATE macro 2023-07-06 10:02:58 +03:00
Pavel Shevaev b33d7a471c Merge branch 'master' of https://git.bit5.ru/bit/jsm_macros 2023-06-26 15:10:18 +03:00
Pavel Shevaev 24b2a0ee45 Adding initial version of OVERRIDE(..) macro 2023-06-26 15:09:59 +03:00
Alexey Chubar 05e640d6a3 Version v1.2.5 2023-06-21 12:24:45 +03:00
Alexey Chubar eb0ee2a587 Version v1.2.5 2023-06-21 12:23:02 +03:00
Alexey Chubar d44fe3cccb Version v1.2.4 2023-06-21 12:11:35 +03:00
2 changed files with 130 additions and 9 deletions

View File

@ -0,0 +1,29 @@
name: Publish PHP Package
on:
push:
tags:
- 'v*'
jobs:
docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Get tag name
run: echo "TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: zip and send
run: |
ls -la
apt-get update -y
apt-get install -y zip
cd ../
zip -r ${{ gitea.event.repository.name }}.zip ${{ gitea.event.repository.name }} -x '*.git*'
curl -v \
--user composer-pbl:${{ secrets.COMPOSER_PSWD }} \
--upload-file ${{ gitea.event.repository.name }}.zip \
https://git.bit5.ru/api/packages/bit/composer?version=${{ env.TAG }}

View File

@ -1,5 +1,21 @@
<?php <?php
/**
* @global
*/
function macro_VCLASSID($proc, $class)
{
return '"$id" : ' . constant("$class::CLASS_ID");
}
/**
* @global
*/
function macro_VCLASS($proc, $class)
{
return '"__vclass" : ' . constant("$class::CLASS_ID");
}
/** /**
* @global * @global
*/ */
@ -31,6 +47,51 @@ function macro_INTERVAL($proc, $spec)
return $sec; return $sec;
} }
/**
* @global
*/
function macro_WEEK_DATE($proc, $spec)
{
$parts = explode(" ", $spec);
$dow_str = $parts[0];
$time_str = $parts[1];
$day = 0;
switch ($dow_str) {
case 'MONDAY':
$day = 0;
break;
case 'TUESDAY':
$day = 1;
break;
case 'WEDNESDAY':
$day = 2;
break;
case 'THURSDAY':
$day = 3;
break;
case 'FRIDAY':
$day = 4;
break;
case 'SATURDAY':
$day = 5;
break;
case 'SUNDAY':
$day = 6;
break;
default:
throw new Exception("Bad day of week: $spec");
}
$stamp = strtotime($time_str);
if($stamp === false)
throw new Exception("Bad time: $spec");
$stamp += $day * 24 * 60 * 60;
return $stamp;
}
/** /**
* @global * @global
*/ */
@ -150,15 +211,10 @@ function macro_IS_DEV($jsm)
*/ */
function macro_PROP($jsm, $expr) function macro_PROP($jsm, $expr)
{ {
return \taskman\get($expr); $res = \taskman\get($expr);
} if(is_string($res))
return '"'.$res.'"';
/** return $res;
* @global
*/
function macro_VCLASS($proc, $class)
{
return '"vclass__" : ' . constant("$class::CLASS_ID");
} }
/** /**
@ -179,3 +235,39 @@ function macro_UNWRAP($jsm, $content)
$content = rtrim($content, '}'); $content = rtrim($content, '}');
return $content; return $content;
} }
function _array_merge_recursive_distinct(array $array1, array $array2)
{
$merged = $array1;
foreach($array2 as $key => $value)
{
if(is_array($value) && isset($merged[$key]) && is_array($merged[$key]))
$merged[$key] = _array_merge_recursive_distinct($merged[$key], $value);
else
$merged[$key] = $value;
}
return $merged;
}
/**
* @global @raw_args
*/
function macro_OVERRIDE($jsm, $content)
{
$items = \jzon_parse($content);
if(!is_array($items))
throw new Exception("OVERRIDE contents not an array");
if(sizeof($items) != 2)
throw new Exception("OVERRIDE array size is not 2, it's " . sizeof($items));
$merged = _array_merge_recursive_distinct($items[0], $items[1]);
$json = json_encode($merged, JSON_UNESCAPED_LINE_TERMINATORS | JSON_UNESCAPED_SLASHES);
$json = ltrim($json, '{');
$json = rtrim($json, '}');
return $json;
}