run

in lib/gitlab/feature_flag_alert/monitor.rb [14:68]


      def run
        update_repository

        current_milestone = Milestone.new(gitlab.current_milestone["title"])
        puts "Current milestone: #{current_milestone}"

        flags_needing_action_by_group = feature_flags
                                        .needing_action(current_milestone)
                                        .group_by(&:group)

        flags_overdue_by_group = feature_flags
                                 .overdue(current_milestone)
                                 .group_by(&:group)

        groups = (flags_needing_action_by_group.keys + flags_overdue_by_group.keys).uniq

        flags_by_group = groups.reduce({}) do |flags, group|
          flags.update(
            group => {
              needs_action: flags_needing_action_by_group.fetch(group, []),
              overdue: flags_overdue_by_group.fetch(group, [])
            }
          )
        end

        flags_by_group.map do |group, flags|
          next if group.nil?

          flags_needing_action = flags[:needs_action]
          flags_overdue = flags[:overdue]

          puts "Feature flags needing action for #{group}:"
          flags_needing_action.each do |flag|
            puts " * #{flag.name} | #{flag.type} | #{flag.milestone} | #{flag.default_enabled} | #{flag.introduced_by_url} | #{flag.rollout_issue_url}"
          end

          puts ""

          puts "Feature flags overdue for #{group}:"
          flags_overdue.each do |flag|
            puts " * #{flag.name} | #{flag.milestone} | #{flag.default_enabled} | #{flag.rollout_issue_url}"
          end

          puts ""

          issue = build_issue(group, flags)
          handle_issue(issue)

          
          break issue if Env.create_issue_test_mode?

          issue
        end
      end