From ec7835946a0c981e9b263d2840e68f16eb1b3789 Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Mon, 4 Mar 2019 08:20:37 +0000 Subject: [PATCH] Creates a function to check if repo is EE Adds EE information to gon Creates a global vue mixin --- app/assets/javascripts/lib/utils/common_utils.js | 8 ++++++++ app/assets/javascripts/vue_shared/mixins/is_ee.js | 10 ++++++++++ .../unreleased/8711-prep-frontend-single-repo.yml | 5 +++++ lib/gitlab.rb | 4 ++++ lib/gitlab/gon_helper.rb | 1 + spec/javascripts/test_bundle.js | 3 +++ spec/lib/gitlab_spec.rb | 14 ++++++++++++++ 7 files changed, 45 insertions(+) create mode 100644 app/assets/javascripts/vue_shared/mixins/is_ee.js create mode 100644 changelogs/unreleased/8711-prep-frontend-single-repo.yml diff --git a/app/assets/javascripts/lib/utils/common_utils.js b/app/assets/javascripts/lib/utils/common_utils.js index a73cdb73690..1af6b63efc9 100644 --- a/app/assets/javascripts/lib/utils/common_utils.js +++ b/app/assets/javascripts/lib/utils/common_utils.js @@ -708,6 +708,14 @@ export const NavigationType = { TYPE_RESERVED: 255, }; +/** + * Returns the value of `gon.ee` + * Used to check if it's the EE codebase or the CE one. + * + * @returns Boolean + */ +export const isEE = () => window.gon && window.gon.ee; + window.gl = window.gl || {}; window.gl.utils = { ...(window.gl.utils || {}), diff --git a/app/assets/javascripts/vue_shared/mixins/is_ee.js b/app/assets/javascripts/vue_shared/mixins/is_ee.js new file mode 100644 index 00000000000..8e00d93ef18 --- /dev/null +++ b/app/assets/javascripts/vue_shared/mixins/is_ee.js @@ -0,0 +1,10 @@ +import Vue from 'vue'; +import { isEE } from '~/lib/utils/common_utils'; + +Vue.mixin({ + computed: { + isEE() { + return isEE(); + }, + }, +}); diff --git a/changelogs/unreleased/8711-prep-frontend-single-repo.yml b/changelogs/unreleased/8711-prep-frontend-single-repo.yml new file mode 100644 index 00000000000..9c16e16a84b --- /dev/null +++ b/changelogs/unreleased/8711-prep-frontend-single-repo.yml @@ -0,0 +1,5 @@ +--- +title: Creates a helper function to check if repo is EE +merge_request: 25647 +author: +type: other diff --git a/lib/gitlab.rb b/lib/gitlab.rb index e073450283b..f42ca5a9cd6 100644 --- a/lib/gitlab.rb +++ b/lib/gitlab.rb @@ -58,6 +58,10 @@ module Gitlab Rails.env.development? || org? || com? end + def self.ee? + Object.const_defined?(:License) + end + def self.process_name return 'sidekiq' if Sidekiq.server? return 'console' if defined?(Rails::Console) diff --git a/lib/gitlab/gon_helper.rb b/lib/gitlab/gon_helper.rb index 3235d3ccc4e..e00309e7946 100644 --- a/lib/gitlab/gon_helper.rb +++ b/lib/gitlab/gon_helper.rb @@ -25,6 +25,7 @@ module Gitlab gon.test_env = Rails.env.test? gon.suggested_label_colors = LabelsHelper.suggested_colors gon.first_day_of_week = current_user&.first_day_of_week || Gitlab::CurrentSettings.first_day_of_week + gon.ee = Gitlab.ee? if current_user gon.current_user_id = current_user.id diff --git a/spec/javascripts/test_bundle.js b/spec/javascripts/test_bundle.js index b2b0a50911d..5eef5682bbd 100644 --- a/spec/javascripts/test_bundle.js +++ b/spec/javascripts/test_bundle.js @@ -8,6 +8,7 @@ import '~/commons'; import Vue from 'vue'; import VueResource from 'vue-resource'; import Translate from '~/vue_shared/translate'; +import CheckEE from '~/vue_shared/mixins/is_ee'; import jasmineDiff from 'jasmine-diff'; import { getDefaultAdapter } from '~/lib/utils/axios_utils'; @@ -43,6 +44,7 @@ Vue.config.errorHandler = function(err) { Vue.use(VueResource); Vue.use(Translate); +Vue.use(CheckEE); // enable test fixtures jasmine.getFixtures().fixturesPath = FIXTURES_PATH; @@ -67,6 +69,7 @@ window.gl = window.gl || {}; window.gl.TEST_HOST = TEST_HOST; window.gon = window.gon || {}; window.gon.test_env = true; +window.gon.ee = false; gon.relative_url_root = ''; let hasUnhandledPromiseRejections = false; diff --git a/spec/lib/gitlab_spec.rb b/spec/lib/gitlab_spec.rb index 5f7a0cca351..8232715d00e 100644 --- a/spec/lib/gitlab_spec.rb +++ b/spec/lib/gitlab_spec.rb @@ -95,4 +95,18 @@ describe Gitlab do expect(described_class.com?).to eq false end end + + describe '.ee?' do + it 'returns true when using Enterprise Edition' do + stub_const('License', Class.new) + + expect(described_class.ee?).to eq(true) + end + + it 'returns false when using Community Edition' do + hide_const('License') + + expect(described_class.ee?).to eq(false) + end + end end