08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksarequire 'singleton'
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksadef init(path)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa FileUtils.mkdir_p(path)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa RepositoryCreator.instance.root_path = path
1f4ec1a49c282b926c1b1461f3491a380fe3528cEugen Kuksa RepositoryCreator.instance.cleanup
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksaend
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksadef repo_clone(*args)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa RepositoryCreator.instance.clone *args
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksaend
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksadef add_url_map(*args)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa RepositoryCreator.instance.url_map(*args)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksaend
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksadef save_to_ontohub
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa RepositoryCreator.instance.save
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksaend
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksaclass RepositoryCreator
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa include Singleton
8463454358fd9913bd768e570377a207fa1995d1Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa attr_accessor :root_path
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa def clone(name, url)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa @current_repo = Repo.new(name, url)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa end
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa def url_map(source, target)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa @current_repo.url_maps << UrlMap.new(source: source, target: target)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa end
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa def save
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa @current_repo.save
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa end
1f4ec1a49c282b926c1b1461f3491a380fe3528cEugen Kuksa
1f4ec1a49c282b926c1b1461f3491a380fe3528cEugen Kuksa def cleanup
1f4ec1a49c282b926c1b1461f3491a380fe3528cEugen Kuksa FileUtils.rm_rf(Dir.glob(root_path.join('*')))
1f4ec1a49c282b926c1b1461f3491a380fe3528cEugen Kuksa end
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksaend
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksaclass Repo
8463454358fd9913bd768e570377a207fa1995d1Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa attr_accessor :url_maps
8463454358fd9913bd768e570377a207fa1995d1Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa def initialize(name, url=nil)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa @name = name
1f4ec1a49c282b926c1b1461f3491a380fe3528cEugen Kuksa @path = url || RepositoryCreator.instance.root_path.join(name)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa @url_maps = []
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
1f4ec1a49c282b926c1b1461f3491a380fe3528cEugen Kuksa unless url
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa Subprocess.run 'git', 'init', @path
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa end
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa end
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa def save
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa r = Repository.new name: @name, description: 'Seeded Repository', source_address: @path.to_s, access: 'public_r'
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa r.user = User.first
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa r.url_maps = @url_maps
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa r.save!
9d3990a5452648f88435496cc73e0d45b63b183eEugen Kuksa RepositoryConversionWorker.perform_async(r.id)
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksa end
08070fff5598f6d5d7662e321becf59f18d00176Eugen Kuksaend