renuo-cli 3.0.0 → 3.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea4e597c6888d4eb5472df3d1fdc496afe3ff1ab16ce2ce9f20602da6c2ccc40
4
- data.tar.gz: 3fef697d445ab64c2d62c4adf62d5c4718e56c2243b64237bc3f9cf8e1255b06
3
+ metadata.gz: b15431d56265376a769e662fd9b467c0c1b0753a5b27e4429821ec37e87f9e01
4
+ data.tar.gz: 29a10806d01da5cbb8b2a2946fdeb5226fd3cdafc36c4bec15cf0cc20a6f88ec
5
5
  SHA512:
6
- metadata.gz: 8f57de9f499fd37447d94675a063e3e2f6eb76d94b7d47c182048036faa92d91b89877beb579683717990f872caba2c4adfddcfc0adc23b79e5e5ff9351584c9
7
- data.tar.gz: 28f034598160faef73f8ae55c26f7c3dae0a772e0500498881e56a3ce4d83e32cefecbdb63a18c3205e27f860c42ad79ae248650f071e38b1db98c41d14d9c03
6
+ metadata.gz: 69a90927c91e4b854c7cf2d9ed57ac4d3a27573c446c9232d951815e36e66cdc46cbdeecf299579837cedaa1536ab9190610645e747626628d713cb61af0fc23
7
+ data.tar.gz: ce3f379d8e365792f82024d3aa12a1d13ed697ffd85b50ff41bc10f112ee230a3c2c78991fb9b484faaf716906624f2786114b035c63d0f3cb9ca9598c887382
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.2
1
+ 2.7.5
@@ -1,17 +1,17 @@
1
1
  version: v1.0
2
- name: master-deploy
2
+ name: main-deploy
3
3
  agent:
4
4
  machine:
5
5
  type: e1-standard-2
6
6
  os_image: ubuntu1804
7
7
 
8
8
  blocks:
9
- - name: master-deploy
9
+ - name: main-deploy
10
10
  task:
11
11
  secrets:
12
12
  - name: rubygems-deploy
13
13
  jobs:
14
- - name: master-deploy
14
+ - name: main-deploy
15
15
  commands:
16
16
  - checkout --use-cache
17
17
  - gem build renuo-cli
@@ -9,7 +9,7 @@ auto_cancel:
9
9
  when: "true"
10
10
  fail_fast:
11
11
  cancel:
12
- when: "branch != 'master'"
12
+ when: "branch != 'main'"
13
13
 
14
14
  blocks:
15
15
  - name: tests
@@ -30,5 +30,5 @@ blocks:
30
30
  commands:
31
31
  - bin/check
32
32
  promotions:
33
- - name: master
34
- pipeline_file: master-deploy.yml
33
+ - name: main
34
+ pipeline_file: main-deploy.yml
@@ -0,0 +1,18 @@
1
+ module CommandHelper
2
+ def run_command(command)
3
+ say "\n#{command.yellow}"
4
+ system command
5
+ end
6
+
7
+ def open_path(path)
8
+ system_command = case RbConfig::CONFIG['host_os']
9
+ when /mswin|mingw|cygwin/
10
+ 'start'
11
+ when /darwin/
12
+ 'open'
13
+ when /linux|bsd/
14
+ 'xdg-open'
15
+ end
16
+ run_command "#{system_command} #{path}"
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  class CreateNewLogins
2
- include RunCommand
2
+ include CommandHelper
3
3
 
4
4
  @logins = [{ name: 'Sentry', sign_up_url: 'https://sentry.io/organizations/renuo/members/new/',
5
5
  steps: ['Click on add new Member'] },
@@ -20,8 +20,7 @@ class CreateNewLogins
20
20
  private
21
21
 
22
22
  def open_site(website)
23
- say website.blue
24
- system "open '#{website}'"
23
+ open_path(website)
25
24
  wait_to_continue
26
25
  end
27
26
 
@@ -1,17 +1,33 @@
1
+ require_relative 'command_helper'
2
+
1
3
  class NameDisplay
4
+ include CommandHelper
5
+
2
6
  def run(args, options)
3
- return display_name('') if options.delete
7
+ return open_path(SLIDES) if options.monitor
8
+ return display_name(nil) if options.delete
9
+ return say('empty argument') if args.empty?
4
10
 
5
- return say('invalid customer name') if args.empty?
11
+ return run_heroku_command(args.join(' ')) if options.override
6
12
 
7
13
  display_name(args.join(' '))
8
14
  end
9
15
 
16
+ private
17
+
18
+ HEROKU_APP_NAME = '-a renuo-dashboard-master'.freeze
19
+ HEROKU_CLI = 'heroku run'.freeze
20
+ RENUO_CLI = 'rails renuo:welcome'.freeze
21
+ SLIDES = 'https://docs.google.com/presentation/d/1mPhQjArZnlUWUa2ik5R9IlGmdCKCwc2_H8Qq-AWgV-A/edit'.freeze
22
+ WELCOME_MESSAGE = 'Welcome to Renuo'.freeze
23
+
10
24
  def display_name(name)
11
- puts "TODO: display #{name}"
25
+ text_message = [WELCOME_MESSAGE, name, '🥳🔥'].compact.join(' ')
26
+ run_heroku_command(text_message)
12
27
  end
13
28
 
14
- def delete_current
15
- display_name('')
29
+ def run_heroku_command(text_message)
30
+ rails_command = "\"#{RENUO_CLI}['#{text_message}']\""
31
+ run_command([HEROKU_CLI, rails_command, HEROKU_APP_NAME].join(' '))
16
32
  end
17
33
  end
@@ -1,15 +1,18 @@
1
+ require_relative 'command_helper'
2
+
1
3
  class ReleaseProject
4
+ include CommandHelper
5
+
2
6
  UPDATE_TYPES = %w[major minor patch custom].freeze
3
7
  TMP_FOLDER_NAME = "_RENUO_RELEASE_TEMP_#{rand(100_000_000)}".freeze
4
8
  MOVE_TO_TMP_FOLDER = "mkdir -p #{TMP_FOLDER_NAME} && cd #{TMP_FOLDER_NAME}".freeze
5
9
 
6
10
  def run(args)
7
11
  @project_name, @update_type, @version = args
8
- validate_project_name
9
- validate_update_type
10
- validate_custom_version_format
11
- checkout_project
12
- compare_develop_main
12
+ validate_args
13
+ open_comparison_page
14
+ checkout_project # in the meantime
15
+ veto_comparison
13
16
  @version ||= calculate_version
14
17
  release
15
18
  ensure
@@ -18,6 +21,12 @@ class ReleaseProject
18
21
 
19
22
  private
20
23
 
24
+ def validate_args
25
+ validate_project_name
26
+ validate_update_type
27
+ validate_custom_version_format
28
+ end
29
+
21
30
  def validate_project_name
22
31
  abort('>> No project name given.') unless @project_name
23
32
  end
@@ -49,29 +58,20 @@ class ReleaseProject
49
58
  abort('>> Invalid Version Number. Use format X.Y.Z for your version.')
50
59
  end
51
60
 
52
- def compare_develop_main
53
- puts 'Please double-check what is going to be deployed.'
54
- open_comparison_page
55
- abort unless agree('Are you fine with those changes?')
61
+ def veto_comparison
62
+ abort unless agree('Are you fine with the changes you just reviewed in your browser?')
56
63
  end
57
64
 
58
65
  def open_comparison_page
59
- system_command = case RbConfig::CONFIG['host_os']
60
- when /mswin|mingw|cygwin/
61
- 'start'
62
- when /darwin/
63
- 'open'
64
- when /linux|bsd/
65
- 'xdg-open'
66
- end
67
- system "#{system_command} https://github.com/#{@project_name}/compare/#{main_branch}...develop"
66
+ puts 'Opening browser to double-check what is going to be deployed…'
67
+ open_path "https://github.com/#{@project_name}/compare/#{main_branch}...develop"
68
68
  end
69
69
 
70
70
  def checkout_project
71
71
  abort('>> Project not found on Github.') unless system("#{MOVE_TO_TMP_FOLDER} && gh repo clone #{@project_name}")
72
72
 
73
73
  system(cmd_in_folder("git checkout #{main_branch} && git pull origin #{main_branch} &&" \
74
- 'git checkout develop && git pull origin develop && git flow init -d'))
74
+ "git checkout #{develop_branch} && git pull origin #{develop_branch}"))
75
75
  end
76
76
 
77
77
  def calculate_version
@@ -80,7 +80,6 @@ class ReleaseProject
80
80
 
81
81
  def release
82
82
  ask_for_final_confirmation
83
- start_release_branch
84
83
  bump_version
85
84
  if finish_release_branch
86
85
  puts ">> Project successfully released with version #{@version}."
@@ -90,14 +89,12 @@ class ReleaseProject
90
89
  end
91
90
 
92
91
  def current_version
93
- return @current_version if @current_version
94
-
95
- @current_version = if `#{cmd_in_folder('git tag')}` == ''
96
- '0.0.0'
97
- else
98
- sorted_tags = `#{cmd_in_folder('git tag --sort=taggerdate')}`.split("\n").reverse
99
- sorted_tags.find { |tag| tag =~ RenuoVersion::SEMVER_SCHEMA }.strip
100
- end
92
+ @current_version ||= if `#{cmd_in_folder('git tag')}` == ''
93
+ '0.0.0'
94
+ else
95
+ sorted_tags = `#{cmd_in_folder('git tag --sort=taggerdate')}`.split("\n").reverse
96
+ sorted_tags.find { |tag| tag =~ RenuoVersion::SEMVER_SCHEMA }.strip
97
+ end
101
98
  end
102
99
 
103
100
  def bump_version
@@ -105,7 +102,7 @@ class ReleaseProject
105
102
 
106
103
  return unless version_bumped
107
104
 
108
- system(cmd_in_folder("git add . && git commit -m \"bump version\" && git push -u origin release/#{@version}"))
105
+ system(cmd_in_folder('git add . && git commit -m "bump version"'))
109
106
  end
110
107
 
111
108
  def find_and_replace_version
@@ -135,26 +132,43 @@ class ReleaseProject
135
132
  system(cmd_in_folder("sed -i '' 's|#{current_version}|#{@version}|g' #{file_name}"))
136
133
  end
137
134
 
138
- def start_release_branch
139
- system(cmd_in_folder("git flow release start #{@version}"))
135
+ def finish_release_branch
136
+ merge_branches
137
+ push_branches_and_tags
140
138
  end
141
139
 
142
- def finish_release_branch
143
- system(cmd_in_folder("GIT_MERGE_AUTOEDIT=no git flow release finish -m #{@version} #{@version} && " \
144
- 'git checkout develop && git push origin develop && ' \
145
- "git checkout #{main_branch} && git push origin #{main_branch} --tags"))
140
+ def merge_branches
141
+ system(
142
+ cmd_in_folder(
143
+ [
144
+ "GIT_MERGE_AUTOEDIT=no git checkout #{main_branch}",
145
+ "git merge #{develop_branch}",
146
+ "git tag -a #{@version} -m \"Release with versioin: #{@version}\""
147
+ ].join(' && ')
148
+ )
149
+ )
150
+ end
151
+
152
+ def push_branches_and_tags
153
+ push_branch(develop_branch)
154
+ push_branch(main_branch)
155
+ system(cmd_in_folder("git checkout #{main_branch} && git push origin #{main_branch} --tags"))
156
+ end
157
+
158
+ def push_branch(branch)
159
+ system(cmd_in_folder("git checkout #{branch} && git push origin #{branch}"))
146
160
  end
147
161
 
148
162
  def ask_for_final_confirmation
149
163
  unless agree(">> Are you sure you wish to deploy '#{@project_name}' " \
150
- "as a #{@update_type} release (#{current_version} => #{@version})?")
164
+ "as a #{@update_type} release (#{current_version} => #{@version})?")
151
165
  abort('>> Cancelling Release.')
152
166
  end
153
167
 
154
168
  return unless Time.now.friday? && Time.now.hour >= 16
155
169
 
156
170
  unless agree('>> Are you sure you want to deploy on late Friday afternoon? ' \
157
- 'Did you think about your family...waiting for you at home?')
171
+ 'Did you think about your family...waiting for you at home?')
158
172
  abort('>> Very good. Go home now.')
159
173
  end
160
174
  end
@@ -176,6 +190,11 @@ class ReleaseProject
176
190
  end
177
191
 
178
192
  def main_branch
179
- @main_branch ||= system(cmd_in_folder('git checkout main && git show-ref refs/heads/main')) ? 'main' : 'master'
193
+ remote_repo = "git@github.com:#{@project_name}.git"
194
+ @main_branch ||= `git ls-remote --heads #{remote_repo} main`.empty? ? 'master' : 'main'
195
+ end
196
+
197
+ def develop_branch
198
+ 'develop'
180
199
  end
181
200
  end
@@ -5,22 +5,22 @@ do
5
5
  case $cache_group in
6
6
 
7
7
  rails)
8
- cache restore nvm-$SEMAPHORE_GIT_BRANCH-$(checksum .nvmrc),nvm-$SEMAPHORE_GIT_BRANCH,nvm-develop,nvm-main
9
- cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),gems-$SEMAPHORE_GIT_BRANCH,gems-develop,gems-main
10
- cache restore yarn-cache-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),yarn-cache-$SEMAPHORE_GIT_BRANCH,yarn-cache-develop,yarn-cache-main
11
- cache restore node-modules-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),node-modules-$SEMAPHORE_GIT_BRANCH,node-modules-develop,node-modules-main
8
+ cache restore nvm-$SEMAPHORE_GIT_BRANCH-$(checksum .nvmrc),nvm-$SEMAPHORE_GIT_BRANCH,nvm-develop
9
+ cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum .ruby-version)-$(checksum Gemfile.lock),gems-develop-$(checksum .ruby-version)-$(checksum Gemfile.lock),gems-develop-$(checksum .ruby-version)
10
+ cache restore yarn-cache-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),yarn-cache-$SEMAPHORE_GIT_BRANCH,yarn-cache-develop
11
+ cache restore node-modules-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),node-modules-$SEMAPHORE_GIT_BRANCH,node-modules-develop
12
12
  ;;
13
13
 
14
14
  python)
15
- cache restore requirements-$SEMAPHORE_GIT_BRANCH-$(checksum requirements.txt),requirements-$SEMAPHORE_GIT_BRANCH,requirements-develop,requirements-main
15
+ cache restore requirements-$SEMAPHORE_GIT_BRANCH-$(checksum requirements.txt),requirements-$SEMAPHORE_GIT_BRANCH,requirements-develop
16
16
  ;;
17
17
 
18
18
  assets)
19
- cache restore packs-$SEMAPHORE_GIT_BRANCH,packs-develop,packs-main
20
- cache restore packstest-$SEMAPHORE_GIT_BRANCH,packstest-develop,packstest-main
21
- cache restore assets-$SEMAPHORE_GIT_BRANCH,assets-develop,assets-main
22
- cache restore sprocketscache-$SEMAPHORE_GIT_BRANCH,sprocketscache-develop,sprocketscache-main
23
- cache restore webpackercache-$SEMAPHORE_GIT_BRANCH,webpackercache-develop,webpackercache-main
19
+ cache restore packs-$SEMAPHORE_GIT_BRANCH,packs-develop
20
+ cache restore packstest-$SEMAPHORE_GIT_BRANCH,packstest-develop
21
+ cache restore assets-$SEMAPHORE_GIT_BRANCH,assets-develop
22
+ cache restore sprocketscache-$SEMAPHORE_GIT_BRANCH,sprocketscache-develop
23
+ cache restore webpackercache-$SEMAPHORE_GIT_BRANCH,webpackercache-develop
24
24
  ;;
25
25
 
26
26
  *)
@@ -6,7 +6,7 @@ do
6
6
 
7
7
  rails)
8
8
  cache store nvm-$SEMAPHORE_GIT_BRANCH-$(checksum .nvmrc) $HOME/.nvm
9
- cache store gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock) vendor/bundle
9
+ cache store gems-$SEMAPHORE_GIT_BRANCH-$(checksum .ruby-version)-$(checksum Gemfile.lock) vendor/bundle
10
10
  cache store yarn-cache-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock) $HOME/.cache/yarn
11
11
  cache store node-modules-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock) node_modules
12
12
  ;;
@@ -23,5 +23,4 @@ blocks:
23
23
  - git config --global url.ssh://git@heroku.com/.insteadOf https://git.heroku.com/
24
24
  - git remote add heroku $HEROKU_REMOTE
25
25
  - git push heroku -f $SEMAPHORE_GIT_BRANCH:main
26
- - heroku run -x rails db:migrate
27
- - heroku dyno:restart
26
+ - if heroku run -x rails db:migrate; then heroku dyno:restart; else heroku rollback; exit -1; fi
@@ -92,6 +92,15 @@ blocks:
92
92
  - name: tests
93
93
  commands:
94
94
  - bin/check
95
+ epilogue:
96
+ on_fail:
97
+ commands:
98
+ - mkdir -p log
99
+ - mkdir -p tmp/screenshots
100
+ - mkdir -p coverage
101
+ - artifact push job log --expire-in 2w
102
+ - artifact push job tmp/screenshots --expire-in 2w
103
+ - artifact push job coverage --expire-in 2w
95
104
  promotions:
96
105
  - name: develop
97
106
  pipeline_file: develop-deploy.yml
@@ -1,5 +1,5 @@
1
1
  class UpgradeLaptopExecution
2
- include RunCommand
2
+ include CommandHelper
3
3
 
4
4
  def initialize(upgrade_mac_os)
5
5
  @upgrade_mac_os = upgrade_mac_os
@@ -1,5 +1,5 @@
1
1
  class UpgradeMacOS
2
- include RunCommand
2
+ include CommandHelper
3
3
 
4
4
  def run
5
5
  find_software_upgrades
@@ -1,4 +1,4 @@
1
- require_relative 'upgrade_laptop/run_command'
1
+ require_relative 'command_helper'
2
2
  require_relative 'upgrade_laptop/upgrade_laptop_execution'
3
3
  require_relative 'upgrade_laptop/upgrade_mac_os'
4
4
 
@@ -1,6 +1,6 @@
1
1
  module Renuo
2
2
  module Cli
3
- VERSION = '3.0.0'.freeze
3
+ VERSION = '3.1.2'.freeze
4
4
  NAME = 'renuo-cli'.freeze
5
5
  end
6
6
  end
data/lib/renuo/cli.rb CHANGED
@@ -46,7 +46,10 @@ module Renuo
46
46
  c.description = 'Sets the name of a customer on the Renuo dashboard'
47
47
  c.example 'Display "Peter Muster" on the dashboard', 'renuo display-name "Peter Muster"'
48
48
  c.example 'Remove the current name from the dashboard', 'renuo display-name --delete'
49
+ c.example 'Override the current message on the dashboard', 'renuo display-name Happy friday 🍻 --override'
49
50
  c.option '--delete', 'Deletes the current name'
51
+ c.option '--override', 'Overrides the entire message'
52
+ c.option '--monitor', 'Open the Google slides'
50
53
  c.action do |args, options|
51
54
  NameDisplay.new.run(args, options)
52
55
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: renuo-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Renuo AG
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-31 00:00:00.000000000 Z
11
+ date: 2022-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeresource
@@ -307,7 +307,7 @@ files:
307
307
  - ".ruby-version"
308
308
  - ".semaphore/bin/cache_restore"
309
309
  - ".semaphore/bin/cache_store"
310
- - ".semaphore/master-deploy.yml"
310
+ - ".semaphore/main-deploy.yml"
311
311
  - ".semaphore/semaphore.yml"
312
312
  - Gemfile
313
313
  - LICENSE.txt
@@ -319,6 +319,7 @@ files:
319
319
  - bin/run
320
320
  - bin/setup
321
321
  - lib/renuo/cli.rb
322
+ - lib/renuo/cli/app/command_helper.rb
322
323
  - lib/renuo/cli/app/configure_semaphore.rb
323
324
  - lib/renuo/cli/app/configure_sentry.rb
324
325
  - lib/renuo/cli/app/create_aws_project.rb
@@ -351,7 +352,6 @@ files:
351
352
  - lib/renuo/cli/app/toggl/workspace.rb
352
353
  - lib/renuo/cli/app/toggl_redmine_comparator.rb
353
354
  - lib/renuo/cli/app/upgrade_laptop.rb
354
- - lib/renuo/cli/app/upgrade_laptop/run_command.rb
355
355
  - lib/renuo/cli/app/upgrade_laptop/upgrade_laptop_execution.rb
356
356
  - lib/renuo/cli/app/upgrade_laptop/upgrade_mac_os.rb
357
357
  - lib/renuo/cli/app/work.rb
@@ -378,7 +378,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
378
378
  - !ruby/object:Gem::Version
379
379
  version: '0'
380
380
  requirements: []
381
- rubygems_version: 3.1.4
381
+ rubygems_version: 3.2.32
382
382
  signing_key:
383
383
  specification_version: 4
384
384
  summary: The Renuo CLI automates some common workflows.
@@ -1,6 +0,0 @@
1
- module RunCommand
2
- def run_command(command)
3
- say "\n#{command.yellow}"
4
- system command
5
- end
6
- end