Compare commits

..

No commits in common. "main" and "v0.0.3" have entirely different histories.
main ... v0.0.3

4 changed files with 22 additions and 104 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
simple-glitchtip-c5.zip

View File

@ -1,24 +1,11 @@
{
"name": "nixius/simple-glitchtip-c5",
"description": "A simple integration for GlitchTip",
"version": "0.0.3",
"version": "0.0.1",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {
"Nixius\\SimpleGlitchtip\\": "src/"
}
},
"authors": [
{
"name": "Your Name",
"email": "your.email@example.com"
}
],
"keywords": [
"glitchtip",
"integration",
"php"
],
"require": {}
}

View File

@ -1,60 +0,0 @@
#!/bin/bash
# Exit on any error
set -e
# Ensure environment variables are set
if [[ -z "$REGISTRY_USER" || -z "$REGISTRY_PASSWORD" ]]; then
echo "Error: REGISTRY_USER and REGISTRY_PASSWORD must be set in the environment."
exit 1
fi
# Variables
ZIP_FILE="simple-glitchtip-c5.zip"
REGISTRY_URL="https://git.nixc.us/api/packages/nixius/composer"
# Ensure composer.json exists
if [[ ! -f "composer.json" ]]; then
echo "Error: composer.json not found in the current directory."
exit 1
fi
# Increment version in composer.json
echo "Incrementing version in composer.json..."
VERSION=$(jq -r '.version' composer.json)
if [[ $VERSION == "null" ]]; then
echo "Error: version is missing in composer.json."
exit 1
fi
# Extract version components
IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION"
PATCH=$((PATCH + 1)) # Increment patch version
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
# Update composer.json with the new version
jq --arg version "$NEW_VERSION" '.version = $version' composer.json > composer.json.tmp && mv composer.json.tmp composer.json
echo "Updated version to $NEW_VERSION."
# Zip the current directory
echo "Creating zip file: $ZIP_FILE..."
zip -r "$ZIP_FILE" . >/dev/null
echo "Zip file created."
# Upload to Gitea registry
echo "Uploading $ZIP_FILE to $REGISTRY_URL..."
RESPONSE=$(curl --silent --write-out "%{http_code}" --output /dev/null \
--user "$REGISTRY_USER:$REGISTRY_PASSWORD" \
--upload-file "$ZIP_FILE" \
"$REGISTRY_URL")
if [[ $RESPONSE -eq 201 ]]; then
echo "Package successfully uploaded with version $NEW_VERSION."
else
echo "Error: Failed to upload package. HTTP response code: $RESPONSE."
exit 1
fi
# Cleanup
rm -f "$ZIP_FILE"
echo "Cleanup complete. Done!"

View File

@ -1,6 +1,5 @@
<?php
namespace Concrete\Package\SimpleGlitchtip;
namespace Concrete\Package\SimpleSentry;
use Concrete\Core\Package\Package;
use Symfony\Component\HttpFoundation\Request;
@ -9,53 +8,56 @@ use Sentry\State\HubInterface;
class Controller extends Package
{
protected $pkgHandle = 'simple_glitchtip';
protected $pkgHandle = 'simple_sentry';
protected $appVersionRequired = '9.0.0';
protected $pkgVersion = '1.0.0';
protected $pkgName = 'SimpleGlitchtip Error Reporter';
protected $pkgName = 'SimpleSentry Error Reporter';
protected $pkgDescription = 'Reports errors to Sentry/GlitchTip using the GLITCHTIP_DSN environment variable.';
public function on_start()
{
$this->app->singleton(HubInterface::class, function () {
$dsn = getenv('GLITCHTIP_DSN');
$dsn = getenv('GLITCHTIP_DSN'); // Pull the DSN from the environment variable
if (!$dsn) {
\Log::warning('SimpleGlitchtip: GLITCHTIP_DSN environment variable is not set.');
\Log::warning('SimpleSentry: GLITCHTIP_DSN environment variable is not set.');
return null;
}
$clientBuilder = ClientBuilder::create([
'dsn' => $dsn,
'environment' => getenv('APP_ENV') ?: 'production',
'release' => getenv('APP_VERSION') ?: '1.0.0',
'tags' => [
'application' => 'concrete5',
],
'environment' => getenv('APP_ENV') ?: 'production', // Use APP_ENV or default to 'production'
'release' => getenv('APP_VERSION') ?: '1.0.0', // Use APP_VERSION or default to '1.0.0'
]);
return $clientBuilder->getHub();
});
// Attach error handlers only if the HubInterface is properly initialized
$hub = $this->app->make(HubInterface::class);
if ($hub) {
$this->attachErrorHandlers();
} else {
\Log::warning('SimpleGlitchtip: HubInterface is not initialized. Error reporting is disabled.');
\Log::warning('SimpleSentry: HubInterface is not initialized. Error reporting is disabled.');
}
}
private function attachErrorHandlers()
{
// Catch uncaught exceptions
set_exception_handler(function (\Throwable $exception) {
$hub = $this->app->make(HubInterface::class);
if ($hub) {
$eventId = $hub->captureException($exception);
\Log::error('SimpleGlitchtip: Sentry Event ID: ' . $eventId);
// Log the Sentry event ID in Concrete5
\Log::error('SimpleSentry: Sentry Event ID: ' . $eventId);
}
});
// Catch PHP errors
set_error_handler(function ($severity, $message, $file, $line) {
if (!(error_reporting() & $severity)) {
// Error not included in error_reporting
return false;
}
@ -63,22 +65,12 @@ class Controller extends Package
if ($hub) {
$exception = new \ErrorException($message, 0, $severity, $file, $line);
$eventId = $hub->captureException($exception);
\Log::error('SimpleGlitchtip: Sentry Event ID: ' . $eventId);
// Log the Sentry event ID in Concrete5
\Log::error('SimpleSentry: Sentry Event ID: ' . $eventId);
}
return true;
});
register_shutdown_function(function () {
$error = error_get_last();
if ($error !== null && in_array($error['type'], [E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR])) {
$hub = $this->app->make(HubInterface::class);
if ($hub) {
$exception = new \ErrorException($error['message'], 0, $error['type'], $error['file'], $error['line']);
$eventId = $hub->captureException($exception);
\Log::error('SimpleGlitchtip: Sentry Event ID (shutdown error): ' . $eventId);
}
}
});
}
}