Class: LabClient::Generator::Pages

Inherits:
TemplateHelper show all
Includes:
Names
Defined in:
lib/labclient/generator/templates/pages.rb

Overview

Page Import Creation

Instance Attribute Summary collapse

Attributes inherited from TemplateHelper

#client, #opts

Instance Method Summary collapse

Methods included from Names

#gen_description, #gen_groups, #gen_people, #gen_projects, #generate_names

Methods inherited from TemplateHelper

#initialize, #inspect

Constructor Details

This class inherits a constructor from LabClient::Generator::TemplateHelper

Instance Attribute Details

#countObject

Returns the value of attribute count.



6
7
8
# File 'lib/labclient/generator/templates/pages.rb', line 6

def count
  @count
end

#group_nameObject

Returns the value of attribute group_name.



6
7
8
# File 'lib/labclient/generator/templates/pages.rb', line 6

def group_name
  @group_name
end

#group_pathObject

Returns the value of attribute group_path.



6
7
8
# File 'lib/labclient/generator/templates/pages.rb', line 6

def group_path
  @group_path
end

Instance Method Details

#generate_groupObject



25
26
27
28
29
# File 'lib/labclient/generator/templates/pages.rb', line 25

def generate_group
  @group = client.groups.create(name: group_name, path: group_path)
  puts "#{@group.name} - #{@group.web_url}"
  raise 'Unable to Create Group' unless @group.success?
end

#generate_pipelinesObject



45
46
47
48
49
# File 'lib/labclient/generator/templates/pages.rb', line 45

def generate_pipelines
  @projects.each do |project|
    project.pipeline_create(ref: :master)
  end
end

#generate_project(name) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/labclient/generator/templates/pages.rb', line 37

def generate_project(name)
  @group.project_create(
    name: name,
    description: "#{name} Pages",
    import_url: "https://gitlab.com/pages/#{name}.git"
  )
end

#generate_projectsObject



31
32
33
34
35
# File 'lib/labclient/generator/templates/pages.rb', line 31

def generate_projects
  @projects = list.sample(count).map do |name|
    generate_project(name)
  end
end

#listObject

All Available Pages Projects



9
10
11
12
13
14
15
16
17
# File 'lib/labclient/generator/templates/pages.rb', line 9

def list
  %w[
    brunch doxygen emacs-reveal frozen-flask gatsby
    gitbook hakyll harp hexo hugo hyde ikiwiki
    jekyll jigsaw lektor metalsmith
    middleman mkdocs nanoc nikola nuxt octopress
    org-mode pelican plain-html sphinx vuepress zim
  ]
end

#run!Object

Execute Template



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/labclient/generator/templates/pages.rb', line 56

def run!
  generate_group
  generate_projects
  wait_for_import
  generate_pipelines

  @projects.each do |project|
    puts "#{project.name} - #{project.web_url}"
  end

  {
    group: @group,
    projects: @projects
  }
end

#setupObject



19
20
21
22
23
# File 'lib/labclient/generator/templates/pages.rb', line 19

def setup
  self.group_name = opts[:group_name] || "#{gen_groups.sample} Pages"
  self.group_path = opts[:group_path] || group_name.downcase.gsub(' ', '-')
  self.count = opts[:count] || 5
end

#wait_for_importObject



51
52
53
# File 'lib/labclient/generator/templates/pages.rb', line 51

def wait_for_import
  @projects.each(&:wait_for_import)
end