16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
# File 'lib/renuo/cli.rb', line 16
def start
require 'commander/import'
program :version, Renuo::Cli::VERSION
program :description, 'renuo CLI'
command 'display-name'.to_sym do |c|
c.syntax = 'renuo display-name [options]'
c.summary = 'Sets the name of a customer on the Renuo dashboard'
c.description = 'Sets the name of a customer on the Renuo dashboard'
c.example 'Display "Peter Muster" on the dashboard', 'renuo display-name "Peter Muster"'
c.example 'Remove the current name from the dashboard', 'renuo display-name --delete'
c.option '--delete', 'Deletes the current name'
c.action do |args, options|
NameDisplay.new.run(args, options)
end
end
command :config do |c|
c.syntax = 'renuo config [options]'
c.summary = 'Setup the config (API keys)'
c.description = 'Setup the config (API keys)'
c.action do
key = ask('API Key?') { |q| q.echo = '*' }
LocalStorage.new.store(:api_key, key)
say('stored the api key')
end
end
command 'list-large-git-files' do |c|
c.syntax = 'renuo list-large-git-files'
c.summary = 'Lists the 5 largest files in a git repository. Warning: must be a bare checkout of the repo!'
c.description = "Lists the 5 largest files in a git repository.\nWarning: must be a bare checkout of the repo!"
c.example 'list the 5 largest git files of github.com/renuo/renuo-cli',
'git clone --bare [email protected]:renuo/renuo-cli.git && '\
'cd renuo-cli.git && renuo list-large-git-files'
c.action do
ListLargeGitFiles.new.run
end
end
command 'generate-password' do |c|
c.syntax = 'renuo generate-password'
c.summary = 'Generates a phrase of random 0-9a-zA-Z characters. Choose a substring of it as a new password.'
c.description = 'Generates a phrase of random 0-9a-zA-Z characters. Choose a substring of it as a new password.'
c.example 'renuo generate-password', 'generates a random password'
c.action do
GeneratePassword.new.run
end
end
command 'upgrade-laptop' do |c|
c.syntax = 'renuo upgrade-laptop'
c.summary = 'Upgrades the installed apps from the app store, macOS and homebrew'
c.description = 'Upgrades the installed apps from the app store, macOS and homebrew'
c.example 'renuo upgrade-laptop', 'upgrades your laptop'
c.action do
UpgradeLaptop.new.run
end
end
command 'create-new-logins' do |c|
c.syntax = 'renuo create-new-logins'
c.summary = 'Guides you through the sign up pages for Sentry, NewRelic and Gemnasium'
c.description = 'Guides you through the sign up pages for Sentry, NewRelic and Gemnasium'
c.example 'renuo create-new-logins', 'creates new logins'
c.action do
CreateNewLogins.new.run
end
end
command 'create-aws-project' do |c|
c.syntax = 'renuo create-aws-project'
c.summary = 'Generates necessary commands for our project setup on AWS incl. necessary installations.'
c.description = <<-DESCRIPTION
This creates commands for creating AWS users, buckets an versioning policies and CloudFront.
It also guides you to set up the necessary environment.
You will be asked for:
(- installation of aws-cli, if not yet done)
(- setting up aws user `renuo-app-setup`, if not yet done)
- project name and suffix so that the script can respect our naming conventions
- the Redmine project name to tag buckets for AWS billing references
- whether you want to setup CloudFront to deliver assets via S3
The generated commands do the following:
- create an IAM user for each environment (master, develop, testing) and add it to the renuo apps group.
- create S3 buckets for each user who owns it
- tag the buckets
- enable versioning for master buckets
(- set up a CloudFront distribution for each environment with the default config or plus alias if configured)
DESCRIPTION
c.example 'Setup a project (you will be asked for details)', 'renuo create-aws-project'
c.action do |_args, _options|
CreateAwsProject.new.run
end
end
command 'application-setup-auto-config' do |c|
c.syntax = 'renuo application-setup-auto-config'
c.summary = 'Sets up the application setup using the default config'
c.description = 'Generates a phrase of random 0-9a-zA-Z characters. Choose a substring of it as a new password.'
c.example 'renuo application-setup-auto-config', 'applies the default config'
c.action do
ApplicationSetupAutoConfig.new.run
end
end
command 'release' do |c|
c.syntax = 'renuo release'
c.summary = 'Deploy a project to master in one command.'
c.description = 'Deploys a project to master as either a Major, Minor, Patch or Custom release.'
c.example 'renuo release my-project minor', 'release a minor release of my-project'
c.example 'renuo release my-project custom 2.5.0', 'release my-project as release 2.5.0'
c.action do|args|
ReleaseProject.new.run(args)
end
end
end
|