class Sem::API::Project

Attributes

org_name[R]

Public Class Methods

all() click to toggle source
# File lib/sem/api/project.rb, line 4
def self.all
  Sem::API::Org.all.map(&:projects).flatten
end
create!(project_srn, args) click to toggle source
# File lib/sem/api/project.rb, line 23
def self.create!(project_srn, args)
  org_name, name = Sem::SRN.parse_project(project_srn)

  project = client.projects.create_for_org!(org_name, args.merge(:name => name))

  new(org_name, project)
rescue SemaphoreClient::Exceptions::NotFound
  raise Sem::Errors::ResourceNotFound.new("Organization", [org_name])
end
find!(project_srn) click to toggle source
# File lib/sem/api/project.rb, line 8
def self.find!(project_srn)
  org_name, project_name = Sem::SRN.parse_project(project_srn)

  projects = client.projects.list_for_org!(org_name, :name => project_name)
  project = projects.to_a.first

  if project.nil?
    raise Sem::Errors::ResourceNotFound.new("Project", [org_name, project_name])
  end

  new(org_name, project)
rescue SemaphoreClient::Exceptions::NotFound
  raise Sem::Errors::ResourceNotFound.new("Project", [org_name, project_name])
end
new(org_name, project) click to toggle source
Calls superclass method
# File lib/sem/api/project.rb, line 35
def initialize(org_name, project)
  @org_name = org_name

  super(project)
end

Public Instance Methods

add_config_file(config_file) click to toggle source
# File lib/sem/api/project.rb, line 73
def add_config_file(config_file)
  Sem::API::Base.client.config_files.attach_to_project!(config_file.id, id)
end
add_env_var(env_var) click to toggle source
# File lib/sem/api/project.rb, line 69
def add_env_var(env_var)
  Sem::API::Base.client.env_vars.attach_to_project!(env_var.id, id)
end
add_secret(secret) click to toggle source
# File lib/sem/api/project.rb, line 49
def add_secret(secret)
  Sem::API::Base.client.secrets.attach_to_project!(secret.id, id)
rescue SemaphoreClient::Exceptions::NotFound
  raise Sem::Errors::ResourceNotFound.new("Secret", [secret.full_name])
end
config_files() click to toggle source
# File lib/sem/api/project.rb, line 61
def config_files
  Sem::API::Base.client.config_files.list_for_project!(id).map { |file| Sem::API::File.new(file) }
end
env_vars() click to toggle source
# File lib/sem/api/project.rb, line 65
def env_vars
  Sem::API::Base.client.env_vars.list_for_project!(id).map { |var| Sem::API::EnvVar.new(var) }
end
full_name() click to toggle source
# File lib/sem/api/project.rb, line 41
def full_name
  "#{@org_name}/#{name}"
end
remove_secret(secret) click to toggle source
# File lib/sem/api/project.rb, line 55
def remove_secret(secret)
  Sem::API::Base.client.secrets.detach_from_project!(secret.id, id)
rescue SemaphoreClient::Exceptions::NotFound
  raise Sem::Errors::ResourceNotFound.new("Secret", [secret.full_name])
end
secrets() click to toggle source
# File lib/sem/api/project.rb, line 45
def secrets
  Sem::API::Base.client.secrets.list_for_project!(id).map { |secret| Sem::API::Secret.new(org_name, secret) }
end