From 002cbbcb2ad8f22c631de7a179fc689123357a1e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= <ayufan@ayufan.eu>
Date: Thu, 29 Oct 2020 16:09:30 +0100
Subject: [PATCH] Extend `bin/feature-flag` with `milestone`

This reads a milestone from `VERSION`
and appends `milestone:` to YAML
---
 bin/feature-flag      | 12 ++++++++++++
 lib/feature/shared.rb |  1 +
 2 files changed, 13 insertions(+)

diff --git a/bin/feature-flag b/bin/feature-flag
index 43e273be1fa91..0de9b90681fcb 100755
--- a/bin/feature-flag
+++ b/bin/feature-flag
@@ -35,6 +35,7 @@ class FeatureFlagOptionParser
     :name,
     :type,
     :group,
+    :milestone,
     :ee,
     :amend,
     :dry_run,
@@ -64,6 +65,10 @@ class FeatureFlagOptionParser
           options.introduced_by_url = value
         end
 
+        opts.on('-M', '--milestone [string]', String, 'Milestone in which the Feature Flag was introduced') do |value|
+          options.milestone = value
+        end
+
         opts.on('-i', '--rollout-issue-url [string]', String, 'URL of Issue rolling out the Feature Flag') do |value|
           options.rollout_issue_url = value
         end
@@ -188,6 +193,11 @@ class FeatureFlagOptionParser
       end
     end
 
+    def read_milestone
+      milestone = File.read('VERSION')
+      milestone.gsub(/^(\d+\.\d+).*$/, '\1').chomp
+    end
+
     def read_default_enabled(options)
       TYPES.dig(options.type, :default_enabled)
     end
@@ -214,6 +224,7 @@ class FeatureFlagCreator
     options.group ||= FeatureFlagOptionParser.read_group
     options.introduced_by_url ||= FeatureFlagOptionParser.read_introduced_by_url
     options.rollout_issue_url ||= FeatureFlagOptionParser.read_rollout_issue_url(options)
+    options.milestone ||= FeatureFlagOptionParser.read_milestone
 
     $stdout.puts "\e[32mcreate\e[0m #{file_path}"
     $stdout.puts contents
@@ -243,6 +254,7 @@ class FeatureFlagCreator
       'name'              => options.name,
       'introduced_by_url' => options.introduced_by_url,
       'rollout_issue_url' => options.rollout_issue_url,
+      'milestone'         => options.milestone,
       'group'             => options.group,
       'type'              => options.type.to_s,
       'default_enabled'   => FeatureFlagOptionParser.read_default_enabled(options)
diff --git a/lib/feature/shared.rb b/lib/feature/shared.rb
index 5716bc007a60b..1fcbc8fa1730c 100644
--- a/lib/feature/shared.rb
+++ b/lib/feature/shared.rb
@@ -57,6 +57,7 @@ module Shared
       name
       introduced_by_url
       rollout_issue_url
+      milestone
       type
       group
       default_enabled
-- 
GitLab