chid 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 302e84247d319913b2709f901d64d151ea8356b1a0020c9bce060ef31f54c09f
4
- data.tar.gz: f513f6414c055d4f5e9c56786e95f6ca8225465f3f5336129c6bec2fbdeb445d
3
+ metadata.gz: b4c0781e14ef22978392d80819ff7b1835bc5b7c8396e1d8f1a9ad36b296cb66
4
+ data.tar.gz: 836462ef8b68c6edda4c9c783f04caef9830dff476af59ea5072bbbf5f6a66a2
5
5
  SHA512:
6
- metadata.gz: 31c0da9120b6a007dd008b8ef566098d5309bc46609a023351a14e61f43c28534b021f9006b60b00d105aa42da13f114dacb52b13cd3ffabdb9c37bf2145512e
7
- data.tar.gz: 74f02f3751b3a70bed7585b165bb9035c93a7eda44eb558cde93b5cf69b027c7ef99549f891c0a5ae6a91ab3504f0b6adf00f91252bb56ccaf02d4d92d0d0b61
6
+ metadata.gz: aeaedc1bb901c77c9d3650e4dc180511f1f277eb932e41f46cfeffee4917c053f0bd6c8270b7c7607941d7e6f4c1967ff5ac499d01b6f3079bba5c0a9078500a
7
+ data.tar.gz: '0307939c58378866fdb7fec4431af85023ff06281929cba8ab5f354db36fe11612a9be20d4bdba693b191e98131a573ec63ad1fb957b8b96fc7de784a12b915e'
@@ -0,0 +1 @@
1
+ chid
@@ -0,0 +1 @@
1
+ 2.6.5
@@ -1,3 +1,9 @@
1
+ ### 0.2.2
2
+
3
+ * Update:
4
+ - Install Commands
5
+ - Replace old dotfiles for Chid files config ofr zsh, vimrc and tmux
6
+
1
7
  ### 0.2.1
2
8
 
3
9
  * Update:
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- chid (0.1.6.2)
4
+ chid (0.2.1)
5
5
  http
6
6
  tty-prompt
7
7
 
@@ -15,25 +15,31 @@ GEM
15
15
  domain_name (0.5.20190701)
16
16
  unf (>= 0.0.5, < 1.0.0)
17
17
  equatable (0.6.1)
18
- http (4.1.1)
18
+ ffi (1.13.1)
19
+ ffi-compiler (1.0.1)
20
+ ffi (>= 1.0.0)
21
+ rake
22
+ http (4.4.1)
19
23
  addressable (~> 2.3)
20
24
  http-cookie (~> 1.0)
21
- http-form_data (~> 2.0)
22
- http_parser.rb (~> 0.6.0)
25
+ http-form_data (~> 2.2)
26
+ http-parser (~> 1.2.0)
23
27
  http-cookie (1.0.3)
24
28
  domain_name (~> 0.5)
25
- http-form_data (2.1.1)
26
- http_parser.rb (0.6.0)
29
+ http-form_data (2.3.0)
30
+ http-parser (1.2.1)
31
+ ffi-compiler (>= 1.0, < 2.0)
27
32
  method_source (0.8.2)
28
- necromancer (0.5.0)
29
- pastel (0.7.3)
33
+ necromancer (0.5.1)
34
+ pastel (0.7.4)
30
35
  equatable (~> 0.6)
31
36
  tty-color (~> 0.5)
32
37
  pry (0.10.4)
33
38
  coderay (~> 1.1.0)
34
39
  method_source (~> 0.8.1)
35
40
  slop (~> 3.4)
36
- public_suffix (4.0.1)
41
+ public_suffix (4.0.5)
42
+ rake (13.0.1)
37
43
  rspec (3.6.0)
38
44
  rspec-core (~> 3.6.0)
39
45
  rspec-expectations (~> 3.6.0)
@@ -48,21 +54,21 @@ GEM
48
54
  rspec-support (~> 3.6.0)
49
55
  rspec-support (3.6.0)
50
56
  slop (3.6.0)
51
- tty-color (0.5.0)
52
- tty-cursor (0.7.0)
53
- tty-prompt (0.19.0)
57
+ tty-color (0.5.1)
58
+ tty-cursor (0.7.1)
59
+ tty-prompt (0.21.0)
54
60
  necromancer (~> 0.5.0)
55
61
  pastel (~> 0.7.0)
56
- tty-reader (~> 0.6.0)
57
- tty-reader (0.6.0)
62
+ tty-reader (~> 0.7.0)
63
+ tty-reader (0.7.0)
58
64
  tty-cursor (~> 0.7)
59
65
  tty-screen (~> 0.7)
60
66
  wisper (~> 2.0.0)
61
- tty-screen (0.7.0)
67
+ tty-screen (0.8.0)
62
68
  unf (0.1.4)
63
69
  unf_ext
64
- unf_ext (0.0.7.6)
65
- wisper (2.0.0)
70
+ unf_ext (0.0.7.7)
71
+ wisper (2.0.1)
66
72
 
67
73
  PLATFORMS
68
74
  ruby
@@ -73,4 +79,4 @@ DEPENDENCIES
73
79
  rspec
74
80
 
75
81
  BUNDLED WITH
76
- 1.17.2
82
+ 2.1.4
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Chid
2
- Chid is an assistant to help your day-to-day life. It can be used in some
2
+ Chid is an assistant to help your day-to-day life. It can be used in some
3
3
  installations, news, configurations, workstations and more.
4
4
 
5
- ![](http://g.recordit.co/pKS2oKCUuU.gif)
5
+ ![](https://user-images.githubusercontent.com/47482049/67632355-199ecb80-f89a-11e9-879e-32a0987108ca.gif)
6
6
 
7
7
  ## Installation
8
8
 
@@ -96,10 +96,10 @@ Signed-off-by: "YourName" "yourEmail@mail.com"
96
96
 
97
97
  ### <a name="install-apps"></a> Install apps
98
98
 
99
- **Note:** All install tasks, chid will always ask if you really want to install it. Also
99
+ **Note:** All install tasks, chid will always ask if you really want to install it. Also
100
100
  will install the dependencies if necessary.
101
101
 
102
- * `$ chid install dotfiles` - Install [YADR Dotfiles](https://github.com/skwp/dotfiles)
102
+ * `$ chid install dotfiles` - Install my own dotfiles for vim, zsh and tmux
103
103
  * `$ chid install node` - Install Node
104
104
  * `$ chid install postgres` - Install Postgres
105
105
  * `$ chid install rvm` - Install stable RVM version
@@ -128,9 +128,7 @@ A simple search in StackOverflow
128
128
  * `$ chid stack -search [TEXT_TO_SEACH]` - Will search on StackOverflow all results for that
129
129
  text.
130
130
 
131
- <p align="left">
132
- <img src="etc/img/stack.png" alt="stack sample" />
133
- </p>
131
+ ![stackchid](https://user-images.githubusercontent.com/47482049/67722187-5c62bf80-f9d0-11e9-9921-86d2b548cc97.gif)
134
132
 
135
133
  ### <a name="search-gitHub-repositories"></a> Search GitHub repositories
136
134
 
@@ -159,7 +157,7 @@ choose one of them to open all applications
159
157
  from a list. Eg.: `$ chid workstation open -name base` - It will open all applications inside the
160
158
  **base** workstation
161
159
 
162
- ![](http://g.recordit.co/WFqNuxORRd.gif)
160
+ ![workstationchid](https://user-images.githubusercontent.com/47482049/67722314-b794b200-f9d0-11e9-81cd-1e7b0b27bedf.gif)
163
161
 
164
162
  **Note:** For linux users the `$chid workstation create` is not working. You need create
165
163
  manually (editing the .chid.config file). Will be explained how on
@@ -240,14 +238,13 @@ To add a new *workstation* you can edit like:
240
238
  - Slack
241
239
  :tmux_templates: {}
242
240
  ```
241
+ ![configchid](https://user-images.githubusercontent.com/47482049/67722353-d2672680-f9d0-11e9-8c52-8dad5d2ad22f.gif)
243
242
 
244
243
  After edit you can open the **base** workstation running:
245
244
 
246
245
  * `$ chid workstation open -name base`
247
246
  * `$ chid workstation open -n base`
248
247
 
249
- ![](http://g.recordit.co/VqTjUsQ9fy.gif)
250
-
251
248
  #### Advance configuration
252
249
 
253
250
  Is possible you can customize some options with each Application when will open it
@@ -268,5 +265,3 @@ Is possible you can customize some options with each Application when will open
268
265
  :tmux_templates: {}
269
266
  ```
270
267
 
271
- ![](http://g.recordit.co/40rFYBBR1t.gif)
272
-
@@ -2,9 +2,9 @@ class ChidConfig
2
2
 
3
3
  attr_reader :chid_path, :home_path, :chid_config_path
4
4
 
5
- def initialize
5
+ def initialize(home_base_path: "~/")
6
6
  @chid_path = Dir.pwd
7
- @home_path = File.expand_path("~/")
7
+ @home_path = File.expand_path(home_base_path)
8
8
  @chid_config_path = File.join(home_path, '.chid.config')
9
9
  end
10
10
 
@@ -70,7 +70,7 @@ Commands:
70
70
  private
71
71
 
72
72
  def arg_is_an_option?(arg)
73
- arg.include?('-')
73
+ arg.start_with?('-')
74
74
  end
75
75
 
76
76
  def options_with_values(options, arg)
@@ -0,0 +1,53 @@
1
+ module Chid
2
+ module Commands
3
+ module Alias
4
+ class Create < Command
5
+
6
+ command :'alias create'
7
+
8
+ self.summary = 'Create a new alias'
9
+ self.description = <<-DESC
10
+
11
+ Usage:
12
+
13
+ $ chid alias create -command {COMMAND} -alias {ALIAS}
14
+
15
+ Example:
16
+
17
+ $ chid alias create -command "chid workstation create" -alias cwo
18
+
19
+ DESC
20
+ self.arguments = ['-command', '-alias']
21
+
22
+ def run
23
+ add_command_on_bashrc
24
+
25
+ print "Please run: source ~/.bashrc".blue
26
+ end
27
+
28
+ private
29
+
30
+ def add_command_on_bashrc
31
+ File.open(bashrc_path, 'a') { |file| file.puts shell_command }
32
+ end
33
+
34
+ def bashrc_path
35
+ @bashrc_path ||= File.join(Dir.home, '.bashrc')
36
+ end
37
+
38
+ def shell_command
39
+ "alias #{alias_value}='#{command}'"
40
+ end
41
+
42
+ def alias_value
43
+ options['-alias'].first
44
+ end
45
+
46
+ def command
47
+ options['-command'].first
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+
@@ -12,7 +12,7 @@ Usage:
12
12
 
13
13
  $ chid install dotfile
14
14
 
15
- For Linux users will install through curl and will isntall zsh and git-core
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
+
25
+ puts "\nCreating undodir folder"
26
+ system('mkdir ~/.vim/undodir')
27
+
24
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-get install git-core')
38
+ system('sudo apt install git-all')
29
39
  end
30
40
 
31
- system('sh -c "`curl -fsSL https://raw.githubusercontent.com/skwp/dotfiles/master/install.sh`"')
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 'Updating YARD...'
34
- home_path = File.expand_path("~/")
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 "\nYARD Dotfiles installed successfully"
56
+ puts "\nDotfiles installed successfully"
41
57
  end
42
58
 
43
59
  end
@@ -23,10 +23,12 @@ Usage:
23
23
  puts "\nInstalling the Node..."
24
24
 
25
25
  ::ChidConfig.on_linux do
26
- system('sudo apt-get install nodejs')
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
 
@@ -25,10 +25,13 @@ Usage:
25
25
  puts "\nInstalling the Postgres..."
26
26
 
27
27
  ::ChidConfig.on_linux do
28
- system('sudo apt-get install postgresql postgresql-contrib')
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
37
  ::ChidConfig.on_osx do
34
- system('\curl -sSL https://get.rvm.io | bash')
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
@@ -25,12 +25,20 @@ Usage:
25
25
  is_gvim = do_gvim?
26
26
 
27
27
  ::ChidConfig.on_linux do
28
- system('sudo apt-get install vim') if is_vim
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
+
29
36
  system('sudo apt-get install vim-gnome') if is_gvim
30
37
  end
31
38
 
32
39
  ::ChidConfig.on_osx do
33
- system('brew install vim && brew install macvim')
40
+ system('brew update')
41
+ system('brew install vim')
34
42
  end
35
43
 
36
44
  puts "\nVim installed successfully" if is_vim
@@ -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
@@ -14,15 +14,17 @@ Usage:
14
14
 
15
15
  Create a new workstation with the selected apps.
16
16
 
17
+ # @todo - Add description to use with new arguments
18
+
17
19
  To see all workstations you can run
18
20
 
19
21
  $ chid workstation list
20
22
 
21
23
  DESC
22
- self.arguments = []
24
+ self.arguments = ['-name', '-app_names']
23
25
 
24
26
  def run
25
- workstation_name = get_workstation_name
27
+ workstation_name = get_workstation_name
26
28
  result = ::ChidConfig.on_osx { select_apps_on_osx }
27
29
 
28
30
  if result.empty?
@@ -38,11 +40,21 @@ Usage:
38
40
  private
39
41
 
40
42
  def get_workstation_name
43
+ return option_name if option_name
44
+
41
45
  puts 'tell me the name of the new workstation'
42
46
  print "> "
43
47
  STDIN.gets.strip
44
48
  end
45
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
+
46
58
  def chid_config
47
59
  ::ChidConfig.new
48
60
  end
@@ -50,12 +62,38 @@ Usage:
50
62
  def select_apps_on_osx
51
63
  prompt = TTY::Prompt.new
52
64
 
53
- choices = %x{ls /applications}.strip
54
- choices = choices
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
55
77
  .gsub(/\n/, ' - ')
56
78
  .gsub('.app', '')
57
79
  .split(' - ')
58
- prompt.multi_select('select all apps for that workstation?', choices)
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?
59
97
  end
60
98
  end
61
99
  end
@@ -26,6 +26,15 @@ class GitHubApi
26
26
  end
27
27
  end
28
28
 
29
+ def self.prs(by:)
30
+ owner = 'rachidcalazans'
31
+ repo_name = 'chid'
32
+ uri = URI("https://api.github.com/repos/#{owner}/#{repo_name}/pulls")
33
+ request = ::HTTP.get(uri)
34
+
35
+ JSON.parse request
36
+ end
37
+
29
38
  def self.repositories(search_expression)
30
39
  uri = URI("https://api.github.com/search/repositories?q=#{search_expression}&sort=stars&order=desc")
31
40
  request = ::HTTP.get(uri)
@@ -1,3 +1,3 @@
1
1
  module Chid
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe ::Chid::Commands::Alias::Create, '#run' do
4
+ let(:alias_command) { ['alias', 'create'] }
5
+
6
+ before do
7
+ reset_bashrc(bashrc_path)
8
+ override_bashrc_path
9
+ invoke_run
10
+ end
11
+
12
+ let(:bashrc_path) { File.join(Dir.pwd, 'spec/support/.bashrc') }
13
+ let(:override_bashrc_path) do
14
+ allow_any_instance_of(described_class).to receive(:bashrc_path)
15
+ .and_return(bashrc_path)
16
+ end
17
+ let(:invoke_run) do
18
+ argv = alias_command
19
+ .concat(arguments)
20
+ .compact
21
+
22
+ Chid::Command.run(argv)
23
+ end
24
+
25
+ context 'when given required arguments' do
26
+ let(:arguments) { ['-command', 'chid workstation open', '-alias', 'cwo'] }
27
+
28
+ it 'add alias on .bashrc' do
29
+ last_line = last_line_at_bashrc(bashrc_path)
30
+
31
+ expect(last_line).to eql "alias cwo='chid workstation open'"
32
+ end
33
+
34
+ end
35
+
36
+ def reset_bashrc(bashrc_path)
37
+ bash_file = File.open(bashrc_path, 'w') do |file|
38
+ str = <<~STR
39
+ # Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
40
+ export PATH="$PATH:$HOME/.rvm/bin"
41
+ export TIDY_KEYS_PATH=/Users/rachidcalazans/Workspaces/tidy-workspace/pem_files
42
+ export TIDYTOOLS_DIR=~/Workspaces/tidy-workspace/rails-workspace/ops_scripts/tidytools
43
+ export AWS_USERNAME=rachid
44
+ # HEY
45
+ STR
46
+ file.puts str
47
+ end
48
+ end
49
+
50
+ def last_line_at_bashrc(bashrc_path)
51
+ File
52
+ .read(bashrc_path)
53
+ .split("\n").last
54
+ end
55
+ end
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+
3
+ describe ::Chid::Commands::Pr, '#run', :github, mock: true do
4
+ let(:invoke_run) do
5
+ argv = ['pr']
6
+ argv.concat(arguments)
7
+ argv.compact!
8
+ Chid::Command.run(argv)
9
+ end
10
+
11
+ context 'when given an user as arguments' do
12
+ let(:user) { 'ricmarinovic' }
13
+ let(:arguments) { ['-user', user] }
14
+
15
+ before do |example|
16
+ allow_github_prs if example.metadata[:mock]
17
+
18
+ invoke_run
19
+ end
20
+
21
+ let(:allow_github_prs) do
22
+ response_prs = [
23
+ {
24
+ 'number' => 41,
25
+ 'title' => 'Update README',
26
+ 'state' => 'open',
27
+ 'labels' => [],
28
+ 'user' => { 'login' => 'rachidcalazans'}
29
+ },
30
+ {
31
+ 'number' => 42,
32
+ 'title' => 'A new PR arrived',
33
+ 'state' => 'open',
34
+ 'labels' => [{'name' => 'in progress'}, {'name' => 'question'}],
35
+ 'user' => { 'login' => user}
36
+ },
37
+ {
38
+ 'number' => 43,
39
+ 'title' => 'One more PR',
40
+ 'state' => 'open',
41
+ 'labels' => [{'name' => 'in progress'}],
42
+ 'user' => { 'login' => user}
43
+ }
44
+ ]
45
+ allow(GitHubApi).to receive(:prs)
46
+ .with(by: user)
47
+ .and_return(response_prs)
48
+ end
49
+
50
+ it 'lists all open pull requests' do
51
+ expected_msg = <<~STR
52
+ #42 - A new PR arrived
53
+ By #{user}
54
+ Status: open
55
+ Labels: in progress, question
56
+
57
+ ---
58
+
59
+ #43 - One more PR
60
+ By #{user}
61
+ Status: open
62
+ Labels: in progress
63
+ STR
64
+
65
+ expect(invoke_run).to eql(expected_msg)
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,153 @@
1
+ require 'spec_helper'
2
+ # @todo
3
+ # - [OK] Fix the ChidConfig.on_x for tests
4
+ # - [OK] Reset support/.chid.config with base template from Init Command or something like that
5
+ # - [OK] Refactor test code
6
+ # - [ ] Add feature to given options and arguments with workstation_name and app_names
7
+ # - chid workstation create -name tt -app_names Safari,iTerm
8
+ # - [OK] Update test code to reuse setups and contexts
9
+ # - [OK] Add the app_names option
10
+ # - [OK] Fix Bug when the workstation_name has `-`. Eg.: -name tt-maris
11
+ # - [ ] Add description to use with new arguments
12
+ #
13
+
14
+ describe ::Chid::Commands::Workstation::Create do
15
+ describe '#run' do
16
+ before do
17
+ reset_chid_config_file
18
+
19
+ set_chid_config_instance
20
+
21
+ set_plataform
22
+
23
+ set_get_option
24
+
25
+ set_multi_select_option
26
+
27
+ invoke_run
28
+ end
29
+ let(:reset_chid_config_file) do
30
+ template_data = {
31
+ chid: {
32
+ workstations: {},
33
+ tmux_templates: {}
34
+ }
35
+ }
36
+
37
+ File.open(chid_config.chid_config_path, 'w') do |file|
38
+ YAML.dump(template_data, file)
39
+ end
40
+ end
41
+ let(:set_get_option) { allow(STDIN).to receive(:gets).and_return(workstation_name) }
42
+ let(:set_multi_select_option) { allow_any_instance_of(TTY::Prompt).to receive(:multi_select).and_return(app_names) }
43
+ let(:set_chid_config_instance) { allow(::ChidConfig).to receive(:new).and_return chid_config }
44
+ let(:set_plataform) { allow(::ChidConfig).to receive(:platform).and_return platform_name }
45
+
46
+ let(:invoke_run) do
47
+ argv = ['workstation', 'create']
48
+ argv.concat(options)
49
+ argv.compact!
50
+
51
+ Chid::Command.run(argv)
52
+ end
53
+
54
+ let(:chid_config) { ::ChidConfig.new(home_base_path: "./spec/support") }
55
+ let(:load_chid_config_as_yaml) { YAML.load_file chid_config.chid_config_path }
56
+
57
+ context 'when given a workstation name' do
58
+ let(:workstation_name) { 'tt5' }
59
+
60
+ context 'when choose an app' do
61
+ let(:app_names) { %w[Safari] }
62
+
63
+ context 'when NOT given any options' do
64
+ let(:options) { [] }
65
+
66
+ context 'when the platform is osx' do
67
+ let(:platform_name) { 'Darwin' }
68
+
69
+ it 'add the new workstation name with choosen app on .chid.config file' do
70
+ yaml_file = load_chid_config_as_yaml
71
+ result = yaml_file.dig(:chid, :workstations, :tt5)
72
+
73
+ expect(result).to eq %w[Safari]
74
+ end
75
+ end
76
+ end
77
+
78
+ context 'when given workstation name option' do
79
+ let(:options) { ['-name', workstation_name] }
80
+
81
+ context 'when the platform is osx' do
82
+ let(:platform_name) { 'Darwin' }
83
+
84
+ it 'add the new workstation name with choosen app on .chid.config file' do
85
+ yaml_file = load_chid_config_as_yaml
86
+ result = yaml_file.dig(:chid, :workstations, :tt5)
87
+
88
+ expect(result).to eq %w[Safari]
89
+ end
90
+
91
+ context 'when workstation name has `-` in the name' do
92
+ let(:workstation_name) { 'tt5-5' }
93
+ let(:set_get_option) {}
94
+
95
+ it 'add the new workstation name with choosen app on .chid.config file' do
96
+ yaml_file = load_chid_config_as_yaml
97
+ result = yaml_file.dig(:chid, :workstations, :'tt5-5')
98
+
99
+ expect(result).to eq %w[Safari]
100
+ end
101
+ end
102
+
103
+ context 'when given app_names option' do
104
+ let(:app_names) { %w[Safari iTerm] }
105
+ let(:options) { ['-name', workstation_name, '-app_names'].concat(app_names) }
106
+ let(:set_multi_select_option) do
107
+ ask_msg = 'select all apps for that workstation?'
108
+ os_app_names = ['1Password 7', 'Accelerate', 'Safari', 'iTerm']
109
+
110
+ allow_any_instance_of(::Chid::Commands::Workstation::Create).to receive(:osx_application_names).and_return [os_app_names]
111
+
112
+ allow_any_instance_of(TTY::Prompt).to receive(:multi_select)
113
+ .with(ask_msg, [os_app_names], default: [3,4])
114
+ .and_return(app_names)
115
+ end
116
+
117
+ it 'add all new options on .chid.config file' do
118
+ yaml_file = load_chid_config_as_yaml
119
+ result = yaml_file.dig(:chid, :workstations, :tt5)
120
+
121
+ expect(result).to eq %w[Safari iTerm]
122
+ end
123
+ end
124
+
125
+ context 'when given some wrong app_names option' do
126
+ let(:app_wrong_name) { 'iTerminal' }
127
+ let(:app_names) { %W[Safari #{app_wrong_name}] }
128
+ let(:options) { ['-name', workstation_name, '-app_names'].concat(app_names) }
129
+ let(:set_multi_select_option) do
130
+ ask_msg = 'select all apps for that workstation?'
131
+ os_app_names = ['1Password 7', 'Accelerate', 'Safari', 'iTerm']
132
+
133
+ allow_any_instance_of(::Chid::Commands::Workstation::Create).to receive(:osx_application_names).and_return [os_app_names]
134
+
135
+ app_correct_names = %w[Safari iTerm]
136
+ allow_any_instance_of(TTY::Prompt).to receive(:multi_select)
137
+ .with(ask_msg, [os_app_names], default: [3,4])
138
+ .and_return(app_correct_names)
139
+ end
140
+
141
+ it 'add all new options on .chid.config file with matched app_names for the wrong app_names' do
142
+ yaml_file = load_chid_config_as_yaml
143
+ result = yaml_file.dig(:chid, :workstations, :tt5)
144
+
145
+ expect(result).to eq %w[Safari iTerm]
146
+ end
147
+ end
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
153
+ end
@@ -0,0 +1,7 @@
1
+ # Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
2
+ export PATH="$PATH:$HOME/.rvm/bin"
3
+ export TIDY_KEYS_PATH=/Users/rachidcalazans/Workspaces/tidy-workspace/pem_files
4
+ export TIDYTOOLS_DIR=~/Workspaces/tidy-workspace/rails-workspace/ops_scripts/tidytools
5
+ export AWS_USERNAME=rachid
6
+ # HEY
7
+ alias cwo='chid workstation open'
@@ -0,0 +1,7 @@
1
+ ---
2
+ :chid:
3
+ :workstations:
4
+ :tt5:
5
+ - Safari
6
+ - iTerm
7
+ :tmux_templates: {}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rachid Calazans
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-04 00:00:00.000000000 Z
11
+ date: 2020-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -75,6 +75,8 @@ executables:
75
75
  extensions: []
76
76
  extra_rdoc_files: []
77
77
  files:
78
+ - ".ruby-gemset"
79
+ - ".ruby-version"
78
80
  - CHANGELOG.md
79
81
  - CONTRIBUTING.md
80
82
  - Gemfile
@@ -86,6 +88,7 @@ files:
86
88
  - lib/chid.rb
87
89
  - lib/chid/chid_config.rb
88
90
  - lib/chid/command.rb
91
+ - lib/chid/commands/alias/create.rb
89
92
  - lib/chid/commands/config.rb
90
93
  - lib/chid/commands/currency/convert.rb
91
94
  - lib/chid/commands/currency/list.rb
@@ -100,6 +103,7 @@ files:
100
103
  - lib/chid/commands/installs/rvm.rb
101
104
  - lib/chid/commands/installs/vim.rb
102
105
  - lib/chid/commands/news.rb
106
+ - lib/chid/commands/pr.rb
103
107
  - lib/chid/commands/stack_overflow.rb
104
108
  - lib/chid/commands/tmux/list.rb
105
109
  - lib/chid/commands/tmux/open.rb
@@ -115,9 +119,14 @@ files:
115
119
  - lib/chid/stack_overflow_api.rb
116
120
  - lib/chid/version.rb
117
121
  - spec/lib/chid/command_spec.rb
122
+ - spec/lib/chid/commands/alias/create_spec.rb
118
123
  - spec/lib/chid/commands/init_spec.rb
124
+ - spec/lib/chid/commands/pr_spec.rb
125
+ - spec/lib/chid/commands/workstation/create_spec.rb
119
126
  - spec/lib/chid/commands/workstation/open_spec.rb
120
127
  - spec/spec_helper.rb
128
+ - spec/support/.bashrc
129
+ - spec/support/.chid.config
121
130
  - tasks/install/yadr_dotfiles.rake
122
131
  - tasks/run/postgres.rake
123
132
  - tasks/update/os.rake
@@ -141,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
150
  - !ruby/object:Gem::Version
142
151
  version: '0'
143
152
  requirements: []
144
- rubygems_version: 3.0.1
153
+ rubygems_version: 3.0.8
145
154
  signing_key:
146
155
  specification_version: 4
147
156
  summary: Simple assistant for day-to-day life. Developers and common users