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
- #deploy_to ⇒ Object
- #full_dns(stage) ⇒ Object
-
#initialize(projects_yaml:, servers_yaml:, repository_name:) ⇒ Project
constructor
A new instance of Project.
- #jira_prefix ⇒ Object
- #project_name ⇒ Object
- #repo_url ⇒ Object
- #rvm_ruby_version ⇒ Object
- #sentry_dsn ⇒ Object
- #sentry_project ⇒ Object
- #sentry_public_dsn ⇒ Object
- #server_config(stage) ⇒ Object
- #source_control_username ⇒ Object
- #ssl_certificate_chain_file(stage) ⇒ Object
- #ssl_certificate_file(stage) ⇒ Object
- #ssl_certificate_key_file(stage) ⇒ Object
- #tags ⇒ Object
- #uses_whenever? ⇒ Boolean
Constructor Details
#initialize(projects_yaml:, servers_yaml:, repository_name:) ⇒ Project
41 42 43 44 45 46 |
# File 'lib/groundskeeper/project.rb', line 41 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
35 36 37 38 39 |
# File 'lib/groundskeeper/project.rb', line 35 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
64 65 66 |
# File 'lib/groundskeeper/project.rb', line 64 def db_env_variables(stage) details.dig(DB_ENV_VARIABLES_KEY, stage.to_s) || "" end |
#deploy_to ⇒ Object
108 109 110 |
# File 'lib/groundskeeper/project.rb', line 108 def deploy_to "/var/www/apps/#{repo_name}" end |
#full_dns(stage) ⇒ Object
60 61 62 |
# File 'lib/groundskeeper/project.rb', line 60 def full_dns(stage) details.dig(FULL_DNS_KEY, stage.to_s) || "" end |
#jira_prefix ⇒ Object
52 53 54 |
# File 'lib/groundskeeper/project.rb', line 52 def jira_prefix details[JIRA_PREFIX_KEY] || "" end |
#project_name ⇒ Object
48 49 50 |
# File 'lib/groundskeeper/project.rb', line 48 def project_name details[PROJECT_NAME_KEY] || "" end |
#repo_url ⇒ Object
104 105 106 |
# File 'lib/groundskeeper/project.rb', line 104 def repo_url "[email protected]:#{source_control_username}/#{repo_name}.git" end |
#rvm_ruby_version ⇒ Object
68 69 70 |
# File 'lib/groundskeeper/project.rb', line 68 def rvm_ruby_version details[RVM_RUBY_VERSION_KEY] || "" end |
#sentry_dsn ⇒ Object
72 73 74 |
# File 'lib/groundskeeper/project.rb', line 72 def sentry_dsn details[SENTRY_DSN_KEY] || "" end |
#sentry_project ⇒ Object
80 81 82 |
# File 'lib/groundskeeper/project.rb', line 80 def sentry_project details[SENTRY_PROJECT_KEY] || "" end |
#sentry_public_dsn ⇒ Object
76 77 78 |
# File 'lib/groundskeeper/project.rb', line 76 def sentry_public_dsn details[SENTRY_PUBLIC_DSN_KEY] || "" end |
#server_config(stage) ⇒ Object
100 101 102 |
# File 'lib/groundskeeper/project.rb', line 100 def server_config(stage) servers[full_dns(stage)] end |
#source_control_username ⇒ Object
56 57 58 |
# File 'lib/groundskeeper/project.rb', line 56 def source_control_username details[SOURCE_CONTROL_USERNAME_KEY] || "" end |
#ssl_certificate_chain_file(stage) ⇒ Object
88 89 90 |
# File 'lib/groundskeeper/project.rb', line 88 def ssl_certificate_chain_file(stage) details.dig(SSL_CERTIFICATE_CHAIN_FILE_KEY, stage.to_s) || "" end |
#ssl_certificate_file(stage) ⇒ Object
84 85 86 |
# File 'lib/groundskeeper/project.rb', line 84 def ssl_certificate_file(stage) details.dig(SSL_CERTIFICATE_FILE_KEY, stage.to_s) || "" end |
#ssl_certificate_key_file(stage) ⇒ Object
92 93 94 |
# File 'lib/groundskeeper/project.rb', line 92 def ssl_certificate_key_file(stage) details.dig(SSL_CERTIFICATE_KEY_FILE_KEY, stage.to_s) || "" end |
#tags ⇒ Object
112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/groundskeeper/project.rb', line 112 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 "#{authorization_header}" #{api_url}`) unless response.is_a?(Array) = response["message"] puts "Failed to obtain response: #{message}" return [] end response.map { |h| h["name"] } end |
#uses_whenever? ⇒ Boolean
96 97 98 |
# File 'lib/groundskeeper/project.rb', line 96 def uses_whenever? details[WHENEVER_KEY] == true end |