renuo-cli 1.7.3 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +3 -3
- data/.ruby-version +1 -1
- data/.semaphore/bin/cache_restore +16 -0
- data/.semaphore/bin/cache_store +16 -0
- data/.semaphore/semaphore.yml +7 -12
- data/lib/renuo/cli.rb +2 -1
- data/lib/renuo/cli/app/configure_semaphore.rb +10 -3
- data/lib/renuo/cli/app/create_aws_project.rb +3 -1
- data/lib/renuo/cli/app/generate_password.rb +1 -1
- data/lib/renuo/cli/app/heroku_users.rb +1 -1
- data/lib/renuo/cli/app/release_project.rb +8 -9
- data/lib/renuo/cli/app/release_xing.rb +1 -1
- data/lib/renuo/cli/app/renuo_version.rb +52 -0
- data/lib/renuo/cli/app/services/renuo_cli_config.rb +1 -0
- data/lib/renuo/cli/app/setup_uptimerobot.rb +1 -0
- data/lib/renuo/cli/app/templates/semaphore/bin/cache_restore.erb +31 -0
- data/lib/renuo/cli/app/templates/semaphore/bin/cache_store.erb +31 -0
- data/lib/renuo/cli/app/templates/{semaphore-deploy.yml.erb → semaphore/semaphore-deploy.yml.erb} +0 -0
- data/lib/renuo/cli/app/templates/{semaphore.yml.erb → semaphore/semaphore.yml.erb} +28 -9
- data/lib/renuo/cli/app/toggl_redmine_comparator.rb +2 -1
- data/lib/renuo/cli/app/upgrade_laptop/upgrade_mac_os.rb +2 -2
- data/lib/renuo/cli/app/work.rb +1 -1
- data/lib/renuo/cli/version.rb +1 -1
- data/renuo-cli.gemspec +3 -1
- metadata +18 -15
- data/CODE_OF_CONDUCT.md +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1eea3c5df45adf1359cb93a9b1b41f70f37193174bee321249d4749a1d5ebdcb
|
4
|
+
data.tar.gz: 5984e0ab5a47c433ba42326f4737feb0ad1d12f87847f3540d7784edd1cdaf34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5297398c47861cf1974097075be3b973c347277fc56431ff3383037e6b7c172f5266627d4b42fc7b71d72013f8b7a7e98cd512246920e83a80c541f58e90b8d7
|
7
|
+
data.tar.gz: 95edee563ba860d322f13071180a99df516c54170d64f39daa83e6f8fe4e4176257428549806117683cba749e7438aa0a487ab38714cf5866470e073e8a06ecc
|
data/.rubocop.yml
CHANGED
@@ -11,6 +11,9 @@ AllCops:
|
|
11
11
|
- 'lib/renuo/cli/app/create_heroku_app'
|
12
12
|
- 'vendor/**/*'
|
13
13
|
|
14
|
+
Layout/LineLength:
|
15
|
+
Max: 120
|
16
|
+
|
14
17
|
Naming/FileName:
|
15
18
|
Exclude:
|
16
19
|
- 'Gemfile'
|
@@ -25,9 +28,6 @@ Metrics/BlockLength:
|
|
25
28
|
Metrics/ClassLength:
|
26
29
|
Max: 160
|
27
30
|
|
28
|
-
Metrics/LineLength:
|
29
|
-
Max: 120
|
30
|
-
|
31
31
|
Style/Documentation:
|
32
32
|
Enabled: false
|
33
33
|
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.7.2
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
for cache_group in "$@"
|
4
|
+
do
|
5
|
+
case $cache_group in
|
6
|
+
|
7
|
+
ruby)
|
8
|
+
cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),gems-$SEMAPHORE_GIT_BRANCH,gems-develop,gems-master
|
9
|
+
;;
|
10
|
+
|
11
|
+
*)
|
12
|
+
echo "Invalid argument: Cache group $cache_group not found."
|
13
|
+
exit 1
|
14
|
+
;;
|
15
|
+
esac
|
16
|
+
done
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
for cache_group in "$@"
|
4
|
+
do
|
5
|
+
case $cache_group in
|
6
|
+
|
7
|
+
ruby)
|
8
|
+
cache store gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock) vendor/bundle
|
9
|
+
;;
|
10
|
+
|
11
|
+
*)
|
12
|
+
echo "Invalid argument: Cache group $cache_group not found."
|
13
|
+
exit 1
|
14
|
+
;;
|
15
|
+
esac
|
16
|
+
done
|
data/.semaphore/semaphore.yml
CHANGED
@@ -7,33 +7,28 @@ agent:
|
|
7
7
|
auto_cancel:
|
8
8
|
running:
|
9
9
|
when: "true"
|
10
|
+
fail_fast:
|
11
|
+
cancel:
|
12
|
+
when: "branch != 'master'"
|
10
13
|
|
11
14
|
blocks:
|
12
15
|
- name: tests
|
13
16
|
execution_time_limit:
|
14
|
-
minutes:
|
17
|
+
minutes: 5
|
18
|
+
dependencies: []
|
15
19
|
task:
|
16
20
|
secrets:
|
17
21
|
- name: renuo-cli
|
18
|
-
env_vars:
|
19
|
-
- name: RAILS_ENV
|
20
|
-
value: test
|
21
22
|
prologue:
|
22
23
|
commands:
|
23
24
|
- checkout --use-cache
|
24
|
-
-
|
25
|
-
- gem update bundler
|
25
|
+
- source .semaphore/bin/cache_restore ruby
|
26
26
|
- bundle install -j 4 --path vendor/bundle
|
27
|
-
-
|
27
|
+
- source .semaphore/bin/cache_store ruby
|
28
28
|
jobs:
|
29
29
|
- name: tests
|
30
30
|
commands:
|
31
31
|
- bin/check
|
32
|
-
epilogue:
|
33
|
-
on_fail:
|
34
|
-
commands:
|
35
|
-
- artifact push job --expire-in 2w log/test.log
|
36
|
-
- artifact push job --expire-in 2w tmp/screenshots
|
37
32
|
promotions:
|
38
33
|
- name: master
|
39
34
|
pipeline_file: master-deploy.yml
|
data/lib/renuo/cli.rb
CHANGED
@@ -20,6 +20,7 @@ require 'renuo/cli/app/setup_uptimerobot'
|
|
20
20
|
require 'renuo/cli/app/release_xing'
|
21
21
|
require 'renuo/cli/app/configure_semaphore'
|
22
22
|
require 'renuo/cli/app/toggl_redmine_comparator'
|
23
|
+
require 'renuo/cli/app/renuo_version'
|
23
24
|
|
24
25
|
module Renuo
|
25
26
|
class CLI
|
@@ -109,7 +110,7 @@ module Renuo
|
|
109
110
|
c.syntax = 'renuo create-aws-project'
|
110
111
|
c.summary = 'Generates necessary commands for our project setup on AWS incl. necessary installations.'
|
111
112
|
c.description = <<-DESCRIPTION
|
112
|
-
This creates commands for creating AWS users, buckets an versioning policies and CloudFront.
|
113
|
+
This creates commands for creating AWS users, buckets an versioning policies and CloudFront.
|
113
114
|
It also guides you to set up the necessary environment.
|
114
115
|
|
115
116
|
You will be asked for:
|
@@ -8,17 +8,24 @@ class ConfigureSemaphore
|
|
8
8
|
@project_name = File.basename(Dir.getwd)
|
9
9
|
end
|
10
10
|
|
11
|
+
# rubocop:disable Metrics/MethodLength
|
11
12
|
def call
|
12
13
|
return unless semaphore_cli_installed?
|
13
|
-
|
14
|
-
|
14
|
+
|
15
|
+
FileUtils.mkdir_p(%w[.semaphore .semaphore/bin])
|
16
|
+
|
17
|
+
write_or_warn('.semaphore/semaphore.yml', render('templates/semaphore/semaphore.yml.erb'))
|
15
18
|
%w[master develop testing].each do |environment|
|
16
19
|
@environment = environment
|
17
|
-
write_or_warn(".semaphore/#{environment}-deploy.yml", render('templates/semaphore-deploy.yml.erb'))
|
20
|
+
write_or_warn(".semaphore/#{environment}-deploy.yml", render('templates/semaphore/semaphore-deploy.yml.erb'))
|
18
21
|
end
|
22
|
+
write_or_warn('.semaphore/bin/cache_restore', render('templates/semaphore/bin/cache_restore.erb'))
|
23
|
+
write_or_warn('.semaphore/bin/cache_store', render('templates/semaphore/bin/cache_store.erb'))
|
24
|
+
|
19
25
|
create_semaphore_notification
|
20
26
|
create_semaphore_secrets
|
21
27
|
end
|
28
|
+
# rubocop:enable Metrics/MethodLength
|
22
29
|
|
23
30
|
private
|
24
31
|
|
@@ -27,7 +27,7 @@ class CreateAwsProject
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def collect_s3_information
|
30
|
-
@project_purpose = ask('Suffix describing purpose (eg:
|
30
|
+
@project_purpose = ask('Suffix describing a non-default purpose (eg: "archives"): ') { |q| q.default = 'none' }
|
31
31
|
@project_purpose = nil if @project_purpose.empty? || @project_purpose == 'none'
|
32
32
|
@redmine_project = ask('Redmine project name for billing (eg: internal): ') do |q|
|
33
33
|
q.default = @project_name
|
@@ -42,6 +42,7 @@ class CreateAwsProject
|
|
42
42
|
@setup_cloudfront = agree('Would you like to setup also AWS CloudFront? '\
|
43
43
|
'(Default: yes, if you want to deliver assets/images from S3)')
|
44
44
|
return unless @setup_cloudfront
|
45
|
+
|
45
46
|
@cloudfront_alias = {}
|
46
47
|
return unless agree('Would you like to use an alias to call your assets/images on S3? (Default: no)')
|
47
48
|
|
@@ -84,6 +85,7 @@ class CreateAwsProject
|
|
84
85
|
|
85
86
|
def cloudfront_setup(bucket, branch)
|
86
87
|
return unless @setup_cloudfront
|
88
|
+
|
87
89
|
puts aws_cloudfront_setup(@aws_profile, bucket, branch, @redmine_project)
|
88
90
|
if @cloudfront_alias[branch.to_sym]
|
89
91
|
say "\n# Warning: Don't forget to set up `#{cloudfront_alias(branch)}` on the DNS "\
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class ReleaseProject
|
2
2
|
UPDATE_TYPES = %w[major minor patch custom].freeze
|
3
|
-
TMP_FOLDER_NAME =
|
3
|
+
TMP_FOLDER_NAME = "_RENUO_RELEASE_TEMP_#{rand(100_000_000)}".freeze
|
4
4
|
MOVE_TO_TMP_FOLDER = "mkdir -p #{TMP_FOLDER_NAME} && cd #{TMP_FOLDER_NAME}".freeze
|
5
5
|
|
6
6
|
def run(args)
|
@@ -44,8 +44,9 @@ class ReleaseProject
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def validate_custom_version_format
|
47
|
-
return if @version.nil?
|
48
|
-
|
47
|
+
return if @version.nil? || @version =~ RenuoVersion::SEMVER_SCHEMA
|
48
|
+
|
49
|
+
abort('>> Invalid Version Number. Use format X.Y.Z for your version.')
|
49
50
|
end
|
50
51
|
|
51
52
|
def compare_develop_master
|
@@ -67,11 +68,7 @@ class ReleaseProject
|
|
67
68
|
end
|
68
69
|
|
69
70
|
def calculate_version
|
70
|
-
|
71
|
-
type_index = UPDATE_TYPES.index(@update_type)
|
72
|
-
current_version_parts[type_index + 1..-1] = [0] * (2 - type_index)
|
73
|
-
current_version_parts[type_index] += 1
|
74
|
-
current_version_parts.join('.')
|
71
|
+
RenuoVersion.create(current_version).bump(@update_type).to_s
|
75
72
|
end
|
76
73
|
|
77
74
|
def release
|
@@ -92,7 +89,7 @@ class ReleaseProject
|
|
92
89
|
'0.0.0'
|
93
90
|
else
|
94
91
|
sorted_tags = `#{cmd_in_folder('git tag --sort=taggerdate')}`.split("\n").reverse
|
95
|
-
sorted_tags.find { |tag| tag =~
|
92
|
+
sorted_tags.find { |tag| tag =~ RenuoVersion::SEMVER_SCHEMA }.strip
|
96
93
|
end
|
97
94
|
end
|
98
95
|
|
@@ -100,6 +97,7 @@ class ReleaseProject
|
|
100
97
|
version_bumped = find_and_replace_version
|
101
98
|
|
102
99
|
return unless version_bumped
|
100
|
+
|
103
101
|
system(cmd_in_folder("git add . && git commit -m \"bump version\" && git push -u origin release/#{@version}"))
|
104
102
|
end
|
105
103
|
|
@@ -147,6 +145,7 @@ class ReleaseProject
|
|
147
145
|
end
|
148
146
|
|
149
147
|
return unless Time.now.friday? && Time.now.hour >= 16
|
148
|
+
|
150
149
|
unless agree('>> Are you sure you want to deploy on late Friday afternoon? ' \
|
151
150
|
'Did you think about your family...waiting for you at home?')
|
152
151
|
abort('>> Very good. Go home now.')
|
@@ -0,0 +1,52 @@
|
|
1
|
+
class RenuoVersion
|
2
|
+
SEMVER_SCHEMA = /^\d+\.\d+\.\d+(\.[a-z]+\d+)?$/.freeze
|
3
|
+
SEGMENTS = %w[major minor patch].freeze
|
4
|
+
|
5
|
+
def self.create(str)
|
6
|
+
raise "Invalid segments (#{str} =~ #{SEMVER_SCHEMA})" unless str =~ SEMVER_SCHEMA
|
7
|
+
|
8
|
+
new(*str.split('.'))
|
9
|
+
end
|
10
|
+
|
11
|
+
attr_reader :segments
|
12
|
+
|
13
|
+
def initialize(major, minor, patch, prerelease = nil)
|
14
|
+
@segments = [major, minor, patch].map(&:to_i)
|
15
|
+
@segments.push(prerelease.to_s) if prerelease
|
16
|
+
end
|
17
|
+
|
18
|
+
def bump(segment)
|
19
|
+
raise "Invalid segment #{segment} (must be one of #{SEGMENTS})" unless SEGMENTS.include?(segment)
|
20
|
+
|
21
|
+
send("bump_#{segment}")
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
# Returns true if it's a release candidate (e.g. 3.0.0.rc4)
|
26
|
+
def prerelease?
|
27
|
+
@segments.length > 3
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_s
|
31
|
+
@segments.join('.')
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def bump_major
|
37
|
+
@segments = [@segments[0] + 1, 0, 0]
|
38
|
+
end
|
39
|
+
|
40
|
+
def bump_minor
|
41
|
+
@segments = [@segments[0], @segments[1] + 1, 0]
|
42
|
+
end
|
43
|
+
|
44
|
+
def bump_patch
|
45
|
+
if prerelease?
|
46
|
+
old_number = @segments[3][/\d+/]
|
47
|
+
@segments[3].gsub!(old_number, (old_number.to_i + 1).to_s)
|
48
|
+
else # default patch
|
49
|
+
@segments = [*@segments[0..1], @segments[2] + 1]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
for cache_group in "$@"
|
4
|
+
do
|
5
|
+
case $cache_group in
|
6
|
+
|
7
|
+
rails)
|
8
|
+
cache restore nvm-$SEMAPHORE_GIT_BRANCH-$(checksum .nvmrc),nvm-$SEMAPHORE_GIT_BRANCH,nvm-develop,nvm-master
|
9
|
+
cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),gems-$SEMAPHORE_GIT_BRANCH,gems-develop,gems-master
|
10
|
+
cache restore yarn-cache-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),yarn-cache-$SEMAPHORE_GIT_BRANCH,yarn-cache-develop,yarn-cache-master
|
11
|
+
cache restore node-modules-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),node-modules-$SEMAPHORE_GIT_BRANCH,node-modules-develop,node-modules-master
|
12
|
+
;;
|
13
|
+
|
14
|
+
python)
|
15
|
+
cache restore requirements-$SEMAPHORE_GIT_BRANCH-$(checksum requirements.txt),requirements-$SEMAPHORE_GIT_BRANCH,requirements-develop,requirements-master
|
16
|
+
;;
|
17
|
+
|
18
|
+
assets)
|
19
|
+
cache restore packs-$SEMAPHORE_GIT_BRANCH,packs-develop,packs-master
|
20
|
+
cache restore packstest-$SEMAPHORE_GIT_BRANCH,packstest-develop,packstest-master
|
21
|
+
cache restore assets-$SEMAPHORE_GIT_BRANCH,assets-develop,assets-master
|
22
|
+
cache restore sprocketscache-$SEMAPHORE_GIT_BRANCH,sprocketscache-develop,sprocketscache-master
|
23
|
+
cache restore webpackercache-$SEMAPHORE_GIT_BRANCH,webpackercache-develop,webpackercache-master
|
24
|
+
;;
|
25
|
+
|
26
|
+
*)
|
27
|
+
echo "Invalid argument: Cache group $cache_group not found."
|
28
|
+
exit 1
|
29
|
+
;;
|
30
|
+
esac
|
31
|
+
done
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
for cache_group in "$@"
|
4
|
+
do
|
5
|
+
case $cache_group in
|
6
|
+
|
7
|
+
rails)
|
8
|
+
cache store nvm-$SEMAPHORE_GIT_BRANCH-$(checksum .nvmrc) $HOME/.nvm
|
9
|
+
cache store gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock) vendor/bundle
|
10
|
+
cache store yarn-cache-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock) $HOME/.cache/yarn
|
11
|
+
cache store node-modules-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock) node_modules
|
12
|
+
;;
|
13
|
+
|
14
|
+
python)
|
15
|
+
cache store requirements-$SEMAPHORE_GIT_BRANCH-$(checksum requirements.txt) .pip_cache
|
16
|
+
;;
|
17
|
+
|
18
|
+
assets)
|
19
|
+
cache store packs-$SEMAPHORE_GIT_BRANCH public/packs
|
20
|
+
cache store packstest-$SEMAPHORE_GIT_BRANCH public/packs-test
|
21
|
+
cache store assets-$SEMAPHORE_GIT_BRANCH public/assets
|
22
|
+
cache store sprocketscache-$SEMAPHORE_GIT_BRANCH tmp/cache/assets/sprockets
|
23
|
+
cache store webpackercache-$SEMAPHORE_GIT_BRANCH tmp/cache/webpacker
|
24
|
+
;;
|
25
|
+
|
26
|
+
*)
|
27
|
+
echo "Invalid argument: Cache group $cache_group not found."
|
28
|
+
exit 1
|
29
|
+
;;
|
30
|
+
esac
|
31
|
+
done
|
data/lib/renuo/cli/app/templates/{semaphore-deploy.yml.erb → semaphore/semaphore-deploy.yml.erb}
RENAMED
File without changes
|
@@ -7,6 +7,9 @@ agent:
|
|
7
7
|
auto_cancel:
|
8
8
|
running:
|
9
9
|
when: "true"
|
10
|
+
fail_fast:
|
11
|
+
cancel:
|
12
|
+
when: "branch != 'master'"
|
10
13
|
|
11
14
|
blocks:
|
12
15
|
- name: cache
|
@@ -20,14 +23,32 @@ blocks:
|
|
20
23
|
- name: cache
|
21
24
|
commands:
|
22
25
|
- checkout --use-cache
|
23
|
-
-
|
24
|
-
- cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),gems-$SEMAPHORE_GIT_BRANCH,gems-develop,gems-master
|
25
|
-
- cache restore yarn-cache-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),yarn-cache-$SEMAPHORE_GIT_BRANCH,yarn-cache-develop,yarn-cache-master
|
26
|
-
- cache restore node-modules-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),node-modules-$SEMAPHORE_GIT_BRANCH,node-modules-develop,node-modules-master
|
26
|
+
- source .semaphore/bin/cache_restore rails
|
27
27
|
- bundle install --deployment -j 4 --path vendor/bundle
|
28
28
|
- nvm install
|
29
29
|
- bin/yarn install --cache-folder ~/.cache/yarn
|
30
|
-
-
|
30
|
+
- source .semaphore/bin/cache_store rails
|
31
|
+
- name: linting
|
32
|
+
execution_time_limit:
|
33
|
+
minutes: 5
|
34
|
+
dependencies: ['cache']
|
35
|
+
task:
|
36
|
+
secrets:
|
37
|
+
- name: <%= project_name %>
|
38
|
+
env_vars:
|
39
|
+
- name: RAILS_ENV
|
40
|
+
value: test
|
41
|
+
prologue:
|
42
|
+
commands:
|
43
|
+
- checkout --use-cache
|
44
|
+
- source .semaphore/bin/cache_restore rails
|
45
|
+
- bundle install --deployment --path vendor/bundle
|
46
|
+
- nvm install
|
47
|
+
- bin/yarn install --cache-folder ~/.cache/yarn
|
48
|
+
jobs:
|
49
|
+
- name: linting
|
50
|
+
commands:
|
51
|
+
- bin/fastcheck
|
31
52
|
- name: tests
|
32
53
|
execution_time_limit:
|
33
54
|
minutes: 10
|
@@ -43,11 +64,9 @@ blocks:
|
|
43
64
|
prologue:
|
44
65
|
commands:
|
45
66
|
- checkout --use-cache
|
46
|
-
-
|
47
|
-
- cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),gems-$SEMAPHORE_GIT_BRANCH,gems-develop,gems-master
|
48
|
-
- cache restore yarn-cache-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock),yarn-cache-$SEMAPHORE_GIT_BRANCH,yarn-cache-develop,yarn-cache-master
|
49
|
-
- cache restore node-modules-$SEMAPHORE_GIT_BRANCH-$(checksum yarn.lock),node-modules-$SEMAPHORE_GIT_BRANCH,node-modules-develop,node-modules-master
|
67
|
+
- source .semaphore/bin/cache_restore rails
|
50
68
|
- bundle install --deployment --path vendor/bundle
|
69
|
+
- nvm install
|
51
70
|
- bin/yarn install --cache-folder ~/.cache/yarn
|
52
71
|
- sem-service start postgres
|
53
72
|
- bundle exec rails db:create db:schema:load
|
@@ -7,6 +7,7 @@ require 'renuo/cli/app/toggl/detail'
|
|
7
7
|
require 'renuo/cli/app/toggl/user'
|
8
8
|
require 'terminal-table'
|
9
9
|
require 'colorize'
|
10
|
+
require 'active_support/core_ext/numeric/time'
|
10
11
|
|
11
12
|
class TogglRedmineComparator
|
12
13
|
class << self
|
@@ -129,7 +130,7 @@ class TogglRedmineComparator
|
|
129
130
|
end
|
130
131
|
|
131
132
|
def non_working_day?(value)
|
132
|
-
[value[:redmine], value[:toggl]].all?
|
133
|
+
[value[:redmine], value[:toggl]].all?(&:zero?)
|
133
134
|
end
|
134
135
|
|
135
136
|
BUFFER = 20_000
|
@@ -11,7 +11,7 @@ class UpgradeMacOS
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def reboot_required?
|
14
|
-
@output.include? '
|
14
|
+
@output.downcase.include? 'restart'
|
15
15
|
end
|
16
16
|
|
17
17
|
private
|
@@ -32,7 +32,7 @@ class UpgradeMacOS
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def agree_for_reboot?
|
35
|
-
agree "\nYour Mac needs to be rebooted, Still continue?".red
|
35
|
+
agree "#{"\nYour Mac needs to be rebooted, Still continue?".red} (Yes / No)"
|
36
36
|
end
|
37
37
|
|
38
38
|
def execute_upgrade
|
data/lib/renuo/cli/app/work.rb
CHANGED
data/lib/renuo/cli/version.rb
CHANGED
data/renuo-cli.gemspec
CHANGED
@@ -17,6 +17,8 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.executables << 'renuo'
|
18
18
|
spec.require_paths = ['lib']
|
19
19
|
|
20
|
+
spec.required_ruby_version = '>= 2.7.0'
|
21
|
+
|
20
22
|
spec.add_dependency 'activeresource', '~> 5.1.0'
|
21
23
|
spec.add_dependency 'colorize', '~> 0'
|
22
24
|
spec.add_dependency 'commander', '~> 4.0'
|
@@ -32,7 +34,7 @@ Gem::Specification.new do |spec|
|
|
32
34
|
spec.add_development_dependency 'pry', '~> 0.11.3'
|
33
35
|
spec.add_development_dependency 'rake', '~> 10.0'
|
34
36
|
spec.add_development_dependency 'rspec', '~> 3.5'
|
35
|
-
spec.add_development_dependency 'rubocop', '
|
37
|
+
spec.add_development_dependency 'rubocop', '~> 1.2'
|
36
38
|
spec.add_development_dependency 'simplecov'
|
37
39
|
spec.add_development_dependency 'simplecov-console'
|
38
40
|
spec.add_development_dependency 'vcr', '~> 4.0.0'
|
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: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Renuo AG
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activeresource
|
@@ -210,16 +210,16 @@ dependencies:
|
|
210
210
|
name: rubocop
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
|
-
- -
|
213
|
+
- - "~>"
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
215
|
+
version: '1.2'
|
216
216
|
type: :development
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
|
-
- -
|
220
|
+
- - "~>"
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
222
|
+
version: '1.2'
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
224
|
name: simplecov
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -291,9 +291,10 @@ files:
|
|
291
291
|
- ".rspec"
|
292
292
|
- ".rubocop.yml"
|
293
293
|
- ".ruby-version"
|
294
|
+
- ".semaphore/bin/cache_restore"
|
295
|
+
- ".semaphore/bin/cache_store"
|
294
296
|
- ".semaphore/master-deploy.yml"
|
295
297
|
- ".semaphore/semaphore.yml"
|
296
|
-
- CODE_OF_CONDUCT.md
|
297
298
|
- Gemfile
|
298
299
|
- LICENSE.txt
|
299
300
|
- README.md
|
@@ -321,12 +322,15 @@ files:
|
|
321
322
|
- lib/renuo/cli/app/redmine/issue.rb
|
322
323
|
- lib/renuo/cli/app/release_project.rb
|
323
324
|
- lib/renuo/cli/app/release_xing.rb
|
325
|
+
- lib/renuo/cli/app/renuo_version.rb
|
324
326
|
- lib/renuo/cli/app/services/cloudfront_config_service.rb
|
325
327
|
- lib/renuo/cli/app/services/markdown_parser_service.rb
|
326
328
|
- lib/renuo/cli/app/services/renuo_cli_config.rb
|
327
329
|
- lib/renuo/cli/app/setup_uptimerobot.rb
|
328
|
-
- lib/renuo/cli/app/templates/semaphore
|
329
|
-
- lib/renuo/cli/app/templates/semaphore.
|
330
|
+
- lib/renuo/cli/app/templates/semaphore/bin/cache_restore.erb
|
331
|
+
- lib/renuo/cli/app/templates/semaphore/bin/cache_store.erb
|
332
|
+
- lib/renuo/cli/app/templates/semaphore/semaphore-deploy.yml.erb
|
333
|
+
- lib/renuo/cli/app/templates/semaphore/semaphore.yml.erb
|
330
334
|
- lib/renuo/cli/app/toggl/detail.rb
|
331
335
|
- lib/renuo/cli/app/toggl/time_entry.rb
|
332
336
|
- lib/renuo/cli/app/toggl/user.rb
|
@@ -345,7 +349,7 @@ homepage: https://github.com/renuo/renuo-cli
|
|
345
349
|
licenses:
|
346
350
|
- MIT
|
347
351
|
metadata: {}
|
348
|
-
post_install_message:
|
352
|
+
post_install_message:
|
349
353
|
rdoc_options: []
|
350
354
|
require_paths:
|
351
355
|
- lib
|
@@ -353,16 +357,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
353
357
|
requirements:
|
354
358
|
- - ">="
|
355
359
|
- !ruby/object:Gem::Version
|
356
|
-
version:
|
360
|
+
version: 2.7.0
|
357
361
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
358
362
|
requirements:
|
359
363
|
- - ">="
|
360
364
|
- !ruby/object:Gem::Version
|
361
365
|
version: '0'
|
362
366
|
requirements: []
|
363
|
-
|
364
|
-
|
365
|
-
signing_key:
|
367
|
+
rubygems_version: 3.1.4
|
368
|
+
signing_key:
|
366
369
|
specification_version: 4
|
367
370
|
summary: The Renuo CLI automates some common workflows.
|
368
371
|
test_files: []
|
data/CODE_OF_CONDUCT.md
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
# Contributor Code of Conduct
|
2
|
-
|
3
|
-
As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
|
4
|
-
|
5
|
-
We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.
|
6
|
-
|
7
|
-
Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
|
8
|
-
|
9
|
-
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.
|
10
|
-
|
11
|
-
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
|
12
|
-
|
13
|
-
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
|