diff --git a/lib/flipper/ui/configuration.rb b/lib/flipper/ui/configuration.rb index 4582ea595..e4b7c2728 100644 --- a/lib/flipper/ui/configuration.rb +++ b/lib/flipper/ui/configuration.rb @@ -77,6 +77,11 @@ class Configuration # Default is false. attr_accessor :confirm_disable + # Public: An array of scripts to include in the UI. Each script should be + # a hash with a `:src` key and optionally a `:integrity` key. Example: + # config.scripts << { src: "https://example.com/script.js", integrity: "sha384-abc123" } + attr_accessor :scripts + VALID_BANNER_CLASS_VALUES = %w( danger dark @@ -111,6 +116,7 @@ def initialize { title: "Features", href: "features" }, { title: "Settings", href: "settings" }, ] + @scripts = [] end def using_descriptions? diff --git a/lib/flipper/ui/views/layout.erb b/lib/flipper/ui/views/layout.erb index 431867388..5a287b1c3 100644 --- a/lib/flipper/ui/views/layout.erb +++ b/lib/flipper/ui/views/layout.erb @@ -84,5 +84,16 @@ + <% unless Flipper::UI.configuration.scripts.empty? %> + <% Flipper::UI.configuration.scripts.each do |script| %> + + <% end %> + <% end %> diff --git a/spec/flipper/ui/configuration_spec.rb b/spec/flipper/ui/configuration_spec.rb index b41567011..61d551274 100644 --- a/spec/flipper/ui/configuration_spec.rb +++ b/spec/flipper/ui/configuration_spec.rb @@ -182,4 +182,15 @@ it { is_expected.to eq(true) } end end + + describe "#scripts" do + it "has default value" do + expect(configuration.scripts).to eq([]) + end + + it "can be updated" do + configuration.scripts << { src: "https://example.com/script.js", integrity: "sha384-abc123" } + expect(configuration.scripts).to eq([{ src: "https://example.com/script.js", integrity: "sha384-abc123" }]) + end + end end