summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-03-12 10:09:49 -0500
committerFrederic Guillot <fred@kanboard.net>2016-03-12 10:09:49 -0500
commit42c368cb01ae1edb36726a14f3a25539dd3ce7f6 (patch)
tree197416413cebf406f617a7aeff3336c064109657
parentb061945f0e716a026fe722d5f0ba04f86982d3fc (diff)
Show version number from git-archive
-rw-r--r--.gitattributes1
-rw-r--r--app/constants.php2
-rw-r--r--app/functions.php26
3 files changed, 28 insertions, 1 deletions
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..3870920d
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+app/constants.php export-subst \ No newline at end of file
diff --git a/app/constants.php b/app/constants.php
index 4201e6e4..a09aac19 100644
--- a/app/constants.php
+++ b/app/constants.php
@@ -8,7 +8,7 @@ defined('DEBUG_FILE') or define('DEBUG_FILE', getenv('DEBUG_FILE') ?: __DIR__.DI
defined('PLUGINS_DIR') or define('PLUGINS_DIR', __DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'plugins');
// Application version
-defined('APP_VERSION') or define('APP_VERSION', 'master');
+defined('APP_VERSION') or define('APP_VERSION', build_app_version('$Format:%d$', '$Format:%H$'));
// Database driver: sqlite, mysql or postgres
defined('DB_DRIVER') or define('DB_DRIVER', 'sqlite');
diff --git a/app/functions.php b/app/functions.php
index 0c611f95..b759763f 100644
--- a/app/functions.php
+++ b/app/functions.php
@@ -3,6 +3,32 @@
use Kanboard\Core\Translator;
/**
+ * Build version number from git-archive output
+ *
+ * @param string $ref
+ * @param string $commit_hash
+ * @return string
+ */
+function build_app_version($ref, $commit_hash)
+{
+ $version = 'master';
+
+ if ($ref !== '$Format:%d$') {
+ $tag = preg_replace('/\s*\(.*tag:\sv([^,]+).*\)/i', '\1', $ref);
+
+ if (!is_null($tag) && $tag !== $ref) {
+ return $tag;
+ }
+ }
+
+ if ($commit_hash !== '$Format:%H$') {
+ $version .= '.'.$commit_hash;
+ }
+
+ return $version;
+}
+
+/**
* Translate a string
*
* @return string