Class: Groundskeeper::Project
- Inherits:
-
Object
- Object
- Groundskeeper::Project
- Defined in:
- lib/groundskeeper/project.rb
Overview
Accesses project details stored in the home directory.
Constant Summary collapse
- DETAILS_PATH =
"~/.project_details/projects.yml"- SERVERS_PATH =
"../../servers.yml"- JIRA_PREFIX_KEY =
"jira_prefix"- PROJECT_NAME_KEY =
"name"- SOURCE_CONTROL_USERNAME_KEY =
"scm_username"- FULL_DNS_KEY =
"full_dns"- RVM_RUBY_VERSION_KEY =
"ruby_version"- DB_ENV_VARIABLES_KEY =
"db_env_variables"- SENTRY_DSN_KEY =
"sentry_dsn"- SENTRY_PUBLIC_DSN_KEY =
"sentry_public_dsn"- SENTRY_PROJECT_KEY =
"sentry_project"- SSL_CERTIFICATE_FILE_KEY =
"SSLCertificateFile"- SSL_CERTIFICATE_CHAIN_FILE_KEY =
"SSLCertificateChainFile"- SSL_CERTIFICATE_KEY_FILE_KEY =
"SSLCertificateKeyFile"- WHENEVER_KEY =
"uses_whenever"
Instance Attribute Summary collapse
-
#details ⇒ Object
readonly
Returns the value of attribute details.
-
#repo_name ⇒ Object
readonly
Returns the value of attribute repo_name.
-
#servers ⇒ Object
readonly
Returns the value of attribute servers.
Class Method Summary collapse
Instance Method Summary collapse
-
#db_env_variables(stage) ⇒ Object
:nocov:.
-
#deploy_to ⇒ Object
:nocov:.
- #full_dns(stage) ⇒ Object
-
#initialize(projects_yaml:, servers_yaml:, repository_name:) ⇒ Project
constructor
:nocov:.
- #jira_prefix ⇒ Object
- #project_name ⇒ Object
-
#repo_url ⇒ Object
:nocov:.
-
#rvm_ruby_version ⇒ Object
:nocov:.
-
#sentry_dsn ⇒ Object
:nocov:.
-
#sentry_project ⇒ Object
:nocov:.
-
#sentry_public_dsn ⇒ Object
:nocov:.
-
#server_config(stage) ⇒ Object
:nocov:.
- #source_control_username ⇒ Object
-
#ssl_certificate_chain_file(stage) ⇒ Object
:nocov:.
-
#ssl_certificate_file(stage) ⇒ Object
:nocov:.
-
#ssl_certificate_key_file(stage) ⇒ Object
:nocov:.
-
#tags ⇒ Object
:nocov:.
-
#uses_whenever? ⇒ Boolean
:nocov:.
Constructor Details
#initialize(projects_yaml:, servers_yaml:, repository_name:) ⇒ Project
:nocov:
43 44 45 46 47 48 |
# File 'lib/groundskeeper/project.rb', line 43 def initialize(projects_yaml:, servers_yaml:, repository_name:) projects = YAML.safe_load(projects_yaml) || {} @details = projects[repository_name] || {} @servers = YAML.safe_load(servers_yaml) || {} @repo_name = repository_name end |
Instance Attribute Details
#details ⇒ Object (readonly)
Returns the value of attribute details.
9 10 11 |
# File 'lib/groundskeeper/project.rb', line 9 def details @details end |
#repo_name ⇒ Object (readonly)
Returns the value of attribute repo_name.
9 10 11 |
# File 'lib/groundskeeper/project.rb', line 9 def repo_name @repo_name end |
#servers ⇒ Object (readonly)
Returns the value of attribute servers.
9 10 11 |
# File 'lib/groundskeeper/project.rb', line 9 def servers @servers end |
Class Method Details
.available_applications ⇒ Object
:nocov:
36 37 38 39 40 |
# File 'lib/groundskeeper/project.rb', line 36 def self.available_applications yaml = Document.new(DETAILS_PATH).read projects = YAML.safe_load(yaml) || {} projects.keys.join(", ") end |
.build(repository_name) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/groundskeeper/project.rb', line 27 def self.build(repository_name) new( projects_yaml: Document.new(DETAILS_PATH).read, servers_yaml: Document.new(SERVERS_PATH).read, repository_name: repository_name ) end |
Instance Method Details
#db_env_variables(stage) ⇒ Object
:nocov:
67 68 69 |
# File 'lib/groundskeeper/project.rb', line 67 def db_env_variables(stage) details.dig(DB_ENV_VARIABLES_KEY, stage.to_s) || "" end |
#deploy_to ⇒ Object
:nocov:
131 132 133 |
# File 'lib/groundskeeper/project.rb', line 131 def deploy_to "/var/www/apps/#{repo_name}" end |
#full_dns(stage) ⇒ Object
62 63 64 |
# File 'lib/groundskeeper/project.rb', line 62 def full_dns(stage) details.dig(FULL_DNS_KEY, stage.to_s) || "" end |
#jira_prefix ⇒ Object
54 55 56 |
# File 'lib/groundskeeper/project.rb', line 54 def jira_prefix details[JIRA_PREFIX_KEY] || "" end |
#project_name ⇒ Object
50 51 52 |
# File 'lib/groundskeeper/project.rb', line 50 def project_name details[PROJECT_NAME_KEY] || "" end |
#repo_url ⇒ Object
:nocov:
125 126 127 |
# File 'lib/groundskeeper/project.rb', line 125 def repo_url "[email protected]:#{source_control_username}/#{repo_name}.git" end |
#rvm_ruby_version ⇒ Object
:nocov:
73 74 75 |
# File 'lib/groundskeeper/project.rb', line 73 def rvm_ruby_version details[RVM_RUBY_VERSION_KEY] || "" end |
#sentry_dsn ⇒ Object
:nocov:
79 80 81 |
# File 'lib/groundskeeper/project.rb', line 79 def sentry_dsn details[SENTRY_DSN_KEY] || "" end |
#sentry_project ⇒ Object
:nocov:
90 91 92 |
# File 'lib/groundskeeper/project.rb', line 90 def sentry_project details[SENTRY_PROJECT_KEY] || "" end |
#sentry_public_dsn ⇒ Object
:nocov:
85 86 87 |
# File 'lib/groundskeeper/project.rb', line 85 def sentry_public_dsn details[SENTRY_PUBLIC_DSN_KEY] || "" end |
#server_config(stage) ⇒ Object
:nocov:
119 120 121 |
# File 'lib/groundskeeper/project.rb', line 119 def server_config(stage) servers[full_dns(stage)] end |
#source_control_username ⇒ Object
58 59 60 |
# File 'lib/groundskeeper/project.rb', line 58 def source_control_username details[SOURCE_CONTROL_USERNAME_KEY] || "" end |
#ssl_certificate_chain_file(stage) ⇒ Object
:nocov:
101 102 103 |
# File 'lib/groundskeeper/project.rb', line 101 def ssl_certificate_chain_file(stage) details.dig(SSL_CERTIFICATE_CHAIN_FILE_KEY, stage.to_s) || "" end |
#ssl_certificate_file(stage) ⇒ Object
:nocov:
95 96 97 |
# File 'lib/groundskeeper/project.rb', line 95 def ssl_certificate_file(stage) details.dig(SSL_CERTIFICATE_FILE_KEY, stage.to_s) || "" end |
#ssl_certificate_key_file(stage) ⇒ Object
:nocov:
107 108 109 |
# File 'lib/groundskeeper/project.rb', line 107 def ssl_certificate_key_file(stage) details.dig(SSL_CERTIFICATE_KEY_FILE_KEY, stage.to_s) || "" end |
#tags ⇒ Object
:nocov:
137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/groundskeeper/project.rb', line 137 def api_url = "https://api.github.com/repos/" \ "#{source_control_username}/#{repo_name}/tags" = "Authorization: token #{ENV['GITHUB_API_TOKEN']}" response = JSON.parse(`curl -s -H "#{}" #{api_url}`) unless response.is_a?(Array) = response["message"] puts "Failed to obtain response: #{}" return [] end response.map { |h| h["name"] } end |
#uses_whenever? ⇒ Boolean
:nocov:
113 114 115 |
# File 'lib/groundskeeper/project.rb', line 113 def uses_whenever? details[WHENEVER_KEY] == true end |