summaryrefslogtreecommitdiff
path: root/lib/feature
diff options
context:
space:
mode:
Diffstat (limited to 'lib/feature')
-rw-r--r--lib/feature/gitaly.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/feature/gitaly.rb b/lib/feature/gitaly.rb
new file mode 100644
index 00000000000..9ded1aed4e3
--- /dev/null
+++ b/lib/feature/gitaly.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+require 'set'
+
+class Feature
+ class Gitaly
+ # Server feature flags should use '_' to separate words.
+ SERVER_FEATURE_FLAGS =
+ [
+ # 'get_commit_signatures'.freeze
+ ].freeze
+
+ DEFAULT_ON_FLAGS = Set.new([]).freeze
+
+ class << self
+ def enabled?(feature_flag)
+ return false unless Feature::FlipperFeature.table_exists?
+
+ default_on = DEFAULT_ON_FLAGS.include?(feature_flag)
+ Feature.enabled?("gitaly_#{feature_flag}", default_enabled: default_on)
+ rescue ActiveRecord::NoDatabaseError
+ false
+ end
+
+ def server_feature_flags
+ SERVER_FEATURE_FLAGS.map do |f|
+ ["gitaly-feature-#{f.tr('_', '-')}", enabled?(f).to_s]
+ end.to_h
+ end
+ end
+ end
+end