class LabClient::Generator::Wizard
Helper to Generate Data / Populate GitLab
Attributes
client[R]
count[RW]
domain[RW]
password[RW]
random[RW]
skip_confirmation[RW]
templates[RW]
Public Class Methods
new(client)
click to toggle source
# File lib/labclient/generator/wizard.rb, line 23 def initialize(client) require 'faker' # Ensure Faker is Available @client = client self.random = true # Populate Random or use only Templates self.count = default_count self.password = SecureRandom.uuid logger.info('Wizard Default Password', password: password) unless client.quiet? self.skip_confirmation = true self.domain = URI.parse(client.settings[:url]).hostname # Default Templates self.templates ||= templates_default end
Public Instance Methods
default_count()
click to toggle source
Random Counters
# File lib/labclient/generator/wizard.rb, line 48 def default_count { users: 20, projects: 5, groups: 5, issues: 2 } end
generate_group_membership()
click to toggle source
# File lib/labclient/generator/wizard.rb, line 83 def generate_group_membership logger.info 'Adding Group members' unless client.quiet? ## Group Access Level @groups.each do |group| @users.sample(rand(1..@users.count)).each do |user| level = group.valid_group_project_levels.sample logger.info('Group Add', name: group.name, user: user.name, level: level) unless client.quiet? group.member_add(user, access_level: level) # :nocov: rescue StandardError => e logger.fatal e.message unless client.quiet? next # :nocov: end end end
generate_groups()
click to toggle source
# File lib/labclient/generator/wizard.rb, line 74 def generate_groups logger.info 'Generating Groups' unless client.quiet? @groups = @group_names.map do |name| path = name.downcase.gsub(/[^0-9A-Za-z]/, '') logger.info "Group -- #{name}/#{path}" unless client.quiet? client.groups.create(name: name, path: path) end end
generate_issue_data(member)
click to toggle source
# File lib/labclient/generator/wizard.rb, line 116 def generate_issue_data(member) { assignee_id: member.id, description: Faker::Hacker.say_something_smart, title: Faker::Company.catch_phrase } end
generate_projects(group)
click to toggle source
# File lib/labclient/generator/wizard.rb, line 100 def generate_projects(group) logger.info 'Generating Projects' unless client.quiet? # Collect Group Members members = group.members # Loop through project names, create project add issues @project_names.uniq.map do |project_name| logger.info "Project: #{project_name}" unless client.quiet? project = group.project_create(name: project_name, description: gen_description) rand(count[:issues]).times do project.issue_create(generate_issue_data(members.sample)) end end end
generate_users()
click to toggle source
# File lib/labclient/generator/wizard.rb, line 57 def generate_users logger.info 'Generating Users' unless client.quiet? @users = @user_names.map do |name| username = name.downcase.gsub(/[^0-9A-Za-z]/, '') email = "#{username}@#{domain}" logger.info('User', name: name, username: username, email: email) unless client.quiet? client.users.create( name: name, email: email, password: password, username: username, skip_confirmation: skip_confirmation ) end end
inspect()
click to toggle source
# File lib/labclient/generator/wizard.rb, line 11 def inspect "#<Wizard count=#{count}, random=#{random}, domain=#{domain}> templates=#{templates}" end
run!()
click to toggle source
Execute Generation
# File lib/labclient/generator/wizard.rb, line 125 def run! # Collect Names generate_names generate_users generate_groups generate_group_membership @groups.map do |group| generate_projects(group) end # Run Templates templates.each { |template_klass| template(template_klass).run! } nil end
template(name, opts = {})
click to toggle source
# File lib/labclient/generator/wizard.rb, line 39 def template(name, opts = {}) template_klass = templates_all.find { |x| x.template_name == name.to_sym } raise "Invalid Template! Available Templates: #{templates_all.map(&:template_name).join(', ')}" unless template_klass template_klass.new(client, opts) end
templates_all()
click to toggle source
# File lib/labclient/generator/wizard.rb, line 19 def templates_all LabClient::Generator::TemplateHelper.descendants end
templates_default()
click to toggle source
# File lib/labclient/generator/wizard.rb, line 15 def templates_default %i[pages pipeline_trigger environments] end