summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Application.php1
-rw-r--r--src/Controllers/CreditsController.php13
-rw-r--r--src/Controllers/Metrics/Controller.php21
-rw-r--r--src/Helpers/Version.php42
-rw-r--r--src/Helpers/VersionServiceProvider.php15
5 files changed, 89 insertions, 3 deletions
diff --git a/src/Application.php b/src/Application.php
index ac69c20a..99c68231 100644
--- a/src/Application.php
+++ b/src/Application.php
@@ -111,6 +111,7 @@ class Application extends Container
$this->instance('path.lang', $this->get('path.resources') . DIRECTORY_SEPARATOR . 'lang');
$this->instance('path.views', $this->get('path.resources') . DIRECTORY_SEPARATOR . 'views');
$this->instance('path.storage', $appPath . DIRECTORY_SEPARATOR . 'storage');
+ $this->instance('path.storage.app', $this->get('path.storage') . DIRECTORY_SEPARATOR . 'app');
$this->instance('path.cache', $this->get('path.storage') . DIRECTORY_SEPARATOR . 'cache');
$this->instance('path.cache.routes', $this->get('path.cache') . DIRECTORY_SEPARATOR . 'routes.cache.php');
$this->instance('path.cache.views', $this->get('path.cache') . DIRECTORY_SEPARATOR . 'views');
diff --git a/src/Controllers/CreditsController.php b/src/Controllers/CreditsController.php
index b2805b84..ade97649 100644
--- a/src/Controllers/CreditsController.php
+++ b/src/Controllers/CreditsController.php
@@ -3,6 +3,7 @@
namespace Engelsystem\Controllers;
use Engelsystem\Config\Config;
+use Engelsystem\Helpers\Version;
use Engelsystem\Http\Response;
class CreditsController extends BaseController
@@ -13,14 +14,19 @@ class CreditsController extends BaseController
/** @var Response */
protected $response;
+ /** @var Version */
+ protected $version;
+
/**
* @param Response $response
* @param Config $config
+ * @param Version $version
*/
- public function __construct(Response $response, Config $config)
+ public function __construct(Response $response, Config $config, Version $version)
{
$this->config = $config;
$this->response = $response;
+ $this->version = $version;
}
/**
@@ -30,7 +36,10 @@ class CreditsController extends BaseController
{
return $this->response->withView(
'pages/credits.twig',
- ['credits' => $this->config->get('credits')]
+ [
+ 'credits' => $this->config->get('credits'),
+ 'version' => $this->version->getVersion(),
+ ]
);
}
}
diff --git a/src/Controllers/Metrics/Controller.php b/src/Controllers/Metrics/Controller.php
index f6ea3967..ffb2a41b 100644
--- a/src/Controllers/Metrics/Controller.php
+++ b/src/Controllers/Metrics/Controller.php
@@ -4,6 +4,7 @@ namespace Engelsystem\Controllers\Metrics;
use Engelsystem\Config\Config;
use Engelsystem\Controllers\BaseController;
+use Engelsystem\Helpers\Version;
use Engelsystem\Http\Exceptions\HttpForbidden;
use Engelsystem\Http\Request;
use Engelsystem\Http\Response;
@@ -26,25 +27,31 @@ class Controller extends BaseController
/** @var Stats */
protected $stats;
+ /** @var Version */
+ protected $version;
+
/**
* @param Response $response
* @param MetricsEngine $engine
* @param Config $config
* @param Request $request
* @param Stats $stats
+ * @param Version $version
*/
public function __construct(
Response $response,
MetricsEngine $engine,
Config $config,
Request $request,
- Stats $stats
+ Stats $stats,
+ Version $version
) {
$this->config = $config;
$this->engine = $engine;
$this->request = $request;
$this->response = $response;
$this->stats = $stats;
+ $this->version = $version;
}
/**
@@ -68,6 +75,18 @@ class Controller extends BaseController
$data = [
$this->config->get('app_name') . ' stats',
+ 'info' => [
+ 'type' => 'gauge',
+ 'help' => 'About the environment',
+ [
+ 'labels' => [
+ 'os' => PHP_OS_FAMILY,
+ 'php' => implode('.', [PHP_MAJOR_VERSION, PHP_MINOR_VERSION]),
+ 'version' => $this->version->getVersion(),
+ ],
+ 'value' => 1,
+ ],
+ ],
'users' => [
'type' => 'gauge',
['labels' => ['state' => 'incoming'], 'value' => $this->stats->newUsers()],
diff --git a/src/Helpers/Version.php b/src/Helpers/Version.php
new file mode 100644
index 00000000..97fe6ef3
--- /dev/null
+++ b/src/Helpers/Version.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace Engelsystem\Helpers;
+
+use Engelsystem\Config\Config;
+
+class Version
+{
+ /** @var Config */
+ protected $config;
+
+ /** @vat string */
+ protected $storage;
+
+ /** @var string */
+ protected $versionFile = 'VERSION';
+
+ /**
+ * @param string $storage
+ * @param Config $config
+ */
+ public function __construct(string $storage, Config $config)
+ {
+ $this->storage = $storage;
+ $this->config = $config;
+ }
+
+ /**
+ * @return string
+ */
+ public function getVersion()
+ {
+ $file = $this->storage . DIRECTORY_SEPARATOR . $this->versionFile;
+
+ $version = 'n/a';
+ if (file_exists($file)) {
+ $version = trim(file_get_contents($file));
+ }
+
+ return $this->config->get('version', $version);
+ }
+}
diff --git a/src/Helpers/VersionServiceProvider.php b/src/Helpers/VersionServiceProvider.php
new file mode 100644
index 00000000..41e10158
--- /dev/null
+++ b/src/Helpers/VersionServiceProvider.php
@@ -0,0 +1,15 @@
+<?php
+
+namespace Engelsystem\Helpers;
+
+use Engelsystem\Container\ServiceProvider;
+
+class VersionServiceProvider extends ServiceProvider
+{
+ public function register()
+ {
+ $this->app->when(Version::class)
+ ->needs('$storage')
+ ->give($this->app->get('path.storage.app'));
+ }
+}