BigW Consortium Gitlab

generate-seed-repo-rb 5.04 KB
Newer Older
1
#!/usr/bin/env ruby
2
#
3
# # generate-seed-repo-rb
4
#
5 6 7
# This script generates the seed_repo.rb file used by lib/gitlab/git
# tests. The seed_repo.rb file needs to be updated anytime there is a
# Git push to https://gitlab.com/gitlab-org/gitlab-git-test.
8
#
9
# Usage:
10
#
11
#   ./spec/support/generate-seed-repo-rb > spec/support/seed_repo.rb
12 13
#
#
14 15 16 17

require 'erb'
require 'tempfile'

18
SOURCE = File.expand_path('../gitlab-git-test.git', __FILE__).freeze
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
SCRIPT_NAME = 'generate-seed-repo-rb'.freeze
REPO_NAME = 'gitlab-git-test.git'.freeze

def main
  Dir.mktmpdir do |dir|
    unless system(*%W[git clone --bare #{SOURCE} #{REPO_NAME}], chdir: dir)
      abort "git clone failed"
    end
    repo = File.join(dir, REPO_NAME)
    erb = ERB.new(DATA.read)
    erb.run(binding)
  end
end

def capture!(cmd, dir)
  output = IO.popen(cmd, 'r', chdir: dir) { |io| io.read }
  raise "command failed with #{$?}: #{cmd.join(' ')}" unless $?.success?
36

37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
  output.chomp
end

main

__END__
# This file is generated by <%= SCRIPT_NAME %>. Do not edit this file manually.
#
# Seed repo:
<%= capture!(%w{git log --format=#\ %H\ %s}, repo) %>

module SeedRepo
  module BigCommit
    ID               = "913c66a37b4a45b9769037c55c2d238bd0942d2e".freeze
    PARENT_ID        = "cfe32cf61b73a0d5e9f13e774abde7ff789b1660".freeze
    MESSAGE          = "Files, encoding and much more".freeze
    AUTHOR_FULL_NAME = "Dmitriy Zaporozhets".freeze
    FILES_COUNT      = 2
  end

  module Commit
    ID               = "570e7b2abdd848b95f2f578043fc23bd6f6fd24d".freeze
    PARENT_ID        = "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9".freeze
    MESSAGE          = "Change some files\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n".freeze
    AUTHOR_FULL_NAME = "Dmitriy Zaporozhets".freeze
    FILES            = ["files/ruby/popen.rb", "files/ruby/regex.rb"].freeze
    FILES_COUNT      = 2
    C_FILE_PATH      = "files/ruby".freeze
    C_FILES          = ["popen.rb", "regex.rb", "version_info.rb"].freeze
    BLOB_FILE        = %{%h3= @key.title\n%hr\n%pre= @key.key\n.actions\n  = link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => \"btn danger delete-key\"\n\n\n}.freeze
    BLOB_FILE_PATH   = "app/views/keys/show.html.haml".freeze
  end

  module EmptyCommit
    ID               = "b0e52af38d7ea43cf41d8a6f2471351ac036d6c9".freeze
    PARENT_ID        = "40f4a7a617393735a95a0bb67b08385bc1e7c66d".freeze
    MESSAGE          = "Empty commit".freeze
    AUTHOR_FULL_NAME = "Rémy Coutable".freeze
    FILES            = [].freeze
    FILES_COUNT      = FILES.count
  end

  module EncodingCommit
    ID               = "40f4a7a617393735a95a0bb67b08385bc1e7c66d".freeze
    PARENT_ID        = "66028349a123e695b589e09a36634d976edcc5e8".freeze
    MESSAGE          = "Add ISO-8859-encoded file".freeze
    AUTHOR_FULL_NAME = "Stan Hu".freeze
    FILES            = ["encoding/iso8859.txt"].freeze
    FILES_COUNT      = FILES.count
  end

  module FirstCommit
    ID               = "1a0b36b3cdad1d2ee32457c102a8c0b7056fa863".freeze
    PARENT_ID        = nil
    MESSAGE          = "Initial commit".freeze
    AUTHOR_FULL_NAME = "Dmitriy Zaporozhets".freeze
    FILES            = ["LICENSE", ".gitignore", "README.md"].freeze
    FILES_COUNT      = 3
  end

  module LastCommit
    ID               = <%= capture!(%w[git show -s --format=%H HEAD], repo).inspect %>.freeze
    PARENT_ID        = <%= capture!(%w[git show -s --format=%P HEAD], repo).split.last.inspect %>.freeze
    MESSAGE          = <%= capture!(%w[git show -s --format=%s HEAD], repo).inspect %>.freeze
    AUTHOR_FULL_NAME = <%= capture!(%w[git show -s --format=%an HEAD], repo).inspect %>.freeze
    FILES            = <%=
      parents = capture!(%w[git show -s --format=%P HEAD], repo).split
      merge_base = parents.size > 1 ? capture!(%w[git merge-base] + parents, repo) : parents.first
      capture!( %W[git diff --name-only #{merge_base}..HEAD --], repo).split("\n").inspect
    %>.freeze
    FILES_COUNT      = FILES.count
  end

  module Repo
    HEAD = "master".freeze
    BRANCHES = %w[
<%=   capture!(%W[git for-each-ref --format=#{'  ' * 3}%(refname:strip=2) refs/heads/], repo) %>
    ].freeze
    TAGS = %w[
<%=   capture!(%W[git for-each-ref --format=#{'  ' * 3}%(refname:strip=2) refs/tags/], repo) %>
    ].freeze
  end

  module RubyBlob
    ID = "7e3e39ebb9b2bf433b4ad17313770fbe4051649c".freeze
    NAME = "popen.rb".freeze
    CONTENT = <<-eos.freeze
require 'fileutils'
require 'open3'

module Popen
  extend self

  def popen(cmd, path=nil)
    unless cmd.is_a?(Array)
      raise RuntimeError, "System commands must be given as an array of strings"
    end

    path ||= Dir.pwd

    vars = {
      "PWD" => path
    }

    options = {
      chdir: path
    }

    unless File.directory?(path)
      FileUtils.mkdir_p(path)
    end

    @cmd_output = ""
    @cmd_status = 0

    Open3.popen3(vars, *cmd, options) do |stdin, stdout, stderr, wait_thr|
      @cmd_output << stdout.read
      @cmd_output << stderr.read
      @cmd_status = wait_thr.value.exitstatus
    end

    return @cmd_output, @cmd_status
  end
end
    eos
  end
end