startapp 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. checksums.yaml +7 -0
  2. data/COPYRIGHT +1 -0
  3. data/LICENSE +11 -0
  4. data/README.md +95 -0
  5. data/Rakefile +6 -0
  6. data/autocomplete/rhc_bash +1672 -0
  7. data/bin/app +37 -0
  8. data/conf/express.conf +8 -0
  9. data/features/assets/deploy.tar.gz +0 -0
  10. data/features/core_feature.rb +191 -0
  11. data/features/deployments_feature.rb +129 -0
  12. data/features/domains_feature.rb +58 -0
  13. data/features/keys_feature.rb +37 -0
  14. data/features/members_feature.rb +166 -0
  15. data/lib/rhc/auth/basic.rb +64 -0
  16. data/lib/rhc/auth/token.rb +102 -0
  17. data/lib/rhc/auth/token_store.rb +53 -0
  18. data/lib/rhc/auth.rb +5 -0
  19. data/lib/rhc/autocomplete.rb +66 -0
  20. data/lib/rhc/autocomplete_templates/bash.erb +39 -0
  21. data/lib/rhc/cartridge_helpers.rb +118 -0
  22. data/lib/rhc/cli.rb +40 -0
  23. data/lib/rhc/command_runner.rb +185 -0
  24. data/lib/rhc/commands/account.rb +25 -0
  25. data/lib/rhc/commands/alias.rb +124 -0
  26. data/lib/rhc/commands/app.rb +726 -0
  27. data/lib/rhc/commands/apps.rb +20 -0
  28. data/lib/rhc/commands/authorization.rb +115 -0
  29. data/lib/rhc/commands/base.rb +174 -0
  30. data/lib/rhc/commands/cartridge.rb +329 -0
  31. data/lib/rhc/commands/clone.rb +66 -0
  32. data/lib/rhc/commands/configure.rb +20 -0
  33. data/lib/rhc/commands/create.rb +100 -0
  34. data/lib/rhc/commands/delete.rb +19 -0
  35. data/lib/rhc/commands/deploy.rb +32 -0
  36. data/lib/rhc/commands/deployment.rb +82 -0
  37. data/lib/rhc/commands/domain.rb +172 -0
  38. data/lib/rhc/commands/env.rb +142 -0
  39. data/lib/rhc/commands/force_stop.rb +17 -0
  40. data/lib/rhc/commands/git_clone.rb +34 -0
  41. data/lib/rhc/commands/logout.rb +51 -0
  42. data/lib/rhc/commands/logs.rb +21 -0
  43. data/lib/rhc/commands/member.rb +148 -0
  44. data/lib/rhc/commands/port_forward.rb +197 -0
  45. data/lib/rhc/commands/reload.rb +17 -0
  46. data/lib/rhc/commands/restart.rb +17 -0
  47. data/lib/rhc/commands/scp.rb +54 -0
  48. data/lib/rhc/commands/server.rb +40 -0
  49. data/lib/rhc/commands/setup.rb +60 -0
  50. data/lib/rhc/commands/show.rb +43 -0
  51. data/lib/rhc/commands/snapshot.rb +137 -0
  52. data/lib/rhc/commands/ssh.rb +51 -0
  53. data/lib/rhc/commands/sshkey.rb +97 -0
  54. data/lib/rhc/commands/start.rb +17 -0
  55. data/lib/rhc/commands/stop.rb +17 -0
  56. data/lib/rhc/commands/tail.rb +47 -0
  57. data/lib/rhc/commands/threaddump.rb +14 -0
  58. data/lib/rhc/commands/tidy.rb +17 -0
  59. data/lib/rhc/commands.rb +396 -0
  60. data/lib/rhc/config.rb +321 -0
  61. data/lib/rhc/context_helper.rb +121 -0
  62. data/lib/rhc/core_ext.rb +202 -0
  63. data/lib/rhc/coverage_helper.rb +33 -0
  64. data/lib/rhc/deployment_helpers.rb +111 -0
  65. data/lib/rhc/exceptions.rb +256 -0
  66. data/lib/rhc/git_helpers.rb +106 -0
  67. data/lib/rhc/help_formatter.rb +55 -0
  68. data/lib/rhc/helpers.rb +481 -0
  69. data/lib/rhc/highline_extensions.rb +479 -0
  70. data/lib/rhc/json.rb +51 -0
  71. data/lib/rhc/output_helpers.rb +260 -0
  72. data/lib/rhc/rest/activation.rb +11 -0
  73. data/lib/rhc/rest/alias.rb +42 -0
  74. data/lib/rhc/rest/api.rb +87 -0
  75. data/lib/rhc/rest/application.rb +348 -0
  76. data/lib/rhc/rest/attributes.rb +36 -0
  77. data/lib/rhc/rest/authorization.rb +8 -0
  78. data/lib/rhc/rest/base.rb +79 -0
  79. data/lib/rhc/rest/cartridge.rb +162 -0
  80. data/lib/rhc/rest/client.rb +650 -0
  81. data/lib/rhc/rest/deployment.rb +18 -0
  82. data/lib/rhc/rest/domain.rb +98 -0
  83. data/lib/rhc/rest/environment_variable.rb +15 -0
  84. data/lib/rhc/rest/gear_group.rb +16 -0
  85. data/lib/rhc/rest/httpclient.rb +145 -0
  86. data/lib/rhc/rest/key.rb +44 -0
  87. data/lib/rhc/rest/membership.rb +105 -0
  88. data/lib/rhc/rest/mock.rb +1042 -0
  89. data/lib/rhc/rest/user.rb +32 -0
  90. data/lib/rhc/rest.rb +148 -0
  91. data/lib/rhc/scp_helpers.rb +27 -0
  92. data/lib/rhc/ssh_helpers.rb +380 -0
  93. data/lib/rhc/tar_gz.rb +51 -0
  94. data/lib/rhc/usage_templates/command_help.erb +51 -0
  95. data/lib/rhc/usage_templates/command_syntax_help.erb +11 -0
  96. data/lib/rhc/usage_templates/help.erb +61 -0
  97. data/lib/rhc/usage_templates/missing_help.erb +1 -0
  98. data/lib/rhc/usage_templates/options_help.erb +12 -0
  99. data/lib/rhc/vendor/okjson.rb +600 -0
  100. data/lib/rhc/vendor/parseconfig.rb +178 -0
  101. data/lib/rhc/vendor/sshkey.rb +253 -0
  102. data/lib/rhc/vendor/zliby.rb +628 -0
  103. data/lib/rhc/version.rb +5 -0
  104. data/lib/rhc/wizard.rb +637 -0
  105. data/lib/rhc.rb +34 -0
  106. data/spec/coverage_helper.rb +82 -0
  107. data/spec/direct_execution_helper.rb +339 -0
  108. data/spec/keys/example.pem +23 -0
  109. data/spec/keys/example_private.pem +27 -0
  110. data/spec/keys/server.pem +19 -0
  111. data/spec/rest_spec_helper.rb +31 -0
  112. data/spec/rhc/assets/cert.crt +22 -0
  113. data/spec/rhc/assets/cert_key_rsa +27 -0
  114. data/spec/rhc/assets/empty.txt +0 -0
  115. data/spec/rhc/assets/env_vars.txt +7 -0
  116. data/spec/rhc/assets/env_vars_2.txt +1 -0
  117. data/spec/rhc/assets/foo.txt +1 -0
  118. data/spec/rhc/assets/targz_corrupted.tar.gz +1 -0
  119. data/spec/rhc/assets/targz_sample.tar.gz +0 -0
  120. data/spec/rhc/auth_spec.rb +442 -0
  121. data/spec/rhc/cli_spec.rb +186 -0
  122. data/spec/rhc/command_spec.rb +435 -0
  123. data/spec/rhc/commands/account_spec.rb +42 -0
  124. data/spec/rhc/commands/alias_spec.rb +333 -0
  125. data/spec/rhc/commands/app_spec.rb +777 -0
  126. data/spec/rhc/commands/apps_spec.rb +39 -0
  127. data/spec/rhc/commands/authorization_spec.rb +157 -0
  128. data/spec/rhc/commands/cartridge_spec.rb +665 -0
  129. data/spec/rhc/commands/clone_spec.rb +41 -0
  130. data/spec/rhc/commands/deployment_spec.rb +327 -0
  131. data/spec/rhc/commands/domain_spec.rb +401 -0
  132. data/spec/rhc/commands/env_spec.rb +493 -0
  133. data/spec/rhc/commands/git_clone_spec.rb +102 -0
  134. data/spec/rhc/commands/logout_spec.rb +86 -0
  135. data/spec/rhc/commands/member_spec.rb +247 -0
  136. data/spec/rhc/commands/port_forward_spec.rb +217 -0
  137. data/spec/rhc/commands/scp_spec.rb +77 -0
  138. data/spec/rhc/commands/server_spec.rb +69 -0
  139. data/spec/rhc/commands/setup_spec.rb +118 -0
  140. data/spec/rhc/commands/snapshot_spec.rb +179 -0
  141. data/spec/rhc/commands/ssh_spec.rb +163 -0
  142. data/spec/rhc/commands/sshkey_spec.rb +188 -0
  143. data/spec/rhc/commands/tail_spec.rb +81 -0
  144. data/spec/rhc/commands/threaddump_spec.rb +84 -0
  145. data/spec/rhc/config_spec.rb +407 -0
  146. data/spec/rhc/helpers_spec.rb +531 -0
  147. data/spec/rhc/highline_extensions_spec.rb +314 -0
  148. data/spec/rhc/json_spec.rb +30 -0
  149. data/spec/rhc/rest_application_spec.rb +258 -0
  150. data/spec/rhc/rest_client_spec.rb +752 -0
  151. data/spec/rhc/rest_spec.rb +740 -0
  152. data/spec/rhc/targz_spec.rb +55 -0
  153. data/spec/rhc/wizard_spec.rb +756 -0
  154. data/spec/spec_helper.rb +575 -0
  155. data/spec/wizard_spec_helper.rb +330 -0
  156. metadata +469 -0
@@ -0,0 +1,124 @@
1
+ require 'rhc/commands/base'
2
+ require 'rhc/config'
3
+
4
+ module RHC::Commands
5
+ class Alias < Base
6
+ summary "Add or remove a custom domain name for an app"
7
+ syntax "<action>"
8
+ description <<-DESC
9
+ Each application may have one or more custom domain names (known as
10
+ aliases) mapped to it. You may then configure your custom DNS entry
11
+ CNAME to point to your OpenShift application to serve web requests
12
+ from that name.
13
+
14
+ Each alias may have a single SSL certificate associated with the name
15
+ to handle SSL traffic. See the 'add' command for more info.
16
+ DESC
17
+ default_action :help
18
+
19
+ summary "Add a custom domain name for the application"
20
+ syntax "<application> <alias> [--namespace NAME]"
21
+ takes_application :argument => true
22
+ argument :app_alias, "Custom domain name for the application", []
23
+ alias_action :"app add-alias", :root_command => true, :deprecated => true
24
+ def add(app, app_alias)
25
+ rest_app = find_app
26
+ rest_app.add_alias(app_alias)
27
+ success "Alias '#{app_alias}' has been added."
28
+ 0
29
+ end
30
+
31
+ summary "Remove a custom domain name for the application"
32
+ syntax "<application> <alias> [--namespace NAME]"
33
+ takes_application :argument => true
34
+ argument :app_alias, "Custom domain name for the application", []
35
+ alias_action :"app remove-alias", :root_command => true, :deprecated => true
36
+ def remove(app, app_alias)
37
+ rest_app = find_app
38
+ rest_app.remove_alias(app_alias)
39
+ success "Alias '#{app_alias}' has been removed."
40
+ 0
41
+ end
42
+
43
+ summary "Add or change the SSL certificate for an existing alias"
44
+ description <<-DESC
45
+ Add or update the SSL certificate for your custom domain alias to
46
+ allow secure HTTPS communication with your app.
47
+
48
+ Certificate files must be Base64 PEM-encoded and typically have a
49
+ .crt or .pem extension. You may combine multiple certificates and
50
+ certificate chains in a single file. The RSA or DSA private key
51
+ must always be provided in a separate file.
52
+
53
+ Pass phrase for the certificate private key is required if the
54
+ provided private key is encrypted.
55
+ DESC
56
+ syntax "<application> <alias> --certificate FILE --private-key FILE [--passphrase PASSPHRASE]"
57
+ takes_application :argument => true
58
+ argument :app_alias, "Custom domain name for the application (required)", []
59
+ option ["--certificate FILE"], "SSL certificate filepath (file in .crt or .pem format)", :required => true
60
+ option ["--private-key FILE"], "Private key filepath for the given SSL certificate", :required => true
61
+ option ["--passphrase PASSPHRASE"], "Private key pass phrase, required if the private key is encrypted", :required => false
62
+ def update_cert(app, app_alias)
63
+ certificate_file_path = options.certificate
64
+ raise ArgumentError, "Certificate file not found: #{certificate_file_path}" if !File.exist?(certificate_file_path) || !File.file?(certificate_file_path)
65
+
66
+ private_key_file_path = options.private_key
67
+ raise ArgumentError, "Private key file not found: #{private_key_file_path}" if !File.exist?(private_key_file_path) || !File.file?(private_key_file_path)
68
+
69
+ certificate_content = File.read(certificate_file_path)
70
+ raise ArgumentError, "Invalid certificate file: #{certificate_file_path} is empty" if certificate_content.to_s.strip.length == 0
71
+
72
+ private_key_content = File.read(private_key_file_path)
73
+ raise ArgumentError, "Invalid private key file: #{private_key_file_path} is empty" if private_key_content.to_s.strip.length == 0
74
+
75
+ rest_app = find_app
76
+ rest_alias = rest_app.find_alias(app_alias)
77
+ if rest_client.api_version_negotiated >= 1.4
78
+ rest_alias.add_certificate(certificate_content, private_key_content, options.passphrase)
79
+ success "SSL certificate successfully added."
80
+ 0
81
+ else
82
+ raise RHC::Rest::SslCertificatesNotSupported, "The server does not support SSL certificates for custom aliases."
83
+ end
84
+ end
85
+
86
+ summary "Delete the SSL certificate from an existing alias"
87
+ syntax "<application> <alias>"
88
+ takes_application :argument => true
89
+ argument :app_alias, "Custom domain name for the application (required)", []
90
+ option ["--confirm"], "Pass to confirm deleting the application"
91
+ def delete_cert(app, app_alias)
92
+ rest_app = find_app
93
+ rest_alias = rest_app.find_alias(app_alias)
94
+ if rest_client.api_version_negotiated >= 1.4
95
+ confirm_action "#{color("This is a non-reversible action! Your SSL certificate will be permanently deleted from application '#{app}'.", :yellow)}\n\nAre you sure you want to delete the SSL certificate?"
96
+ rest_alias.delete_certificate
97
+ success "SSL certificate successfully deleted."
98
+ 0
99
+ else
100
+ raise RHC::Rest::SslCertificatesNotSupported, "The server does not support SSL certificates for custom aliases."
101
+ end
102
+ end
103
+
104
+ summary "List the aliases on an application"
105
+ syntax "<application>"
106
+ takes_application :argument => true
107
+ alias_action "aliases", :root_command => true
108
+ def list(app)
109
+ rest_app = find_app
110
+ items = rest_app.aliases.map do |a|
111
+ a.is_a?(String) ?
112
+ [a, 'no', '-'] :
113
+ [a.id, a.has_private_ssl_certificate? ? 'yes' : 'no', a.has_private_ssl_certificate? ? Date.parse(a.certificate_added_at) : '-']
114
+ end
115
+ if items.empty?
116
+ info "No aliases associated with the application #{app}."
117
+ else
118
+ say table(items, :header => ["Alias", "Has Certificate?", "Certificate Added"])
119
+ end
120
+ 0
121
+ end
122
+
123
+ end
124
+ end