renuo-cli 0.0.9 → 0.0.10
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 +4 -4
- data/.gitignore +1 -0
- data/.mdlrc +2 -0
- data/.rubocop.yml +4 -12
- data/.ruby-version +1 -1
- data/.travis.yml +1 -1
- data/README.md +7 -4
- data/bin/check +6 -0
- data/exe/renuo +1 -0
- data/lib/renuo/cli/app/import_redmine_issues.rb +65 -0
- data/lib/renuo/cli/app/local_storage.rb +1 -1
- data/lib/renuo/cli/app/upgrade_laptop/run_command.rb +6 -0
- data/lib/renuo/cli/app/upgrade_laptop/upgrade_laptop_execution.rb +38 -0
- data/lib/renuo/cli/app/upgrade_laptop/upgrade_mac_os.rb +47 -0
- data/lib/renuo/cli/app/upgrade_laptop.rb +20 -0
- data/lib/renuo/cli/version.rb +1 -2
- data/lib/renuo/cli.rb +24 -0
- data/renuo-cli.gemspec +2 -0
- metadata +36 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ca0b886873fc443268d1be527323bbcfc602444
|
4
|
+
data.tar.gz: d6c7bc7bee5e6f11f9cd56c2f5faf8b8ff46f55e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 231db98fd2899c4971509dcda214128749a599032b632c51dcfa6ebeb47f92bc3a788e9284dc2656eaf4f5b4fc3fe8744c27be14a6a1765f119b103f7ee5c8ba
|
7
|
+
data.tar.gz: 68a1ff5c7681070401dfb9c1ad6e1685b7890f50142adb065593c679e04183a2012d2d7428fc8205ed1c018e670380789939951eabe521f469778dbc25379aec
|
data/.gitignore
CHANGED
data/.mdlrc
ADDED
data/.rubocop.yml
CHANGED
@@ -1,25 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
Metrics/LineLength:
|
5
|
-
Max: 120
|
1
|
+
inherit_from:
|
2
|
+
- https://raw.githubusercontent.com/renuo/rails-application-setup-guide/master/templates/.rubocop_base.yml
|
6
3
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
Style/NonNilCheck:
|
11
|
-
IncludeSemanticChanges: true
|
4
|
+
Rails:
|
5
|
+
Enabled: false
|
12
6
|
|
13
7
|
Metrics/ClassLength:
|
14
8
|
Max: 160
|
15
9
|
|
16
10
|
AllCops:
|
17
11
|
Include:
|
18
|
-
- '**/Rakefile'
|
19
12
|
- 'lib/**/*'
|
20
13
|
- 'spec/**/*'
|
21
14
|
- '*.gemspec'
|
22
15
|
Exclude:
|
23
16
|
- 'bin/**/*'
|
24
17
|
- 'lib/renuo/cli.rb'
|
25
|
-
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.
|
1
|
+
2.3.1
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -16,11 +16,15 @@ gem 'renuo-cli'
|
|
16
16
|
|
17
17
|
And then execute:
|
18
18
|
|
19
|
-
|
19
|
+
```sh
|
20
|
+
bundle
|
21
|
+
```
|
20
22
|
|
21
23
|
Or install it yourself as:
|
22
24
|
|
23
|
-
|
25
|
+
```sh
|
26
|
+
gem install renuo-cli
|
27
|
+
```
|
24
28
|
|
25
29
|
## Usage
|
26
30
|
|
@@ -54,11 +58,10 @@ git checkout develop
|
|
54
58
|
|
55
59
|
## Contributing
|
56
60
|
|
57
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/renuo/renuo-cli
|
61
|
+
Bug reports and pull requests are welcome on GitHub at <https://github.com/renuo/renuo-cli>. This project is intended to
|
58
62
|
be a safe, welcoming space for collaboration, and contributors are expected to adhere to
|
59
63
|
the [Contributor Covenant](contributor-covenant.org) code of conduct.
|
60
64
|
|
61
|
-
|
62
65
|
## License
|
63
66
|
|
64
67
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/bin/check
CHANGED
@@ -13,6 +13,12 @@ if [ ! $RC -eq 0 ]; then
|
|
13
13
|
exit 1
|
14
14
|
fi
|
15
15
|
|
16
|
+
mdl .
|
17
|
+
if [ ! $? -eq 0 ]; then
|
18
|
+
echo 'Violated markdown rules, see https://github.com/mivok/markdownlint/blob/master/docs/RULES.md, commit aborted'
|
19
|
+
exit 1
|
20
|
+
fi
|
21
|
+
|
16
22
|
bundle exec rspec
|
17
23
|
if [ ! $RC -eq 0 ]; then
|
18
24
|
echo 'rspec errors'
|
data/exe/renuo
CHANGED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'json'
|
3
|
+
require 'csv'
|
4
|
+
|
5
|
+
class ImportRedmineIssues
|
6
|
+
def initialize(redmine_api_key)
|
7
|
+
@redmine_api_key = redmine_api_key
|
8
|
+
@html_uri = URI('https://redmine.renuo.ch/issues')
|
9
|
+
@json_uri = URI('https://redmine.renuo.ch/issues.json')
|
10
|
+
end
|
11
|
+
|
12
|
+
def run(csv_path)
|
13
|
+
https = Net::HTTP.new(@json_uri.host, @json_uri.port)
|
14
|
+
https.use_ssl = true
|
15
|
+
|
16
|
+
parsed_issues(csv_path).each do |issue|
|
17
|
+
request = build_request(issue)
|
18
|
+
response = https.request(request)
|
19
|
+
handle_response(response)
|
20
|
+
end
|
21
|
+
|
22
|
+
rescue SocketError => details
|
23
|
+
say "Are you connected to the internet? SocketError: #{details}"
|
24
|
+
exit 1
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def build_request(issue)
|
30
|
+
request = Net::HTTP::Post.new(@json_uri)
|
31
|
+
request.add_field('Content-Type', 'application/json')
|
32
|
+
request.add_field('X-Redmine-API-Key', @redmine_api_key)
|
33
|
+
request.body = JSON.generate(issue)
|
34
|
+
request
|
35
|
+
end
|
36
|
+
|
37
|
+
def handle_response(response)
|
38
|
+
if response.is_a? Net::HTTPCreated
|
39
|
+
issue_id = JSON.parse(response.body)['issue']['id']
|
40
|
+
issue_url = URI.join(@html_uri, issue_id.to_s)
|
41
|
+
say issue_url
|
42
|
+
else
|
43
|
+
say "#{response.code} #{response.message}"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def parsed_issues(csv_path)
|
48
|
+
issues = []
|
49
|
+
|
50
|
+
CSV.foreach(csv_path) do |row|
|
51
|
+
issues << { 'issue' => parse_issue(row) }
|
52
|
+
end
|
53
|
+
|
54
|
+
issues
|
55
|
+
end
|
56
|
+
|
57
|
+
def parse_issue(csv_row)
|
58
|
+
{
|
59
|
+
'project_id' => csv_row[0],
|
60
|
+
'subject' => csv_row[1],
|
61
|
+
'description' => csv_row[2],
|
62
|
+
'estimated_hours' => csv_row[3]
|
63
|
+
}
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
class UpgradeLaptopExecution
|
2
|
+
include RunCommand
|
3
|
+
|
4
|
+
def initialize(upgrade_mac_os)
|
5
|
+
@upgrade_mac_os = upgrade_mac_os
|
6
|
+
end
|
7
|
+
|
8
|
+
def run
|
9
|
+
upgrade_apps
|
10
|
+
upgrade_mac_os
|
11
|
+
upgrade_brew unless mac_os_upgrade_needs_a_restart?
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def upgrade_apps
|
17
|
+
setup_mas
|
18
|
+
run_command 'mas upgrade'
|
19
|
+
end
|
20
|
+
|
21
|
+
def setup_mas
|
22
|
+
`which mas || brew install mas`
|
23
|
+
end
|
24
|
+
|
25
|
+
def upgrade_mac_os
|
26
|
+
@upgrade_mac_os.run
|
27
|
+
end
|
28
|
+
|
29
|
+
def mac_os_upgrade_needs_a_restart?
|
30
|
+
@upgrade_mac_os.reboot_required?
|
31
|
+
end
|
32
|
+
|
33
|
+
def upgrade_brew
|
34
|
+
run_command 'brew update'
|
35
|
+
run_command 'brew upgrade'
|
36
|
+
run_command 'brew cleanup'
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
class UpgradeMacOS
|
2
|
+
include RunCommand
|
3
|
+
|
4
|
+
def run
|
5
|
+
find_software_upgrades
|
6
|
+
return unless upgrade_available?
|
7
|
+
|
8
|
+
return if reboot_required_and_not_agreed_to?
|
9
|
+
|
10
|
+
execute_upgrade
|
11
|
+
end
|
12
|
+
|
13
|
+
def reboot_required?
|
14
|
+
@output.include? '[restart]'
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def find_software_upgrades
|
20
|
+
say "\nUpdating macOS.\nFinding available software (this may take a while)".yellow
|
21
|
+
|
22
|
+
@output = `softwareupdate --list 2>&1`
|
23
|
+
say @output
|
24
|
+
end
|
25
|
+
|
26
|
+
def upgrade_available?
|
27
|
+
@output.include? 'Software Update found'
|
28
|
+
end
|
29
|
+
|
30
|
+
def reboot_required_and_not_agreed_to?
|
31
|
+
reboot_required? && !agree_for_reboot?
|
32
|
+
end
|
33
|
+
|
34
|
+
def agree_for_reboot?
|
35
|
+
agree "\nYour Mac needs to be rebooted, Still continue?".red + ' (Yes / No)'
|
36
|
+
end
|
37
|
+
|
38
|
+
def execute_upgrade
|
39
|
+
run_command 'softwareupdate --install --all'
|
40
|
+
reboot if reboot_required?
|
41
|
+
end
|
42
|
+
|
43
|
+
def reboot
|
44
|
+
say 'Rebooting Now'.white.on_red
|
45
|
+
say `osascript -e 'tell app "System Events" to restart'`
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative 'upgrade_laptop/run_command'
|
2
|
+
require_relative 'upgrade_laptop/upgrade_laptop_execution'
|
3
|
+
require_relative 'upgrade_laptop/upgrade_mac_os'
|
4
|
+
|
5
|
+
class UpgradeLaptop
|
6
|
+
def run
|
7
|
+
say_hi
|
8
|
+
run_upgrade
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def say_hi
|
14
|
+
say 'Start Update'
|
15
|
+
end
|
16
|
+
|
17
|
+
def run_upgrade
|
18
|
+
UpgradeLaptopExecution.new(UpgradeMacOS.new).run
|
19
|
+
end
|
20
|
+
end
|
data/lib/renuo/cli/version.rb
CHANGED
data/lib/renuo/cli.rb
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
require 'renuo/cli/version'
|
2
2
|
require 'rubygems'
|
3
|
+
require 'colorize'
|
3
4
|
require 'renuo/cli/app/name_display'
|
4
5
|
require 'renuo/cli/app/local_storage'
|
5
6
|
require 'renuo/cli/app/migrate_to_github'
|
6
7
|
require 'renuo/cli/app/list_large_git_files'
|
7
8
|
require 'renuo/cli/app/generate_password'
|
9
|
+
require 'renuo/cli/app/upgrade_laptop.rb'
|
8
10
|
require 'renuo/cli/app/application_setup_auto_config'
|
11
|
+
require 'renuo/cli/app/import_redmine_issues'
|
9
12
|
|
10
13
|
module Renuo
|
11
14
|
class CLI
|
@@ -69,6 +72,16 @@ module Renuo
|
|
69
72
|
end
|
70
73
|
end
|
71
74
|
|
75
|
+
command 'upgrade-laptop' do |c|
|
76
|
+
c.syntax = 'renuo upgrade-laptop'
|
77
|
+
c.summary = 'Upgrades the installed apps from the app store, macOS and homebrew'
|
78
|
+
c.description = 'Upgrades the installed apps from the app store, macOS and homebrew'
|
79
|
+
c.example 'renuo upgrade-laptop', 'upgrades your laptop'
|
80
|
+
c.action do
|
81
|
+
UpgradeLaptop.new.run
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
72
85
|
command 'application-setup-auto-config' do |c|
|
73
86
|
c.syntax = 'renuo application-setup-auto-config'
|
74
87
|
c.summary = 'Sets up the application setup using the default config'
|
@@ -78,6 +91,17 @@ module Renuo
|
|
78
91
|
ApplicationSetupAutoConfig.new.run
|
79
92
|
end
|
80
93
|
end
|
94
|
+
|
95
|
+
command 'import-redmine-issues' do |c|
|
96
|
+
c.syntax = 'renuo import-redmine-issues [csv_path]'
|
97
|
+
c.summary = 'Import Redmine Issues from CSV'
|
98
|
+
c.description = 'Automatically create redmine issues from a CSV file (format project_id,subject,description,estimated_hours)'
|
99
|
+
c.example 'Create Redmine issues from downloaded CSV file', 'renuo import-redmine-issues ~/Downloads/issues.csv'
|
100
|
+
c.action do |args, _options|
|
101
|
+
api_key = ask('Redmine API Key: ') { |q| q.echo = '*' }
|
102
|
+
ImportRedmineIssues.new(api_key).run(args.first)
|
103
|
+
end
|
104
|
+
end
|
81
105
|
end
|
82
106
|
end
|
83
107
|
end
|
data/renuo-cli.gemspec
CHANGED
@@ -27,7 +27,9 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.add_development_dependency 'cucumber'
|
28
28
|
spec.add_development_dependency 'aruba'
|
29
29
|
spec.add_development_dependency 'rubocop'
|
30
|
+
spec.add_development_dependency 'mdl'
|
30
31
|
spec.add_development_dependency 'pry'
|
31
32
|
spec.add_development_dependency 'coveralls'
|
32
33
|
spec.add_development_dependency 'redcarpet'
|
34
|
+
spec.add_development_dependency 'colorize'
|
33
35
|
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: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lukas Elmer
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: mdl
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: pry
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +164,20 @@ dependencies:
|
|
150
164
|
- - ">="
|
151
165
|
- !ruby/object:Gem::Version
|
152
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: colorize
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
153
181
|
description: The Renuo CLI automates some commonly used workflows by providing a command
|
154
182
|
line interface.
|
155
183
|
email:
|
@@ -162,6 +190,7 @@ files:
|
|
162
190
|
- ".coveralls.yml"
|
163
191
|
- ".editorconfig"
|
164
192
|
- ".gitignore"
|
193
|
+
- ".mdlrc"
|
165
194
|
- ".rspec"
|
166
195
|
- ".rubocop.yml"
|
167
196
|
- ".ruby-version"
|
@@ -178,11 +207,16 @@ files:
|
|
178
207
|
- lib/renuo/cli.rb
|
179
208
|
- lib/renuo/cli/app/application_setup_auto_config.rb
|
180
209
|
- lib/renuo/cli/app/generate_password.rb
|
210
|
+
- lib/renuo/cli/app/import_redmine_issues.rb
|
181
211
|
- lib/renuo/cli/app/list_large_git_files.rb
|
182
212
|
- lib/renuo/cli/app/local_storage.rb
|
183
213
|
- lib/renuo/cli/app/migrate_to_github.rb
|
184
214
|
- lib/renuo/cli/app/name_display.rb
|
185
215
|
- lib/renuo/cli/app/services/markdown_parser_service.rb
|
216
|
+
- lib/renuo/cli/app/upgrade_laptop.rb
|
217
|
+
- lib/renuo/cli/app/upgrade_laptop/run_command.rb
|
218
|
+
- lib/renuo/cli/app/upgrade_laptop/upgrade_laptop_execution.rb
|
219
|
+
- lib/renuo/cli/app/upgrade_laptop/upgrade_mac_os.rb
|
186
220
|
- lib/renuo/cli/version.rb
|
187
221
|
- renuo-cli.gemspec
|
188
222
|
homepage: https://github.com/renuo/renuo-cli
|