diff --git a/.github/workflows/ncc_workflow.yml b/.github/workflows/ncc_workflow.yml
new file mode 100644
index 0000000..adbe4df
--- /dev/null
+++ b/.github/workflows/ncc_workflow.yml
@@ -0,0 +1,162 @@
+name: CI
+
+on:
+ push:
+ branches:
+ - '**'
+ release:
+ types: [created]
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ container:
+ image: php:8.3
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Install dependencies
+ run: |
+ apt update -yqq
+ apt install git libpq-dev libzip-dev zip make wget gnupg -yqq
+
+ - name: Install phive
+ run: |
+ wget -O phive.phar https://phar.io/releases/phive.phar
+ wget -O phive.phar.asc https://phar.io/releases/phive.phar.asc
+ gpg --keyserver hkps://keys.openpgp.org --recv-keys 0x9D8A98B29B2D5D79
+ gpg --verify phive.phar.asc phive.phar
+ chmod +x phive.phar
+ mv phive.phar /usr/local/bin/phive
+
+ - name: Install phab
+ run: |
+ phive install phpab --global --trust-gpg-keys 0x2A8299CE842DD38C
+
+ - name: Install latest version of NCC
+ run: |
+ git clone https://git.n64.cc/nosial/ncc.git
+ cd ncc
+ make redist
+ NCC_DIR=$(find build/ -type d -name "ncc_*" | head -n 1)
+ if [ -z "$NCC_DIR" ]; then
+ echo "NCC build directory not found"
+ exit 1
+ fi
+ php "$NCC_DIR/INSTALL" --auto
+ cd .. && rm -rf ncc
+
+ - name: Build project
+ run: |
+ ncc build --config release --log-level debug
+
+ - name: Upload build artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: TgBotLib_build
+ path: build/release/net.nosial.tgbotlib.ncc
+
+ check-phpunit:
+ runs-on: ubuntu-latest
+ outputs:
+ phpunit-exists: ${{ steps.check.outputs.phpunit-exists }}
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ - name: Check for phpunit.xml
+ id: check
+ run: |
+ if [ -f phpunit.xml ]; then
+ echo "phpunit-exists=true" >> $GITHUB_OUTPUT
+ else
+ echo "phpunit-exists=false" >> $GITHUB_OUTPUT
+ fi
+
+ test:
+ needs: [build, check-phpunit]
+ runs-on: ubuntu-latest
+ container:
+ image: php:8.3
+ if: needs.check-phpunit.outputs.phpunit-exists == 'true'
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Download build artifacts
+ uses: actions/download-artifact@v4
+ with:
+ name: TgBotLib_build
+ path: TgBotLib_build # Adjust this to download the artifact directly under 'TgBotLib_build'
+
+ - name: Install dependencies
+ run: |
+ apt update -yqq
+ apt install git libpq-dev libzip-dev zip make wget gnupg -yqq
+ curl -sSLf -o /usr/local/bin/install-php-extensions https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions
+ chmod +x /usr/local/bin/install-php-extensions
+ install-php-extensions zip
+
+ - name: Install phive
+ run: |
+ wget -O phive.phar https://phar.io/releases/phive.phar
+ wget -O phive.phar.asc https://phar.io/releases/phive.phar.asc
+ gpg --keyserver hkps://keys.openpgp.org --recv-keys 0x9D8A98B29B2D5D79
+ gpg --verify phive.phar.asc phive.phar
+ chmod +x phive.phar
+ mv phive.phar /usr/local/bin/phive
+
+ - name: Install phab
+ run: |
+ phive install phpab --global --trust-gpg-keys 0x2A8299CE842DD38C
+
+ - name: Install latest version of NCC
+ run: |
+ git clone https://git.n64.cc/nosial/ncc.git
+ cd ncc
+ make redist
+ NCC_DIR=$(find build/ -type d -name "ncc_*" | head -n 1)
+ if [ -z "$NCC_DIR" ]; then
+ echo "NCC build directory not found"
+ exit 1
+ fi
+ php "$NCC_DIR/INSTALL" --auto
+ cd .. && rm -rf ncc
+
+ - name: Install NCC packages
+ run: |
+ ncc package install --package="TgBotLib_build/net.nosial.tgbotlib.ncc" --build-source --reinstall -y --log-level debug
+
+ - name: Run PHPUnit tests
+ run: |
+ wget https://phar.phpunit.de/phpunit-11.3.phar
+ php phpunit-11.3.phar --configuration phpunit.xml
+
+ release:
+ needs: [build, test]
+ permissions: write-all
+ runs-on: ubuntu-latest
+ container:
+ image: php:8.3
+ if: github.event_name == 'release'
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Download build artifacts
+ uses: actions/download-artifact@v4
+ with:
+ name: TgBotLib_build
+ path: TgBotLib_build
+
+ - name: Upload to GitHub Release
+ uses: softprops/action-gh-release@v1
+ with:
+ files: |
+ TgBotLib_build/net.nosial.tgbotlib.ncc
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.idea/php.xml b/.idea/php.xml
index 91373c3..d50f29f 100644
--- a/.idea/php.xml
+++ b/.idea/php.xml
@@ -19,7 +19,7 @@
-
+
diff --git a/Makefile b/Makefile
index e3f87d5..38eac71 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,23 @@
-build:
- ncc build --config="release" --log-level debug
+# Variables
+CONFIG ?= release
+LOG_LEVEL = debug
+OUTDIR = build/$(CONFIG)
+PACKAGE = $(OUTDIR)/net.nosial.tgbotlib.ncc
-install:
- sudo ncc package install --package="build/release/net.nosial.tgbotlib.ncc" --skip-dependencies --reinstall -y --log-level debug
+# Default Target
+all: build
+
+# Build Steps
+build:
+ ncc build --config=$(CONFIG) --log-level $(LOG_LEVEL)
+
+install: build
+ ncc package install --package=$(PACKAGE) --skip-dependencies --build-source --reinstall -y --log-level $(LOG_LEVEL)
+
+test: build
+ phpunit
clean:
- rm -rf build
\ No newline at end of file
+ rm -rf build
+
+.PHONY: all build install test clean
\ No newline at end of file
diff --git a/bootstrap.php b/bootstrap.php
new file mode 100644
index 0000000..2d2d1b0
--- /dev/null
+++ b/bootstrap.php
@@ -0,0 +1,3 @@
+
+
+
+ tests
+
+
+
+
+
+
+
diff --git a/project.json b/project.json
index be9eeb2..06ad467 100644
--- a/project.json
+++ b/project.json
@@ -35,7 +35,16 @@
"configurations": [
{
"name": "release",
- "output_path": "build/release"
+ "build_type": "ncc",
+ "output": "build/release/%ASSEMBLY.PACKAGE%.ncc"
+ },
+ {
+ "name": "debug",
+ "build_type": "ncc",
+ "output": "build/debug/%ASSEMBLY.PACKAGE%.ncc",
+ "define_constants": {
+ "DEBUG": "1"
+ }
}
]
}