diff --git a/lib/facter/grafana_version.rb b/lib/facter/grafana_version.rb new file mode 100644 index 00000000..af9ee5ef --- /dev/null +++ b/lib/facter/grafana_version.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +Facter.add(:grafana_version) do + version_path = '/usr/share/grafana/VERSION' + confine { File.exist?(version_path) } + + setcode do + File.read(version_path).strip + end +end diff --git a/spec/facter/grafana_version_spec.rb b/spec/facter/grafana_version_spec.rb new file mode 100644 index 00000000..b39efbe9 --- /dev/null +++ b/spec/facter/grafana_version_spec.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require 'facter' + +describe 'grafana_version' do + before do + Facter.clear + end + + context 'when VERSION file exists' do + it 'returns the version from the VERSION file' do + version = '1.2.3' + version_path = '/usr/share/grafana/VERSION' + + allow(File).to receive(:exist?).with(version_path).and_return(true) + allow(File).to receive(:read).with(version_path).and_return(version) + + expect(Facter.fact(:grafana_version).value).to eq(version.strip) + end + end + + context 'when VERSION file does not exist' do + it 'returns nil' do + allow(File).to receive(:exist?).with('/usr/share/grafana/VERSION').and_return(false) + + expect(Facter.fact(:grafana_version).value).to be_nil + end + end +end