socialforge/lib/trustie/gitlab/sync.rb

73 lines
1.9 KiB
Ruby

#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