Class: Giticious::Service::Repository

Inherits:
Object
  • Object
show all
Defined in:
lib/giticious/service/repository.rb

Instance Method Summary collapse

Instance Method Details

#add_user(repo_name, username, permissions) ⇒ Object



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
# File 'lib/giticious/service/repository.rb', line 90

def add_user(repo_name, username, permissions)
  repo = Giticious::Model::Repository.find_by_name(repo_name)

  if repo.nil?
    raise ArgumentError, "The selected repository does not exist"
  end

  user = Giticious::Model::User.find_by_username(username)

  if user.nil?
    raise ArgumentError, "The selected user does not exist"
  end

  if Giticious::Model::Permission.where(user_id: user.id, repository_id: repo.id).empty? == false
    raise ArgumentError, "This user does already have permissions"
  end

  perm = Giticious::Model::Permission.new
  perm.repository_id = repo.id
  perm.user_id = user.id
  perm.perm_read = permissions.include?("r")
  perm.perm_write = permissions.include?("w")

  perm.save!
end

#create(name) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/giticious/service/repository.rb', line 9

def create(name)
  path = "#{Dir.home}/repositories/#{name}.git"

  if init_repository(path) == false
    raise RuntimeError, "Could not initi Git repository"
  end

  repo = Giticious::Model::Repository.new
  repo.name = name
  repo.path = path

  repo.save!
end

#delete(name) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/giticious/service/repository.rb', line 23

def delete(name)
  repo = Giticious::Model::Repository.find_by_name(name)

  if repo.nil?
    raise ArgumentError, "The selected repository does not exist"
  end

  Giticious::Model::Permission.where(repository_id: repo.id).delete_all
  FileUtils.rm_rf("#{Dir.home}/repositories/#{repo.name}.git")

  repo.delete
end

#delete_user(repo_name, username) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/giticious/service/repository.rb', line 68

def delete_user(repo_name, username)
  repo = Giticious::Model::Repository.find_by_name(repo_name)

  if repo.nil?
    raise ArgumentError, "The selected repository does not exist"
  end

  user = Giticious::Model::User.find_by_username(username)

  if user.nil?
    raise ArgumentError, "The selected user does not exist"
  end

  perms = Giticious::Model::Permission.where(user_id: user.id, repository_id: repo.id)

  if perms.empty?
    raise ArgumentError, "This user does not have permissions"
  end

  perms.delete_all
end

#listObject



5
6
7
# File 'lib/giticious/service/repository.rb', line 5

def list
  Giticious::Model::Repository.all
end

#permissions(repo) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/giticious/service/repository.rb', line 36

def permissions(repo)
  repo = Giticious::Model::Repository.find_by_name(repo)

  if repo.nil?
    raise ArgumentError, "The selected repository does not exist"
  end

  repo.permissions
end

#permissions_for(repo_name, username) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/giticious/service/repository.rb', line 46

def permissions_for(repo_name, username)
  repo = Giticious::Model::Repository.find_by_name(repo_name)

  if repo.nil?
    raise ArgumentError, "The selected repository does not exist"
  end

  user = Giticious::Model::User.find_by_username(username)

  if user.nil?
    raise ArgumentError, "The selected user does not exist"
  end

  permissions = Giticious::Model::Permission.where(user_id: user.id, repository_id: repo.id)

  if permissions.empty?
    return false
  end

  return permissions.first!
end