Commit 3b7ffb355d46cb37c595e27f94c3ce377d3848fa

Authored by Jacob Vosmaer
1 parent 778b26bf

Add a gitlab.yml conversion support script

Showing 2 changed files with 45 additions and 0 deletions   Show diff stats
CHANGELOG
... ... @@ -2,6 +2,7 @@
2 2 - Make SSH port in clone URLs configurable (Julien Pivotto)
3 3 - Fix default Postgres port for non-packaged DBMS (Drew Blessing)
4 4 - Add migration instructions coming from an existing GitLab installation (Goni Zahavy)
  5 +- Add a gitlab.yml conversion support script
5 6  
6 7 6.8.1
7 8 - Use gitlab-rails 6.8.1
... ...
support/gitlab_yml_converter.rb 0 → 100644
... ... @@ -0,0 +1,44 @@
  1 +# This script translates settings from a gitlab.yml file to the format of
  2 +# omnibus-gitlab's /etc/gitlab/gitlab.rb file.
  3 +#
  4 +# The output is NOT a valid gitlab.rb file! The purpose of this script is only
  5 +# to reduce copy and paste work.
  6 +#
  7 +# Usage: ruby gitlab_yml_converter.rb /path/to/gitlab.yml
  8 +
  9 +require 'yaml'
  10 +
  11 +module GitlabYamlConverter
  12 + class Flattener
  13 + def initialize(separator='_')
  14 + @separator = separator
  15 + end
  16 +
  17 + def flatten(hash, prefix=nil)
  18 + Enumerator.new do |yielder|
  19 + hash.each do |key, value|
  20 + raise "Bad key: #{key.inspect}" unless key.is_a?(String)
  21 + key = [prefix, key].join(@separator) if prefix
  22 +
  23 + if value.is_a?(Hash)
  24 + flatten(value, key).each do |nested_key_value|
  25 + yielder.yield nested_key_value
  26 + end
  27 + else
  28 + yielder.yield [key, value]
  29 + end
  30 + end
  31 + end
  32 + end
  33 + end
  34 +
  35 + def self.convert(gitlab_yml)
  36 + Flattener.new.flatten(gitlab_yml['production']).each do |key, value|
  37 + puts "gitlab_rails['#{key}'] = #{value.inspect}"
  38 + end
  39 + end
  40 +end
  41 +
  42 +if $0 == __FILE__
  43 + GitlabYamlConverter.convert(YAML.load(ARGF.read))
  44 +end
... ...