#coding=utf-8 require_relative 'helper' module Trustie module Gitlab module UserLevel GUEST = 10 REPORTER = 20 DEVELOPER = 30 MASTER = 40 OWNER = 50 end class Sync attr :g include Helper def initialize @g = ::Gitlab.client end def sync_user(user) u = add_user(user) user.save! if u end def sync_project(project, opt={}) gid = project.owner.gid raise "unknow gid" unless gid path = opt[:path] raise "unknow path" unless path import_url = opt[:import_url] raise "unknow import_url" unless import_url if opt[:password] import_url.sub('@', ":#{opt[:password]}@") end # import url http://xianbo_trustie2:1234@repository.trustie.net/xianbo/trustie2.git # can use password gproject = self.g.create_project(path, path: path, description: project.description, wiki_enabled: false, wall_enabled: false, issues_enabled: false, snippets_enabled: false, public: false, user_id: gid, import_url: import_url ) project.gpid = gproject.id project.save! puts "Successfully created #{project.name}" # add team members # project.members.each do |m| begin self.g.add_team_member(gproject.id, m.user.gid, UserLevel::DEVELOPER) rescue => e puts e end end end def remove_project end end end end