Class: LabClient::Generator::Wizard
- Inherits:
-
Object
- Object
- LabClient::Generator::Wizard
- Includes:
- Names
- Defined in:
- lib/labclient/generator/wizard.rb
Overview
Helper to Generate Data / Populate GitLab
Instance Attribute Summary collapse
-
#client ⇒ Object
readonly
Returns the value of attribute client.
-
#count ⇒ Object
Returns the value of attribute count.
-
#domain ⇒ Object
Returns the value of attribute domain.
-
#password ⇒ Object
Returns the value of attribute password.
-
#random ⇒ Object
Returns the value of attribute random.
-
#templates ⇒ Object
Returns the value of attribute templates.
Instance Method Summary collapse
-
#default_count ⇒ Object
Random Counters.
- #generate_group_membership ⇒ Object
- #generate_groups ⇒ Object
- #generate_issue_data(member) ⇒ Object
- #generate_projects(group) ⇒ Object
- #generate_users ⇒ Object
-
#initialize(client) ⇒ Wizard
constructor
A new instance of Wizard.
- #inspect ⇒ Object
- #pages(opts = {}) ⇒ Object
-
#run! ⇒ Object
Execute Generation.
- #template(name, opts = {}) ⇒ Object
Methods included from Names
#gen_description, #gen_groups, #gen_people, #gen_projects, #generate_names
Constructor Details
#initialize(client) ⇒ Wizard
Returns a new instance of Wizard.
14 15 16 17 18 19 20 21 22 |
# File 'lib/labclient/generator/wizard.rb', line 14 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 self.domain = URI.parse(client.settings[:url]).hostname end |
Instance Attribute Details
#client ⇒ Object (readonly)
Returns the value of attribute client.
7 8 9 |
# File 'lib/labclient/generator/wizard.rb', line 7 def client @client end |
#count ⇒ Object
Returns the value of attribute count.
8 9 10 |
# File 'lib/labclient/generator/wizard.rb', line 8 def count @count end |
#domain ⇒ Object
Returns the value of attribute domain.
8 9 10 |
# File 'lib/labclient/generator/wizard.rb', line 8 def domain @domain end |
#password ⇒ Object
Returns the value of attribute password.
8 9 10 |
# File 'lib/labclient/generator/wizard.rb', line 8 def password @password end |
#random ⇒ Object
Returns the value of attribute random.
8 9 10 |
# File 'lib/labclient/generator/wizard.rb', line 8 def random @random end |
#templates ⇒ Object
Returns the value of attribute templates.
8 9 10 |
# File 'lib/labclient/generator/wizard.rb', line 8 def templates @templates end |
Instance Method Details
#default_count ⇒ Object
Random Counters
35 36 37 38 39 40 41 42 |
# File 'lib/labclient/generator/wizard.rb', line 35 def default_count { users: 20, projects: 5, groups: 5, issues: 2 } end |
#generate_group_membership ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/labclient/generator/wizard.rb', line 67 def generate_group_membership ## Group Access Level @groups.each do |group| @users.sample(rand(1..@users.count)).each do |user| level = group.valid_group_project_levels.sample puts "Group Add: #{group.name}: #{user.name} - #{level}" group.member_add(user, access_level: level) # :nocov: rescue StandardError => e puts e. next # :nocov: end end end |
#generate_groups ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/labclient/generator/wizard.rb', line 59 def generate_groups @groups = @group_names.map do |name| path = name.downcase.gsub(/[^0-9A-Za-z]/, '') puts "Group -- #{name}/#{path}" client.groups.create(name: name, path: path) end end |
#generate_issue_data(member) ⇒ Object
98 99 100 101 102 103 104 |
# File 'lib/labclient/generator/wizard.rb', line 98 def generate_issue_data(member) { assignee_id: member.id, description: Faker::Hacker.say_something_smart, title: Faker::Company.catch_phrase } end |
#generate_projects(group) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/labclient/generator/wizard.rb', line 83 def generate_projects(group) # Collect Group Members members = group.members # Loop through project names, create project add issues @project_names.uniq.map do |project_name| puts "Project: #{project_name}" 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 ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/labclient/generator/wizard.rb', line 44 def generate_users @users = @user_names.map do |name| username = name.downcase.gsub(/[^0-9A-Za-z]/, '') email = "#{username}@#{domain}" puts "User -- Name: #{name}, UserName: #{username}, Email: #{email}" client.users.create( name: name, email: email, password: password, username: username ) end end |
#inspect ⇒ Object
10 11 12 |
# File 'lib/labclient/generator/wizard.rb', line 10 def inspect "#<Wizard count=#{count}, random=#{random}, domain=#{domain}>" end |
#pages(opts = {}) ⇒ Object
30 31 32 |
# File 'lib/labclient/generator/wizard.rb', line 30 def pages(opts = {}) Pages.new(client, opts) end |
#run! ⇒ Object
Execute Generation
107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/labclient/generator/wizard.rb', line 107 def run! # Collect Names generate_names generate_users generate_groups generate_group_membership @groups.map do |group| generate_projects(group) end nil end |