chid 0.1.6 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +27 -0
- data/CONTRIBUTING.md +78 -0
- data/Gemfile.lock +34 -34
- data/README.md +135 -89
- data/bin/chid +2 -25
- data/chid.gemspec +0 -6
- data/lib/chid.rb +0 -66
- data/lib/chid/chid_config.rb +6 -83
- data/lib/chid/command.rb +1 -1
- data/lib/chid/commands/alias/create.rb +53 -0
- data/lib/chid/commands/config.rb +48 -0
- data/lib/chid/commands/currency/convert.rb +50 -0
- data/lib/chid/commands/currency/list.rb +34 -0
- data/lib/chid/commands/currency/now.rb +47 -0
- data/lib/chid/commands/gitflow/commit.rb +0 -1
- data/lib/chid/commands/github.rb +40 -0
- data/lib/chid/commands/init.rb +1 -2
- data/lib/chid/commands/install.rb +1 -0
- data/lib/chid/commands/installs/dotfile.rb +27 -11
- data/lib/chid/commands/installs/node.rb +5 -3
- data/lib/chid/commands/installs/postgres.rb +6 -3
- data/lib/chid/commands/installs/rvm.rb +9 -4
- data/lib/chid/commands/installs/vim.rb +69 -0
- data/lib/chid/commands/pr.rb +63 -0
- data/lib/chid/commands/tmux/open.rb +3 -2
- data/lib/chid/commands/workstation/create.rb +101 -0
- data/lib/chid/commands/workstation/destroy.rb +61 -0
- data/lib/chid/commands/workstation/open.rb +4 -4
- data/lib/chid/github_api.rb +9 -0
- data/lib/chid/version.rb +1 -1
- data/spec/lib/chid/commands/alias/create_spec.rb +55 -0
- data/spec/lib/chid/commands/init_spec.rb +4 -2
- data/spec/lib/chid/commands/pr_spec.rb +68 -0
- data/spec/lib/chid/commands/workstation/create_spec.rb +153 -0
- data/spec/support/.bashrc +7 -0
- data/spec/support/.chid.config +7 -0
- data/tasks/install/yadr_dotfiles.rake +1 -0
- data/tasks/run/postgres.rake +1 -0
- data/tasks/update/os.rake +1 -0
- metadata +21 -58
- data/#README.md# +0 -221
- data/Rakefile +0 -18
- data/lib/chid/yandex_translate_api.rb +0 -39
- data/tasks/chid/config.rake +0 -5
- data/tasks/chid/init.rake +0 -19
- data/tasks/chid/install.rake +0 -14
- data/tasks/chid/start.rake +0 -26
- data/tasks/chid/update.rake +0 -14
- data/tasks/currency/convert.rake +0 -9
- data/tasks/currency/current.rake +0 -11
- data/tasks/currency/list.rake +0 -10
- data/tasks/github.rake +0 -12
- data/tasks/help.rake +0 -178
- data/tasks/install/node.rake +0 -18
- data/tasks/install/postgres.rake +0 -18
- data/tasks/install/rvm.rake +0 -21
- data/tasks/news.rake +0 -11
- data/tasks/stack_overflow.rake +0 -20
- data/tasks/tmux/config_windows.rake +0 -8
- data/tasks/tmux/new_session.rake +0 -9
- data/tasks/translate/yandex_list.rake +0 -7
- data/tasks/translate/yandex_translate.rake +0 -8
- data/tasks/workstation/create.rake +0 -23
- data/tasks/workstation/destroy.rake +0 -14
- data/tasks/workstation/list.rake +0 -10
- data/tasks/workstation/open.rake +0 -29
@@ -0,0 +1,47 @@
|
|
1
|
+
module Chid
|
2
|
+
module Commands
|
3
|
+
module Currency
|
4
|
+
class Current < Command
|
5
|
+
|
6
|
+
command :'currency now'
|
7
|
+
|
8
|
+
self.summary = 'Get the now converstion. Default -from USD -to BRL'
|
9
|
+
self.description = <<-DESC
|
10
|
+
|
11
|
+
Usage:
|
12
|
+
|
13
|
+
$ chid currency now
|
14
|
+
or
|
15
|
+
$ chid currency now -to BRL -from USB
|
16
|
+
|
17
|
+
Get the now converstion. Default -from USD -to BRL
|
18
|
+
|
19
|
+
But you can given the options for any other Sources
|
20
|
+
|
21
|
+
To see all list of Source avaialble, please run `chid currency list`
|
22
|
+
|
23
|
+
Options:
|
24
|
+
|
25
|
+
-to SOURCE_TO_FINAL_VALUE
|
26
|
+
-from SOURCE_TO_BE_REFERANCE
|
27
|
+
|
28
|
+
DESC
|
29
|
+
self.arguments = ['-to', '-from']
|
30
|
+
|
31
|
+
def run
|
32
|
+
currency = CurrencyApi.convert(to: to, from: from)
|
33
|
+
puts "1 #{from} is #{currency} #{to}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def to
|
37
|
+
options['-to']&.compact&.join || 'BRL'
|
38
|
+
end
|
39
|
+
|
40
|
+
def from
|
41
|
+
options['-from']&.compact&.join || 'USD'
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Chid
|
2
|
+
module Commands
|
3
|
+
class Github < Command
|
4
|
+
|
5
|
+
command :'github'
|
6
|
+
|
7
|
+
self.summary = 'List all repositories from GitHub for a given SEARCH'
|
8
|
+
self.description = <<-DESC
|
9
|
+
|
10
|
+
Usage:
|
11
|
+
|
12
|
+
$ chid github -name rachidcalazans/chid
|
13
|
+
or
|
14
|
+
$ chid github -n rachidcalazans/chid
|
15
|
+
|
16
|
+
List all repositories from GitHub for a given SEARCH
|
17
|
+
|
18
|
+
Options:
|
19
|
+
|
20
|
+
-n NAME_TO_SEARCH
|
21
|
+
-name NAME_TO_SEARCH
|
22
|
+
|
23
|
+
DESC
|
24
|
+
self.arguments = ['-name', '-n']
|
25
|
+
|
26
|
+
def run
|
27
|
+
search_expression = name
|
28
|
+
repositories = GitHubApi.repositories(search_expression)
|
29
|
+
|
30
|
+
Paginator.new(repositories).paginate do |repository|
|
31
|
+
repository.summary
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def name
|
36
|
+
self.class.arguments.map { |a| options[a] }.compact.join(' ')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/chid/commands/init.rb
CHANGED
@@ -24,7 +24,7 @@ Usage:
|
|
24
24
|
|
25
25
|
private
|
26
26
|
def chid_config_path
|
27
|
-
|
27
|
+
@chid_config_path ||= ::ChidConfig.new.chid_config_path
|
28
28
|
end
|
29
29
|
|
30
30
|
def create_or_update_chid_config_file
|
@@ -67,7 +67,6 @@ Usage:
|
|
67
67
|
def chid_config_file_exist?
|
68
68
|
File.exist?(chid_config_path)
|
69
69
|
end
|
70
|
-
|
71
70
|
end
|
72
71
|
end
|
73
72
|
end
|
@@ -12,7 +12,7 @@ Usage:
|
|
12
12
|
|
13
13
|
$ chid install dotfile
|
14
14
|
|
15
|
-
For Linux users will install through curl
|
15
|
+
For Linux users will install through curl
|
16
16
|
|
17
17
|
For OSx users will install through curl
|
18
18
|
|
@@ -21,23 +21,39 @@ Usage:
|
|
21
21
|
|
22
22
|
def run
|
23
23
|
puts "\nInstalling the YADR Dotfiles..."
|
24
|
-
|
24
|
+
|
25
|
+
puts "\nCreating undodir folder"
|
26
|
+
system('mkdir ~/.vim/undodir')
|
27
|
+
|
28
|
+
::ChidConfig.on_linux do
|
29
|
+
puts "\nInstalling all dependencies"
|
25
30
|
system('sudo apt-get update')
|
26
31
|
system('sudo apt-get install curl')
|
32
|
+
system('sudo apt-get install tmux')
|
33
|
+
system('sudo apt-get install xclip')
|
34
|
+
system('sudo apt install npm')
|
35
|
+
system('sudo apt-get install ripgrep')
|
36
|
+
system('sudo apt-get install fzf')
|
27
37
|
system('sudo apt-get install zsh')
|
28
|
-
system('sudo apt
|
38
|
+
system('sudo apt install git-all')
|
29
39
|
end
|
30
40
|
|
31
|
-
|
41
|
+
puts "\nDownloading tmux config"
|
42
|
+
system('curl -o ~/.tmux.conf https://gist.githubusercontent.com/rachidcalazans/b9ede3f6e49450b41a5bbaff9ccc8cad/raw/f0c1fe18b22772ad04bf322aeb49df993e73877c/.tmux.conf')
|
43
|
+
|
44
|
+
puts "\nDownloading .vimrc"
|
45
|
+
system('curl -o ~/.vimrc https://gist.githubusercontent.com/rachidcalazans/e7b7ee668b9a8b247b3a9c20e5669366/raw/84af22bb3c5fb24b01aa8a01e8b783f85a6928b5/.vimrc')
|
46
|
+
|
47
|
+
puts "\nDownloading coc-settings.json"
|
48
|
+
system('curl -o ~/.vim/coc-settings.json https://gist.githubusercontent.com/rachidcalazans/a29bdedde40b328a14279bda419ccd4f/raw/59492c4096d77aef4690b1516d9c9f597fafd205/coc-settings.json')
|
49
|
+
|
50
|
+
puts "\nInstalling Oh My ZSH"
|
51
|
+
system('sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"')
|
32
52
|
|
33
|
-
puts
|
34
|
-
|
35
|
-
path = "#{home_path}/.yadr"
|
36
|
-
Dir.chdir path
|
37
|
-
system('git pull --rebase')
|
38
|
-
system('rake update')
|
53
|
+
puts "\nInstalling all Vim Plugins"
|
54
|
+
system("vim +'PlugInstall --sync' +qa")
|
39
55
|
|
40
|
-
puts "\
|
56
|
+
puts "\nDotfiles installed successfully"
|
41
57
|
end
|
42
58
|
|
43
59
|
end
|
@@ -22,11 +22,13 @@ Usage:
|
|
22
22
|
def run
|
23
23
|
puts "\nInstalling the Node..."
|
24
24
|
|
25
|
-
::
|
26
|
-
system('sudo apt
|
25
|
+
::ChidConfig.on_linux do
|
26
|
+
system('sudo apt update')
|
27
|
+
system('sudo apt install nodejs')
|
27
28
|
end
|
28
29
|
|
29
|
-
::
|
30
|
+
::ChidConfig.on_osx do
|
31
|
+
system('brew update')
|
30
32
|
system('brew install node')
|
31
33
|
end
|
32
34
|
|
@@ -24,11 +24,14 @@ Usage:
|
|
24
24
|
def run
|
25
25
|
puts "\nInstalling the Postgres..."
|
26
26
|
|
27
|
-
::
|
28
|
-
system('sudo apt
|
27
|
+
::ChidConfig.on_linux do
|
28
|
+
system('sudo apt update')
|
29
|
+
system('sudo apt install postgresql postgresql-contrib')
|
30
|
+
system('sudo apt-get install libpq-dev')
|
29
31
|
end
|
30
32
|
|
31
|
-
::
|
33
|
+
::ChidConfig.on_osx do
|
34
|
+
system('brew update')
|
32
35
|
system('brew install postgres')
|
33
36
|
end
|
34
37
|
|
@@ -22,19 +22,24 @@ Usage:
|
|
22
22
|
|
23
23
|
def run
|
24
24
|
puts "\nInstalling the RVM..."
|
25
|
+
system('gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB')
|
25
26
|
|
26
|
-
::
|
27
|
+
::ChidConfig.on_linux do
|
28
|
+
system('sudo apt-get install software-properties-common')
|
29
|
+
system('sudo apt-get install curl')
|
27
30
|
system('sudo apt-add-repository -y ppa:rael-gc/rvm')
|
28
31
|
system('sudo apt-get update')
|
29
|
-
system('sudo apt-get install curl')
|
30
32
|
system('sudo apt-get install rvm')
|
33
|
+
|
34
|
+
system("echo 'source \"/etc/profile.d/rvm.sh\"' >> ~/.bashrc")
|
31
35
|
end
|
32
36
|
|
33
|
-
::
|
34
|
-
system('\curl -sSL https://get.rvm.io | bash')
|
37
|
+
::ChidConfig.on_osx do
|
38
|
+
system('\curl -sSL https://get.rvm.io | bash -s stable --ruby')
|
35
39
|
end
|
36
40
|
|
37
41
|
puts "\nRVM installed successfully"
|
42
|
+
puts "\nPlease rebot your terminal"
|
38
43
|
end
|
39
44
|
|
40
45
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Chid
|
2
|
+
module Commands
|
3
|
+
module Installs
|
4
|
+
class Vim < Command
|
5
|
+
|
6
|
+
command :'install vim'
|
7
|
+
|
8
|
+
self.summary = 'Install vim and gvim'
|
9
|
+
self.description = <<-DESC
|
10
|
+
|
11
|
+
Usage:
|
12
|
+
$ chid install vim or chid install gvim
|
13
|
+
|
14
|
+
For Linux users will install through apt-get
|
15
|
+
|
16
|
+
For OSx users will install through brew
|
17
|
+
|
18
|
+
DESC
|
19
|
+
self.arguments = []
|
20
|
+
|
21
|
+
def run
|
22
|
+
puts "\nInstalling vim..."
|
23
|
+
|
24
|
+
is_vim = do_vim?
|
25
|
+
is_gvim = do_gvim?
|
26
|
+
|
27
|
+
::ChidConfig.on_linux do
|
28
|
+
system('sudo apt update')
|
29
|
+
|
30
|
+
if is_vim
|
31
|
+
system('sudo add-apt-repository ppa:jonathonf/vim')
|
32
|
+
system('sudo apt update')
|
33
|
+
system('sudo apt install vim')
|
34
|
+
end
|
35
|
+
|
36
|
+
system('sudo apt-get install vim-gnome') if is_gvim
|
37
|
+
end
|
38
|
+
|
39
|
+
::ChidConfig.on_osx do
|
40
|
+
system('brew update')
|
41
|
+
system('brew install vim')
|
42
|
+
end
|
43
|
+
|
44
|
+
puts "\nVim installed successfully" if is_vim
|
45
|
+
puts "\nGvim installed successfully" if is_gvim
|
46
|
+
|
47
|
+
puts "\nNothing installed =(" unless is_vim || is_gvim
|
48
|
+
end
|
49
|
+
|
50
|
+
def prompt
|
51
|
+
@prompt ||= TTY::Prompt.new
|
52
|
+
end
|
53
|
+
|
54
|
+
def do_vim?
|
55
|
+
answers = ['Yes','No']
|
56
|
+
should_install_vim = prompt.select('Install vim ?', answers)
|
57
|
+
should_install_vim == 'Yes'
|
58
|
+
end
|
59
|
+
|
60
|
+
def do_gvim?
|
61
|
+
answers = ['Yes','No']
|
62
|
+
should_install_gvim = prompt.select('Install gvim too?', answers)
|
63
|
+
should_install_gvim == 'Yes'
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Chid
|
2
|
+
module Commands
|
3
|
+
class Pr < Command
|
4
|
+
|
5
|
+
command :'pr'
|
6
|
+
|
7
|
+
self.summary = "Will return a list of Open PR's filters by given user"
|
8
|
+
self.description = <<-DESC
|
9
|
+
|
10
|
+
Usage:
|
11
|
+
|
12
|
+
$ chid pr
|
13
|
+
|
14
|
+
or
|
15
|
+
|
16
|
+
$ chid pr -user rachidcalazans
|
17
|
+
|
18
|
+
|
19
|
+
Options:
|
20
|
+
|
21
|
+
-user
|
22
|
+
|
23
|
+
DESC
|
24
|
+
self.arguments = ['-user']
|
25
|
+
|
26
|
+
def run
|
27
|
+
json_prs = GitHubApi.prs(by: user)
|
28
|
+
msg = build_msg(json_prs)
|
29
|
+
|
30
|
+
send_msg(msg)
|
31
|
+
|
32
|
+
msg
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def user
|
38
|
+
options['-user']&.first
|
39
|
+
end
|
40
|
+
|
41
|
+
def build_msg(json_prs)
|
42
|
+
json_prs
|
43
|
+
.filter { |pr| pr['user']['login'] == user }
|
44
|
+
.each_with_object([]) do |pr, memo|
|
45
|
+
pr.transform_keys!(&:to_sym)
|
46
|
+
pr[:user].transform_keys!(&:to_sym)
|
47
|
+
|
48
|
+
memo << <<~STR
|
49
|
+
##{pr[:number]} - #{pr[:title]}
|
50
|
+
By #{pr[:user][:login]}
|
51
|
+
Status: #{pr[:state]}
|
52
|
+
Labels: #{pr[:labels].map { |label| label['name'] }.join(', ') }
|
53
|
+
STR
|
54
|
+
end.join("\n---\n\n")
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
def send_msg(msg)
|
59
|
+
puts msg
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -56,7 +56,7 @@ Options:
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def chid_config
|
59
|
-
::
|
59
|
+
::ChidConfig.new
|
60
60
|
end
|
61
61
|
|
62
62
|
def templates
|
@@ -65,8 +65,9 @@ Options:
|
|
65
65
|
|
66
66
|
def select_template
|
67
67
|
prompt = TTY::Prompt.new
|
68
|
-
choices = templates.keys
|
68
|
+
choices = templates.keys.map(&:to_s)
|
69
69
|
selected_template = prompt.select('Choose a template to open', choices)
|
70
|
+
|
70
71
|
selected_template
|
71
72
|
end
|
72
73
|
|
@@ -0,0 +1,101 @@
|
|
1
|
+
module Chid
|
2
|
+
module Commands
|
3
|
+
module Workstation
|
4
|
+
class Create < Command
|
5
|
+
|
6
|
+
command :'workstation create'
|
7
|
+
|
8
|
+
self.summary = 'Create a new workstation'
|
9
|
+
self.description = <<-DESC
|
10
|
+
|
11
|
+
Usage:
|
12
|
+
|
13
|
+
$ chid workstation create
|
14
|
+
|
15
|
+
Create a new workstation with the selected apps.
|
16
|
+
|
17
|
+
# @todo - Add description to use with new arguments
|
18
|
+
|
19
|
+
To see all workstations you can run
|
20
|
+
|
21
|
+
$ chid workstation list
|
22
|
+
|
23
|
+
DESC
|
24
|
+
self.arguments = ['-name', '-app_names']
|
25
|
+
|
26
|
+
def run
|
27
|
+
workstation_name = get_workstation_name
|
28
|
+
result = ::ChidConfig.on_osx { select_apps_on_osx }
|
29
|
+
|
30
|
+
if result.empty?
|
31
|
+
puts "\nYou did not select any App, please try again."
|
32
|
+
return
|
33
|
+
end
|
34
|
+
|
35
|
+
chid_config.create_workstation(workstation_name, result)
|
36
|
+
|
37
|
+
puts "\n#{workstation_name} workstation was created!"
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def get_workstation_name
|
43
|
+
return option_name if option_name
|
44
|
+
|
45
|
+
puts 'tell me the name of the new workstation'
|
46
|
+
print "> "
|
47
|
+
STDIN.gets.strip
|
48
|
+
end
|
49
|
+
|
50
|
+
def option_name
|
51
|
+
options['-name']&.first&.strip
|
52
|
+
end
|
53
|
+
|
54
|
+
def option_app_names
|
55
|
+
options['-app_names']
|
56
|
+
end
|
57
|
+
|
58
|
+
def chid_config
|
59
|
+
::ChidConfig.new
|
60
|
+
end
|
61
|
+
|
62
|
+
def select_apps_on_osx
|
63
|
+
prompt = TTY::Prompt.new
|
64
|
+
|
65
|
+
choices = osx_application_names
|
66
|
+
|
67
|
+
default_choices = default_choices(choices)
|
68
|
+
|
69
|
+
prompt.multi_select('select all apps for that workstation?', choices, default: default_choices)
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
def osx_application_names
|
74
|
+
osx_application_names = %x{ls /applications}.strip
|
75
|
+
|
76
|
+
osx_application_names
|
77
|
+
.gsub(/\n/, ' - ')
|
78
|
+
.gsub('.app', '')
|
79
|
+
.split(' - ')
|
80
|
+
end
|
81
|
+
|
82
|
+
def default_choices(choices)
|
83
|
+
return unless option_app_names
|
84
|
+
|
85
|
+
choices
|
86
|
+
.flatten
|
87
|
+
.each_with_object([])
|
88
|
+
.each_with_index do |(choice, memo), index|
|
89
|
+
memo << index + 1 if choice_in_option_app_names?(choice)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def choice_in_option_app_names?(choice)
|
94
|
+
DidYouMean::SpellChecker
|
95
|
+
.new(dictionary: option_app_names)
|
96
|
+
.correct(choice).any?
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|