grepg 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: 331496fd951ec8ae351b57bcb1ec44a55579e19b
4
- data.tar.gz: 21b1d330d1f9220711f7c5b73f3c8ed1531042f4
3
+ metadata.gz: e5768dab30082e58dce3e5b49cdb76a29b8fa9da
4
+ data.tar.gz: ddf1a091efc9ad7eee32d37e3d65ef40696b1127
5
5
  SHA512:
6
- metadata.gz: e2a482f0a77a804c65998efe3650a56e068b402adcfb97c34bc7bfb8127104f68105ff0593c45c8b1d7b1b0a4cda5152ad76690448d349f4f98d6747c1fe641b
7
- data.tar.gz: 4ce5ba2f7daee0ea9cc311b83a4d421b56f4868cae45371e65f9118035246f23bb40cf26d05f936e61bdcb81441a58ea5212d6a5976b014989b7fdba796fb177
6
+ metadata.gz: f2bfe0fa4f80d0c1a6baa4cbd25d2bdc5bff1e5c59f1effaeda4a38bb4a1e8818e642192d13bd15f4d09ea1d3a7f00c0171a3908ee5e858602e993b1e7ca3135
7
+ data.tar.gz: 73da667814bd9860af347e465933ed7eacc04d376690d832cee8595097c354b529036e0bd2d3486c8cd841e18d6247637d15cdb93ab54c9851267dd778eb69c6
data/README.md CHANGED
@@ -1,33 +1,50 @@
1
- #grepg
2
- ###The ruby client for greppage
1
+ grepg
2
+ ===
3
3
 
4
- `grepg` (pronounced Grep G) is a ruby client for [GrepPage](https://www.greppage.com). It is packaged as a gem.
4
+ `grepg` (pronounced Grep G) is a ruby client for [GrepPage](https://www.greppage.com). It allows you to access your cheat sheets without leaving the terminal.
5
5
 
6
- ###Install
7
- To install `grepg` run ```gem install grepg```
6
+ #Installation
7
+ To install `grepg` run
8
8
 
9
- ###Examples
10
9
  ```
10
+ gem install grepg
11
+ ```
12
+
13
+ #Usage
14
+
15
+ ```
16
+ $ grepg --help
11
17
  Usage:
12
- grepg user_name topic_name [-s search_term]
18
+ grepg -u user_name -t topic_name [-s search_term]
19
+
20
+ Options:
21
+ -u, --user=<s> username
22
+ -t, --topic=<s> topic
23
+ -s, --search=<s> text to search
24
+ -c, --colorize, --no-colorize colorize output (default: true)
25
+ -v, --version Print version and exit
26
+ -h, --help Show this message
27
+
28
+ Examples:
29
+ grepg -u evidanary -t css
30
+ greppg -u evidanary -t css -s color
31
+
32
+ Defaults:
33
+ To set default user, create a file in ~/.grepg.yml with
34
+ default_user: test
13
35
  ```
14
36
 
15
- Get all items/microdoc for a topic on any collection.
37
+
38
+ For example, to get all cheats for the `git` topic for user `kdavis`
16
39
 
17
40
  ```
18
- $ grepg kdavis git
19
- User: kdavis, Topic: git
41
+ $ grepg -u evidanary -t git
42
+ User: evidanary, Topic: git
20
43
  push tags to remote / Github
21
44
  git push --tags
22
45
 
23
46
  remove delete tag
24
47
  git tag -d v0.0.8
25
-
26
- list branches that have not been merged
27
- git branch --no-merged
28
-
29
- list branches merged into master
30
- git branch --merged master
31
48
  ...
32
49
 
33
50
  ```
@@ -35,7 +52,7 @@ git branch --merged master
35
52
  Search for a specific string
36
53
 
37
54
  ```
38
- $ grepg kdavis git -s stash
55
+ $ grepg -u kdavis -t git -s stash
39
56
  User: kdavis, Topic: git, Search-Term: stash
40
57
  TO apply your changes
41
58
  git stash --apply
@@ -47,8 +64,24 @@ Git stash
47
64
  git stash
48
65
  ```
49
66
 
67
+ #Defaults File
68
+ Setup defaults in `~/.grepg.yml`
69
+
70
+ ```
71
+ user: evidanary
72
+ colorize: true
73
+ ```
74
+
75
+ Now, you can access client with
76
+
77
+ ```
78
+ $ grepg -t bootstrap
79
+ User: evidanary, Topic: bootstrap
80
+ ...
81
+ ```
82
+
50
83
  ##Development
51
- To run tests run ```bundle exec rake spec```. To install the gem locally, first build it using ```bundle exec rake build```. Then install the gem ```gem install pkg/grepg-0.0.1.gem```
84
+ To execute tests run ```bundle exec rake spec```. To install the gem locally, first build it using ```bundle exec rake build```. Then install the gem ```gem install pkg/grepg-0.0.1.gem```
52
85
 
53
86
  ##License
54
87
  grepg is under the [MIT License](http://www.opensource.org/licenses/MIT).
@@ -3,10 +3,18 @@ module GrepPage
3
3
  class Formatter
4
4
  # Displays an array of cheats
5
5
  # TODO: Highlight search term
6
- def self.cheat_rows(cheats, search_term)
6
+ DESCRIPTION_COLOR= :green
7
+ COMMAND_COLOR= :blue
8
+ def self.cheat_rows(cheats, search_term, colorize)
7
9
  cheats.map do |cheat|
8
- puts cheat[:description].colorize(:green)
9
- puts cheat[:command].colorize(:blue)
10
+ description = cheat[:description]
11
+ command = cheat[:command]
12
+ if colorize
13
+ description = description.colorize(DESCRIPTION_COLOR)
14
+ command = command.colorize(COMMAND_COLOR)
15
+ end
16
+ puts description
17
+ puts command
10
18
  puts
11
19
  end
12
20
  end
data/lib/grepg/parser.rb CHANGED
@@ -1,36 +1,69 @@
1
1
  require 'trollop'
2
2
  require 'rest-client'
3
+ require 'yaml'
4
+ require_relative 'version'
3
5
 
4
6
  # This class parses commandline arguments
5
7
  module GrepPage
6
8
  class Parser
7
9
  def initialize(args)
10
+ default_config = self.class.get_default_config
8
11
  parser = Trollop::Parser.new do
12
+ opt :user,
13
+ "username",
14
+ :type => :string,
15
+ :default => default_config['user'],
16
+ :short => "-u"
17
+ opt :topic,
18
+ "topic",
19
+ :type => :string,
20
+ :required => true,
21
+ :short => "-t"
9
22
  opt :search,
10
23
  "text to search",
11
24
  :type => :string,
12
25
  :required => false,
13
26
  :short => "-s"
27
+ opt :colorize,
28
+ "colorize output",
29
+ :type => :boolean,
30
+ :default => default_config['colorize'],
31
+ :short => "-c"
32
+ version "grepg version #{GrepPage::VERSION}"
14
33
  banner <<-EOS
15
34
 
16
35
  Usage:
17
- grepg user_name topic_name [-s search_term]
36
+ grepg -u user_name -t topic_name [-s search_term]
18
37
 
19
38
  Examples:
20
- grepg kdavis css
21
- greppg kdavis css -s color
39
+ grepg -u evidanary -t css
40
+ greppg -u evidanary -t css -s color
41
+
42
+ Defaults:
43
+ To set defaults, create a file in ~/.grepg.yml with
44
+ user: test
45
+ colorize: true
22
46
  EOS
23
47
  end
24
48
 
25
49
  @opts = Trollop::with_standard_exception_handling parser do
26
- raise Trollop::HelpNeeded if args.size < 2 # show help screen
27
50
  parser.parse args
28
51
  end
29
52
 
30
- leftovers = parser.leftovers
31
- @user = leftovers.shift
32
- @topic = leftovers.shift
53
+ @user = @opts[:user]
54
+ @topic = @opts[:topic]
33
55
  @search_term = @opts[:search]
56
+ @colorize = @opts[:colorize]
57
+ end
58
+
59
+ def self.get_default_config
60
+ file = self.default_file_name
61
+ file ? YAML.load(IO.read(file)) : {}
62
+ end
63
+
64
+ def self.default_file_name
65
+ file = ENV['HOME'] + '/.grepg.yml'
66
+ File.exist?(file) ? file : nil
34
67
  end
35
68
 
36
69
  def get_all_topics(user)
@@ -54,29 +87,33 @@ Examples:
54
87
  end
55
88
  end
56
89
 
57
- def run!
58
- headers = ["User: #{@user}", "Topic: #{@topic}"]
59
- headers << "Search-Term: #{@search_term}" if @search_term
90
+ def process_args(user, topic, search_term, colorize)
91
+ headers = ["User: #{user}", "Topic: #{topic}"]
92
+ headers << "Search-Term: #{search_term}" if search_term
60
93
  puts headers.join(", ")
61
94
 
62
95
  begin
63
- topics = get_all_topics(@user)
96
+ topics = get_all_topics(user)
64
97
  rescue RestClient::ResourceNotFound
65
98
  puts "That username does not exist"
66
- exit 1
99
+ raise "Unable to find user"
67
100
  end
68
101
 
69
- topic = filter_topics(topics, @topic)
102
+ topic = filter_topics(topics, topic)
70
103
  if topic.nil? || topic.empty?
71
104
  puts "Can't find that topic. Choose one of the following"
72
105
  puts topics.map{|t| t[:name]}
73
- exit 1
106
+ raise "Unable to find topic"
74
107
  end
75
108
 
76
- cheats = get_cheats(@user, topic[:id])
77
- cheats = filter_cheats(cheats, @search_term) if @search_term
109
+ cheats = get_cheats(user, topic[:id])
110
+ cheats = filter_cheats(cheats, search_term) if search_term
78
111
 
79
- GrepPage::Formatter.cheat_rows(cheats, @search_term)
112
+ GrepPage::Formatter.cheat_rows(cheats, search_term, colorize)
113
+ end
114
+
115
+ def run!
116
+ process_args(@user, @topic, @search_term, @colorize)
80
117
  end
81
118
  end
82
119
  end
data/lib/grepg/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module GrepPage
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -1,20 +1,67 @@
1
1
  require 'json'
2
+ require 'yaml'
2
3
  require_relative '../../lib/grepg.rb'
3
4
 
4
5
  describe GrepPage::Parser do
5
6
  describe '.initialize' do
6
7
  context "expected behavior" do
7
8
  it "returns a set of cheats when username and topic are given" do
8
- parser = GrepPage::Parser.new(['kdavis', 'css'])
9
+ parser = GrepPage::Parser.new('-u kdavis -t css'.split(' '))
9
10
  output = capture_stdout { parser.run! }
10
11
  expect(output).to match(/colors/)
11
12
  end
12
13
 
13
14
  it "returns a set of cheats when username, topic and search term are given" do
14
- parser = GrepPage::Parser.new(['kdavis', 'css', '-s', 'colors'])
15
+ parser = GrepPage::Parser.new('-u kdavis -t css -s colors'.split(' '))
15
16
  output = capture_stdout { parser.run! }
16
17
  expect(output).to match(/colors/)
17
18
  end
19
+
20
+ # Test if we are seeing colors in the output
21
+ # This is blue - "\e[0;34;49mThis is blue\e[0m"
22
+ it "colorizes output of the result" do
23
+ parser = GrepPage::Parser.new('-u kdavis -t css -c'.split(' '))
24
+ output = capture_stdout { parser.run! }
25
+ expect(output.inspect).to include("\\e[0;34;49m")
26
+ end
27
+
28
+ # Test if defaut file gets read
29
+ it "reads username from the defaults file" do
30
+ expect(File).to receive(:exist?).and_return(true)
31
+ expect(IO).to receive(:read).with(ENV['HOME'] + '/.grepg.yml').and_return({
32
+ "user" => "kdavis"
33
+ }.to_yaml)
34
+ parser = GrepPage::Parser.new('-t css'.split(' '))
35
+ expect(parser.instance_variable_get(:@opts)[:user]).to eq('kdavis')
36
+ end
37
+ end
38
+ end
39
+
40
+ describe '#default_file_name' do
41
+ it('returns nil if ~/.grepg.yml doesnt exist') do
42
+ expect(File).to receive(:exist?).and_return(false)
43
+ expect(GrepPage::Parser.default_file_name).to be(nil)
44
+ end
45
+
46
+ it('returns filename if ~/.grepg.yml exists') do
47
+ expect(File).to receive(:exist?).and_return(true)
48
+ expect(GrepPage::Parser.default_file_name).to eq(ENV['HOME'] + '/.grepg.yml')
49
+ end
50
+ end
51
+
52
+ describe '#get_default_config' do
53
+ it('returns empty hash if ~/.grepg.yml doesnt exist') do
54
+ expect(File).to receive(:exist?).and_return(false)
55
+ expect(GrepPage::Parser.get_default_config).to eq({})
56
+ end
57
+
58
+ it('returns parses YML if ~/.grepg.yml exists') do
59
+ default_contents = {
60
+ "user" => "test"
61
+ }
62
+ expect(File).to receive(:exist?).and_return(true)
63
+ expect(IO).to receive(:read).and_return(default_contents.to_yaml)
64
+ expect(GrepPage::Parser.get_default_config).to eq(default_contents)
18
65
  end
19
66
  end
20
67
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grepg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yash Ranadive
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-07 00:00:00.000000000 Z
11
+ date: 2016-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: trollop
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  version: '0'
137
137
  requirements: []
138
138
  rubyforge_project:
139
- rubygems_version: 2.4.1
139
+ rubygems_version: 2.4.5.1
140
140
  signing_key:
141
141
  specification_version: 4
142
142
  summary: A ruby client to access greppage.com from the commandline