augury 0.2.1 → 1.0.3
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 +5 -5
- data/.codeclimate.yml +10 -0
- data/.gitignore +5 -2
- data/.rubocop.yml +45 -0
- data/.solargraph.yml +15 -0
- data/.travis.yml +14 -2
- data/CHANGELOG.md +42 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +179 -0
- data/README.md +144 -40
- data/Rakefile +5 -3
- data/augury.gemspec +16 -34
- data/bin/console +2 -0
- data/bin/extract_creds +12 -0
- data/bin/setup +1 -3
- data/lib/augury.rb +3 -2
- data/lib/augury/cli.rb +72 -15
- data/lib/augury/exception.rb +3 -1
- data/lib/augury/fortune.rb +56 -32
- data/lib/augury/version.rb +3 -1
- metadata +21 -186
- data/TODO.md +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 0202c829a5e6fdfb712f3cf87ea3a340d2242ed6c86a328ab6fefce9c255963d
|
|
4
|
+
data.tar.gz: 2a90f740ab640843302ae6bc5e767c6d2f486d3c9ff060c200f8721ada5c16bd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3c91a52995151ac50e642785bafe6247e79598eacda3ad32c3fd0ae8331b48596c6567342b17a11918761dff5da2ff2dbdd2544ec16643db666121689f95675f
|
|
7
|
+
data.tar.gz: 7c77c6c70e749e3c7f703a089554f686e3c7a1383c4f651a38a490b5f3c6244e28b658053a5bde478499e1994c6321817cd28ca6c8545b768a2fe83e2f72279d
|
data/.codeclimate.yml
ADDED
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
AllCops:
|
|
2
|
+
TargetRubyVersion: 2.6
|
|
3
|
+
Exclude:
|
|
4
|
+
- bin/**/*
|
|
5
|
+
- vendor/**/*
|
|
6
|
+
|
|
7
|
+
Style/TrailingCommaInArguments:
|
|
8
|
+
EnforcedStyleForMultiline: comma
|
|
9
|
+
|
|
10
|
+
Style/TrailingCommaInHashLiteral:
|
|
11
|
+
EnforcedStyleForMultiline: comma
|
|
12
|
+
|
|
13
|
+
Style/TrailingCommaInArrayLiteral:
|
|
14
|
+
EnforcedStyleForMultiline: comma
|
|
15
|
+
|
|
16
|
+
Style/RedundantSelf:
|
|
17
|
+
Enabled: false
|
|
18
|
+
|
|
19
|
+
Layout/IndentationWidth:
|
|
20
|
+
Enabled: false
|
|
21
|
+
|
|
22
|
+
# Alignment so that changing var / method does not change all lines in diff
|
|
23
|
+
Layout/ParameterAlignment:
|
|
24
|
+
EnforcedStyle: with_fixed_indentation
|
|
25
|
+
|
|
26
|
+
Layout/ArgumentAlignment:
|
|
27
|
+
EnforcedStyle: with_fixed_indentation
|
|
28
|
+
|
|
29
|
+
Layout/MultilineMethodCallIndentation:
|
|
30
|
+
EnforcedStyle: indented
|
|
31
|
+
|
|
32
|
+
Layout/MultilineOperationIndentation:
|
|
33
|
+
EnforcedStyle: indented
|
|
34
|
+
|
|
35
|
+
Layout/EndAlignment:
|
|
36
|
+
EnforcedStyleAlignWith: variable
|
|
37
|
+
AutoCorrect: true
|
|
38
|
+
|
|
39
|
+
Layout/CaseIndentation:
|
|
40
|
+
EnforcedStyle: end
|
|
41
|
+
IndentOneStep: true
|
|
42
|
+
|
|
43
|
+
# Ignore for rspec
|
|
44
|
+
Metrics/BlockLength:
|
|
45
|
+
ExcludedMethods: ['describe', 'context']
|
data/.solargraph.yml
ADDED
data/.travis.yml
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
language: ruby
|
|
2
2
|
rvm:
|
|
3
|
-
-
|
|
4
|
-
|
|
3
|
+
- 3.0
|
|
4
|
+
- 2.7
|
|
5
|
+
- 2.6
|
|
6
|
+
before_install:
|
|
7
|
+
- sudo apt-get -y install fortune
|
|
8
|
+
before_script:
|
|
9
|
+
- export PATH=$PATH:/usr/games
|
|
10
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
|
11
|
+
- chmod +x ./cc-test-reporter
|
|
12
|
+
- ./cc-test-reporter before-build
|
|
13
|
+
script:
|
|
14
|
+
- bundle exec rspec
|
|
15
|
+
after_script:
|
|
16
|
+
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Changes
|
|
2
|
+
|
|
3
|
+
## 1.0.3 (2020-01-23)
|
|
4
|
+
|
|
5
|
+
- Pin Thor version to avoid issue with `options` override
|
|
6
|
+
- Add tests for `Augury::CLI`
|
|
7
|
+
|
|
8
|
+
## 1.0.2 (2020-01-09)
|
|
9
|
+
|
|
10
|
+
- Fix bug with specific tweet count retrieval
|
|
11
|
+
|
|
12
|
+
## 1.0.1 (2020-01-08)
|
|
13
|
+
|
|
14
|
+
- Remove unused gem
|
|
15
|
+
|
|
16
|
+
## 1.0.0 (2020-01-08)
|
|
17
|
+
|
|
18
|
+
- Convert augury config from ini style to yaml (breaking change)
|
|
19
|
+
- Add options for filtering out tweets (retweets, replies, links)
|
|
20
|
+
- Add option to show twitter user name as an attribution
|
|
21
|
+
- Ensure output has not html entities in it
|
|
22
|
+
|
|
23
|
+
## 0.3.0 (2015-08-20)
|
|
24
|
+
|
|
25
|
+
- Add `count` option and allow for a user to get all tweets
|
|
26
|
+
- Improve error handling
|
|
27
|
+
- Handle spaces in `path` argument
|
|
28
|
+
- Properly get defaults from the config if not passed on the command line
|
|
29
|
+
- Updated docs and interactive help
|
|
30
|
+
|
|
31
|
+
## 0.2.1 (2015-08-19)
|
|
32
|
+
|
|
33
|
+
- Fix docs on rubygems site
|
|
34
|
+
|
|
35
|
+
## 0.2.0 (2015-08-19)
|
|
36
|
+
|
|
37
|
+
- Initial working code and documentation
|
|
38
|
+
|
|
39
|
+
## 0.1.0 (2015-08-19)
|
|
40
|
+
|
|
41
|
+
- Initial code skeleton
|
|
42
|
+
- Test push to rubygems
|
data/Gemfile
CHANGED
|
@@ -1,4 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
source 'https://rubygems.org'
|
|
2
4
|
|
|
3
5
|
# Specify your gem's dependencies in augury.gemspec
|
|
4
6
|
gemspec
|
|
7
|
+
|
|
8
|
+
gem 'rake'
|
|
9
|
+
|
|
10
|
+
# Testing
|
|
11
|
+
gem 'rspec', '~>3.0'
|
|
12
|
+
gem 'simplecov'
|
|
13
|
+
gem 'vcr'
|
|
14
|
+
gem 'webmock'
|
|
15
|
+
|
|
16
|
+
# Debugging
|
|
17
|
+
gem 'pry'
|
|
18
|
+
gem 'pry-awesome_print'
|
|
19
|
+
gem 'pry-byebug'
|
|
20
|
+
gem 'pry-doc'
|
|
21
|
+
|
|
22
|
+
# Linting / completion
|
|
23
|
+
gem 'rubocop', '0.92'
|
|
24
|
+
gem 'rubocop-rake'
|
|
25
|
+
gem 'rubocop-rspec'
|
|
26
|
+
gem 'solargraph'
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
augury (1.0.2)
|
|
5
|
+
facets (~> 3.0)
|
|
6
|
+
thor (~> 1.0.0)
|
|
7
|
+
twitter (~> 7.0)
|
|
8
|
+
|
|
9
|
+
GEM
|
|
10
|
+
remote: https://rubygems.org/
|
|
11
|
+
specs:
|
|
12
|
+
addressable (2.7.0)
|
|
13
|
+
public_suffix (>= 2.0.2, < 5.0)
|
|
14
|
+
ast (2.4.1)
|
|
15
|
+
awesome_print (1.8.0)
|
|
16
|
+
backport (1.1.2)
|
|
17
|
+
benchmark (0.1.1)
|
|
18
|
+
buftok (0.2.0)
|
|
19
|
+
byebug (11.1.3)
|
|
20
|
+
coderay (1.1.3)
|
|
21
|
+
crack (0.4.5)
|
|
22
|
+
rexml
|
|
23
|
+
diff-lcs (1.4.4)
|
|
24
|
+
docile (1.3.4)
|
|
25
|
+
domain_name (0.5.20190701)
|
|
26
|
+
unf (>= 0.0.5, < 1.0.0)
|
|
27
|
+
e2mmap (0.1.0)
|
|
28
|
+
equalizer (0.0.11)
|
|
29
|
+
facets (3.1.0)
|
|
30
|
+
ffi (1.14.2)
|
|
31
|
+
ffi-compiler (1.0.1)
|
|
32
|
+
ffi (>= 1.0.0)
|
|
33
|
+
rake
|
|
34
|
+
hashdiff (1.0.1)
|
|
35
|
+
http (4.4.1)
|
|
36
|
+
addressable (~> 2.3)
|
|
37
|
+
http-cookie (~> 1.0)
|
|
38
|
+
http-form_data (~> 2.2)
|
|
39
|
+
http-parser (~> 1.2.0)
|
|
40
|
+
http-cookie (1.0.3)
|
|
41
|
+
domain_name (~> 0.5)
|
|
42
|
+
http-form_data (2.3.0)
|
|
43
|
+
http-parser (1.2.2)
|
|
44
|
+
ffi-compiler
|
|
45
|
+
http_parser.rb (0.6.0)
|
|
46
|
+
jaro_winkler (1.5.4)
|
|
47
|
+
kramdown (2.3.0)
|
|
48
|
+
rexml
|
|
49
|
+
kramdown-parser-gfm (1.1.0)
|
|
50
|
+
kramdown (~> 2.0)
|
|
51
|
+
memoizable (0.4.2)
|
|
52
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
|
53
|
+
method_source (1.0.0)
|
|
54
|
+
mini_portile2 (2.5.0)
|
|
55
|
+
multipart-post (2.1.1)
|
|
56
|
+
naught (1.1.0)
|
|
57
|
+
nokogiri (1.11.1)
|
|
58
|
+
mini_portile2 (~> 2.5.0)
|
|
59
|
+
racc (~> 1.4)
|
|
60
|
+
parallel (1.20.1)
|
|
61
|
+
parser (2.7.2.0)
|
|
62
|
+
ast (~> 2.4.1)
|
|
63
|
+
pry (0.13.1)
|
|
64
|
+
coderay (~> 1.1)
|
|
65
|
+
method_source (~> 1.0)
|
|
66
|
+
pry-awesome_print (9.6.11)
|
|
67
|
+
awesome_print (>= 1.1.0, < 999)
|
|
68
|
+
pry (>= 0.9.0, < 999)
|
|
69
|
+
pry-byebug (3.9.0)
|
|
70
|
+
byebug (~> 11.0)
|
|
71
|
+
pry (~> 0.13.0)
|
|
72
|
+
pry-doc (1.1.0)
|
|
73
|
+
pry (~> 0.11)
|
|
74
|
+
yard (~> 0.9.11)
|
|
75
|
+
public_suffix (4.0.6)
|
|
76
|
+
racc (1.5.2)
|
|
77
|
+
rainbow (3.0.0)
|
|
78
|
+
rake (13.0.3)
|
|
79
|
+
regexp_parser (2.0.3)
|
|
80
|
+
reverse_markdown (2.0.0)
|
|
81
|
+
nokogiri
|
|
82
|
+
rexml (3.2.4)
|
|
83
|
+
rspec (3.10.0)
|
|
84
|
+
rspec-core (~> 3.10.0)
|
|
85
|
+
rspec-expectations (~> 3.10.0)
|
|
86
|
+
rspec-mocks (~> 3.10.0)
|
|
87
|
+
rspec-core (3.10.1)
|
|
88
|
+
rspec-support (~> 3.10.0)
|
|
89
|
+
rspec-expectations (3.10.1)
|
|
90
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
91
|
+
rspec-support (~> 3.10.0)
|
|
92
|
+
rspec-mocks (3.10.1)
|
|
93
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
94
|
+
rspec-support (~> 3.10.0)
|
|
95
|
+
rspec-support (3.10.1)
|
|
96
|
+
rubocop (0.92.0)
|
|
97
|
+
parallel (~> 1.10)
|
|
98
|
+
parser (>= 2.7.1.5)
|
|
99
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
100
|
+
regexp_parser (>= 1.7)
|
|
101
|
+
rexml
|
|
102
|
+
rubocop-ast (>= 0.5.0)
|
|
103
|
+
ruby-progressbar (~> 1.7)
|
|
104
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
|
105
|
+
rubocop-ast (1.4.0)
|
|
106
|
+
parser (>= 2.7.1.5)
|
|
107
|
+
rubocop-rake (0.5.1)
|
|
108
|
+
rubocop
|
|
109
|
+
rubocop-rspec (1.44.1)
|
|
110
|
+
rubocop (~> 0.87)
|
|
111
|
+
rubocop-ast (>= 0.7.1)
|
|
112
|
+
ruby-progressbar (1.11.0)
|
|
113
|
+
simple_oauth (0.3.1)
|
|
114
|
+
simplecov (0.21.1)
|
|
115
|
+
docile (~> 1.1)
|
|
116
|
+
simplecov-html (~> 0.11)
|
|
117
|
+
simplecov_json_formatter (~> 0.1)
|
|
118
|
+
simplecov-html (0.12.3)
|
|
119
|
+
simplecov_json_formatter (0.1.2)
|
|
120
|
+
solargraph (0.40.1)
|
|
121
|
+
backport (~> 1.1)
|
|
122
|
+
benchmark
|
|
123
|
+
bundler (>= 1.17.2)
|
|
124
|
+
e2mmap
|
|
125
|
+
jaro_winkler (~> 1.5)
|
|
126
|
+
kramdown (~> 2.3)
|
|
127
|
+
kramdown-parser-gfm (~> 1.1)
|
|
128
|
+
parser (~> 2.3)
|
|
129
|
+
reverse_markdown (>= 1.0.5, < 3)
|
|
130
|
+
rubocop (>= 0.52)
|
|
131
|
+
thor (~> 1.0)
|
|
132
|
+
tilt (~> 2.0)
|
|
133
|
+
yard (~> 0.9, >= 0.9.24)
|
|
134
|
+
thor (1.0.1)
|
|
135
|
+
thread_safe (0.3.6)
|
|
136
|
+
tilt (2.0.10)
|
|
137
|
+
twitter (7.0.0)
|
|
138
|
+
addressable (~> 2.3)
|
|
139
|
+
buftok (~> 0.2.0)
|
|
140
|
+
equalizer (~> 0.0.11)
|
|
141
|
+
http (~> 4.0)
|
|
142
|
+
http-form_data (~> 2.0)
|
|
143
|
+
http_parser.rb (~> 0.6.0)
|
|
144
|
+
memoizable (~> 0.4.0)
|
|
145
|
+
multipart-post (~> 2.0)
|
|
146
|
+
naught (~> 1.0)
|
|
147
|
+
simple_oauth (~> 0.3.0)
|
|
148
|
+
unf (0.1.4)
|
|
149
|
+
unf_ext
|
|
150
|
+
unf_ext (0.0.7.7)
|
|
151
|
+
unicode-display_width (1.7.0)
|
|
152
|
+
vcr (6.0.0)
|
|
153
|
+
webmock (3.11.0)
|
|
154
|
+
addressable (>= 2.3.6)
|
|
155
|
+
crack (>= 0.3.2)
|
|
156
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
|
157
|
+
yard (0.9.26)
|
|
158
|
+
|
|
159
|
+
PLATFORMS
|
|
160
|
+
ruby
|
|
161
|
+
|
|
162
|
+
DEPENDENCIES
|
|
163
|
+
augury!
|
|
164
|
+
pry
|
|
165
|
+
pry-awesome_print
|
|
166
|
+
pry-byebug
|
|
167
|
+
pry-doc
|
|
168
|
+
rake
|
|
169
|
+
rspec (~> 3.0)
|
|
170
|
+
rubocop (= 0.92)
|
|
171
|
+
rubocop-rake
|
|
172
|
+
rubocop-rspec
|
|
173
|
+
simplecov
|
|
174
|
+
solargraph
|
|
175
|
+
vcr
|
|
176
|
+
webmock
|
|
177
|
+
|
|
178
|
+
BUNDLED WITH
|
|
179
|
+
2.1.4
|
data/README.md
CHANGED
|
@@ -1,25 +1,36 @@
|
|
|
1
1
|
# Augury
|
|
2
2
|
|
|
3
|
+
[](https://codeclimate.com/github/claytron/augury/maintainability)
|
|
4
|
+
[](https://codeclimate.com/github/claytron/augury/test_coverage)
|
|
5
|
+
[](https://travis-ci.com/github/claytron/augury)
|
|
6
|
+
|
|
3
7
|
Have you ever wanted to turn a twitter account into a fortune file?
|
|
4
8
|
Well, today is your lucky day!
|
|
5
9
|
|
|
6
|
-
|
|
10
|
+
<blockquote>
|
|
11
|
+
Augury is the practice from ancient Roman religion of<br>
|
|
12
|
+
interpreting omens from the observed flight of birds.<br><br>
|
|
13
|
+
As per <a href="https://en.wikipedia.org/wiki/Augury">Wikipedia</a>
|
|
14
|
+
</blockquote>
|
|
7
15
|
|
|
8
|
-
|
|
9
|
-
|
|
16
|
+
There are a lot of really funny twitter accounts out there.
|
|
17
|
+
Let's just pick one and get started.
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
$ augury generate seinfeldtoday
|
|
10
21
|
```
|
|
11
22
|
|
|
12
23
|
This just created the fortune files in the current directory:
|
|
13
24
|
|
|
14
|
-
```
|
|
25
|
+
```sh
|
|
15
26
|
$ ls
|
|
16
|
-
|
|
27
|
+
seinfeldtoday seinfeldtoday.dat
|
|
17
28
|
```
|
|
18
29
|
|
|
19
30
|
You can now read the new fortunes!
|
|
20
31
|
|
|
21
|
-
```
|
|
22
|
-
$ fortune
|
|
32
|
+
```sh
|
|
33
|
+
$ fortune seinfeldtoday
|
|
23
34
|
Elaine has no idea what her BF does for a living and it's now too
|
|
24
35
|
late to ask. E:"Teacher, I think. Or a doctor? Wait Is
|
|
25
36
|
'computers' a job?"
|
|
@@ -27,6 +38,13 @@ late to ask. E:"Teacher, I think. Or a doctor? Wait Is
|
|
|
27
38
|
|
|
28
39
|
Thanks for all the laughs fortune :)
|
|
29
40
|
|
|
41
|
+
Here are some accounts that work well with Augury:
|
|
42
|
+
|
|
43
|
+
- [Modern Seinfeld](https://twitter.com/seinfeldtoday)
|
|
44
|
+
- [Very Short Story](https://twitter.com/veryshortstory)
|
|
45
|
+
- [Bored Elon Musk](https://twitter.com/boredelonmusk)
|
|
46
|
+
- Your own feed, so you can get nostalgic.
|
|
47
|
+
|
|
30
48
|
## Installation
|
|
31
49
|
|
|
32
50
|
Add this line to your application's Gemfile:
|
|
@@ -37,13 +55,13 @@ gem 'augury'
|
|
|
37
55
|
|
|
38
56
|
And then execute:
|
|
39
57
|
|
|
40
|
-
```
|
|
58
|
+
```sh
|
|
41
59
|
$ bundle
|
|
42
60
|
```
|
|
43
61
|
|
|
44
62
|
Or install it yourself as:
|
|
45
63
|
|
|
46
|
-
```
|
|
64
|
+
```sh
|
|
47
65
|
$ gem install augury
|
|
48
66
|
```
|
|
49
67
|
|
|
@@ -55,7 +73,7 @@ The fortune program ships with a `strfile` program that converts the plain text
|
|
|
55
73
|
For example,
|
|
56
74
|
if you are using Homebrew on OS X:
|
|
57
75
|
|
|
58
|
-
```
|
|
76
|
+
```sh
|
|
59
77
|
$ brew install fortune
|
|
60
78
|
```
|
|
61
79
|
|
|
@@ -63,69 +81,142 @@ $ brew install fortune
|
|
|
63
81
|
|
|
64
82
|
### Augury Config
|
|
65
83
|
|
|
66
|
-
Create the `~/.augry.
|
|
84
|
+
Create the `~/.augry.yml` file and then set the permissions since your Twitter API info will be in there.
|
|
67
85
|
|
|
68
86
|
```sh
|
|
69
|
-
$ touch ~/.augury.
|
|
70
|
-
$ chmod 600 ~/.augury.
|
|
87
|
+
$ touch ~/.augury.yml
|
|
88
|
+
$ chmod 600 ~/.augury.yml
|
|
71
89
|
```
|
|
72
90
|
|
|
73
|
-
Set any of
|
|
91
|
+
Set any of the available settings in the config like this:
|
|
74
92
|
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
|
|
93
|
+
```yaml
|
|
94
|
+
count: 20
|
|
95
|
+
attribution: true
|
|
78
96
|
```
|
|
79
97
|
|
|
80
98
|
### Option list
|
|
81
99
|
|
|
82
|
-
These are the available options for the `~/.augury.
|
|
100
|
+
These are the available options for the `~/.augury.yml` config file.
|
|
83
101
|
|
|
84
|
-
|
|
85
|
-
|
|
102
|
+
Option | Description | Default
|
|
103
|
+
------ | :---------- | -------
|
|
104
|
+
`append` | Make the script add more entries to the specified file instead of re-writing it | `false`
|
|
105
|
+
`width` | Set the default width used if none is given on the command line. | `72`
|
|
106
|
+
`count` | The number of tweets to get. Set to 0 to get all. | `200`
|
|
107
|
+
`retweets` | Include retweets. | `false`
|
|
108
|
+
`replies` | Include replies. | `false`
|
|
109
|
+
`links` | Include tweets with links in them. | `false`
|
|
110
|
+
`attribution` | Add an author attribution to each fortune. | `false`
|
|
86
111
|
|
|
87
112
|
### Twitter Setup
|
|
88
113
|
|
|
89
114
|
First, you will need to create a new Twitter application by going here:
|
|
90
|
-
https://
|
|
115
|
+
https://developer.twitter.com
|
|
91
116
|
|
|
92
117
|
This will give you the ability to generate the consumer and access information used below.
|
|
93
118
|
|
|
94
|
-
Add the following to your `~/.augury.
|
|
119
|
+
Add the following to your `~/.augury.yml` config.
|
|
95
120
|
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
consumer_key
|
|
99
|
-
consumer_secret
|
|
100
|
-
access_token
|
|
101
|
-
access_token_secret
|
|
121
|
+
```yaml
|
|
122
|
+
twitter:
|
|
123
|
+
consumer_key: YOUR_CONSUMER_KEY
|
|
124
|
+
consumer_secret: YOUR_CONSUMER_SECRET
|
|
125
|
+
access_token: YOUR_ACCESS_TOKEN
|
|
126
|
+
access_token_secret: YOUR_ACCESS_TOKEN_SECRET
|
|
102
127
|
```
|
|
103
128
|
|
|
104
129
|
## Usage
|
|
105
130
|
|
|
106
|
-
Create a fortune for the latest
|
|
131
|
+
Create a fortune for the latest *seinfeldtoday* tweets.
|
|
107
132
|
|
|
108
|
-
```
|
|
109
|
-
$ augury generate
|
|
133
|
+
```sh
|
|
134
|
+
$ augury generate seinfeldtoday
|
|
110
135
|
```
|
|
111
136
|
|
|
112
137
|
Now you have some fortunes.
|
|
113
138
|
|
|
139
|
+
```sh
|
|
140
|
+
$ fortune seinfeldtoday
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Specify a width and a different path to use:
|
|
144
|
+
|
|
145
|
+
```sh
|
|
146
|
+
$ augury generate -w 120 seinfeldtoday /usr/local/share/games/fortune/Modern\ Seinfeld
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
If this is where your fortune program looks for fortunes,
|
|
150
|
+
you can now use the new fortune.
|
|
151
|
+
|
|
152
|
+
```sh
|
|
153
|
+
$ fortune "Modern Seinfeld"
|
|
114
154
|
```
|
|
115
|
-
|
|
155
|
+
|
|
156
|
+
### See the interactive help
|
|
157
|
+
|
|
158
|
+
Run the help to get more details about what the program can do
|
|
159
|
+
|
|
160
|
+
```sh
|
|
161
|
+
$ augury help
|
|
162
|
+
$ augury help generate
|
|
116
163
|
```
|
|
117
164
|
|
|
118
165
|
## Development
|
|
119
166
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
167
|
+
If you want to contribute to this library,
|
|
168
|
+
do the following.
|
|
169
|
+
|
|
170
|
+
Create a fork, then get the code
|
|
171
|
+
|
|
172
|
+
```sh
|
|
173
|
+
$ git clone git@github.com:YOUR_USERNAME/augury.git
|
|
174
|
+
$ cd augury
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Run the setup script to get everything installed:
|
|
123
178
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
179
|
+
**NOTE**: This requires having bundler available.
|
|
180
|
+
That is beyond the scope of this README.
|
|
181
|
+
|
|
182
|
+
```sh
|
|
183
|
+
$ bin/setup
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Once that is finished, there is a console available.
|
|
187
|
+
This gives you access to all the code via Pry.
|
|
188
|
+
|
|
189
|
+
```sh
|
|
190
|
+
$ bin/console
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
The `augury` command will be available in `exe`:
|
|
194
|
+
|
|
195
|
+
```sh
|
|
196
|
+
$ bundle exec ruby exe/augury help
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Run the tests
|
|
200
|
+
|
|
201
|
+
You can run the tests with the rake task:
|
|
202
|
+
|
|
203
|
+
```sh
|
|
204
|
+
$ bundle exec rspec
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
#### Twitter ENV
|
|
208
|
+
|
|
209
|
+
If you need to record a test with the Twitter API, you can set up the proper env vars by getting them from your currently set up `augury.yml` file.
|
|
210
|
+
|
|
211
|
+
```sh
|
|
212
|
+
$ eval `bin/extract_creds`
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Then run the tests as you normally would.
|
|
216
|
+
|
|
217
|
+
```sh
|
|
218
|
+
$ bundle exec rspec
|
|
219
|
+
```
|
|
129
220
|
|
|
130
221
|
## Contributing
|
|
131
222
|
|
|
@@ -134,3 +225,16 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/claytr
|
|
|
134
225
|
## License
|
|
135
226
|
|
|
136
227
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
|
228
|
+
|
|
229
|
+
## Thanks for all the fish
|
|
230
|
+
|
|
231
|
+
Thanks to [TinderBox](http://gettinderbox.com) for giving us time to make cool things happen!
|
|
232
|
+
|
|
233
|
+
This was an excellent learning experience for the author,
|
|
234
|
+
who was new at programming in Ruby.
|
|
235
|
+
|
|
236
|
+
The [Developing a RubyGem using Bundler][gemdocs] documentation was fun to read and informative.
|
|
237
|
+
It helped get the skeleton of the code set up and extra goodies in the development profile.
|
|
238
|
+
Highly recommended read!
|
|
239
|
+
|
|
240
|
+
[gemdocs]: https://github.com/radar/guides/blob/master/gem-development.md#developing-a-rubygem-using-bundler
|
data/Rakefile
CHANGED
data/augury.gemspec
CHANGED
|
@@ -1,45 +1,27 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
require 'augury/version'
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'lib/augury/version'
|
|
5
4
|
|
|
6
5
|
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name =
|
|
6
|
+
spec.name = 'augury'
|
|
8
7
|
spec.version = Augury::VERSION
|
|
9
|
-
spec.authors = [
|
|
10
|
-
spec.email = [
|
|
8
|
+
spec.authors = ['Clayton Parker']
|
|
9
|
+
spec.email = ['robots@claytron.com']
|
|
11
10
|
|
|
12
|
-
spec.summary =
|
|
13
|
-
spec.description =
|
|
14
|
-
spec.homepage =
|
|
15
|
-
spec.license =
|
|
11
|
+
spec.summary = 'Turn a twitter feed into a fortune file'
|
|
12
|
+
spec.description = 'This gem turns a twitter feed into a fortune file that you can use with the fortune program'
|
|
13
|
+
spec.homepage = 'https://github.com/claytron/augury'
|
|
14
|
+
spec.license = 'MIT'
|
|
15
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.6.0')
|
|
16
16
|
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
18
|
-
spec.bindir =
|
|
18
|
+
spec.bindir = 'exe'
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
20
|
-
spec.require_paths = [
|
|
20
|
+
spec.require_paths = ['lib']
|
|
21
21
|
|
|
22
22
|
# Actual dependencies
|
|
23
|
-
spec.add_dependency
|
|
24
|
-
spec.add_dependency
|
|
25
|
-
spec.add_dependency "twitter"
|
|
26
|
-
## Handle booleans from simple config
|
|
27
|
-
spec.add_dependency "wannabe_bool"
|
|
23
|
+
spec.add_dependency 'thor', '~>1.0.0'
|
|
24
|
+
spec.add_dependency 'twitter', '~>7.0'
|
|
28
25
|
## For the word_wrap function
|
|
29
|
-
spec.add_dependency
|
|
30
|
-
|
|
31
|
-
# Development dependencies
|
|
32
|
-
## Setup
|
|
33
|
-
spec.add_development_dependency "bundler", "~> 1.10"
|
|
34
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
|
35
|
-
## Testing
|
|
36
|
-
spec.add_development_dependency "rspec"
|
|
37
|
-
spec.add_development_dependency "cucumber"
|
|
38
|
-
spec.add_development_dependency "aruba"
|
|
39
|
-
## Debugging
|
|
40
|
-
spec.add_development_dependency "pry"
|
|
41
|
-
spec.add_development_dependency 'pry-stack_explorer'
|
|
42
|
-
spec.add_development_dependency 'pry-byebug'
|
|
43
|
-
spec.add_development_dependency 'pry-doc'
|
|
44
|
-
spec.add_development_dependency 'pry-awesome_print'
|
|
26
|
+
spec.add_dependency 'facets', '~>3.0'
|
|
45
27
|
end
|
data/bin/console
CHANGED
data/bin/extract_creds
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require 'yaml'
|
|
5
|
+
|
|
6
|
+
begin
|
|
7
|
+
augury_config = YAML.load_file(File.expand_path('~/.augury.yml'))
|
|
8
|
+
puts augury_config['twitter'].collect { |k, v| "export TWITTER_#{k.upcase}=#{v}" }.join("\n")
|
|
9
|
+
rescue Errno::ENOENT
|
|
10
|
+
puts 'echo "No config file present (~/.augury.yml) no env vars set"'
|
|
11
|
+
exit 1
|
|
12
|
+
end
|
data/bin/setup
CHANGED
data/lib/augury.rb
CHANGED
data/lib/augury/cli.rb
CHANGED
|
@@ -1,27 +1,84 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'thor'
|
|
4
|
+
require 'yaml'
|
|
2
5
|
require 'augury'
|
|
3
6
|
|
|
4
7
|
module Augury
|
|
5
8
|
class CLI < Thor
|
|
6
9
|
desc 'generate USERNAME [PATH]', 'Generate a fortune file for the given username'
|
|
7
|
-
|
|
8
|
-
option :
|
|
10
|
+
|
|
11
|
+
option :width,
|
|
12
|
+
type: :numeric,
|
|
13
|
+
aliases: '-w',
|
|
14
|
+
desc: 'The maximum number of columns that will be written on a line. DEFAULT: 72'
|
|
15
|
+
|
|
16
|
+
option :append,
|
|
17
|
+
type: :boolean,
|
|
18
|
+
aliases: '-a',
|
|
19
|
+
desc: 'If set, the target path will be appended to instead of overwritten'
|
|
20
|
+
|
|
21
|
+
option :count,
|
|
22
|
+
type: :numeric,
|
|
23
|
+
aliases: '-c',
|
|
24
|
+
desc: 'The number of tweets to get. Set to 0 to get all. DEFAULT: 200'
|
|
25
|
+
|
|
26
|
+
option :retweets,
|
|
27
|
+
type: :boolean,
|
|
28
|
+
aliases: '-r',
|
|
29
|
+
desc: 'Include retweets. DEFAULT: false'
|
|
30
|
+
|
|
31
|
+
option :replies,
|
|
32
|
+
type: :boolean,
|
|
33
|
+
aliases: '-R',
|
|
34
|
+
desc: 'Include replies. DEFAULT: false'
|
|
35
|
+
|
|
36
|
+
option :links,
|
|
37
|
+
type: :boolean,
|
|
38
|
+
aliases: '-l',
|
|
39
|
+
desc: 'Include tweets with links in them. DEFAULT: false'
|
|
40
|
+
|
|
41
|
+
option :attribution,
|
|
42
|
+
type: :boolean,
|
|
43
|
+
aliases: '-A',
|
|
44
|
+
desc: 'Add an author attribution to each fortune. DEFAULT: false'
|
|
45
|
+
|
|
9
46
|
def generate(username, *path)
|
|
10
47
|
path = File.expand_path(path[0] || username)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
48
|
+
augury = Augury::Fortune.new(username, path, options)
|
|
49
|
+
augury.twitter_setup
|
|
50
|
+
augury.retrieve_tweets
|
|
51
|
+
augury.write_fortune
|
|
52
|
+
say "Fortune written out to #{path}"
|
|
53
|
+
rescue StandardError => e
|
|
54
|
+
say 'There was an error running the command. Details below:'
|
|
55
|
+
say e.message
|
|
56
|
+
exit 1
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
private
|
|
60
|
+
|
|
61
|
+
def options
|
|
62
|
+
original_options = super
|
|
63
|
+
defaults = Thor::CoreExt::HashWithIndifferentAccess.new(
|
|
64
|
+
{
|
|
65
|
+
width: 72,
|
|
66
|
+
append: false,
|
|
67
|
+
count: 200,
|
|
68
|
+
retweets: false,
|
|
69
|
+
replies: false,
|
|
70
|
+
links: false,
|
|
71
|
+
attribution: false,
|
|
72
|
+
},
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
config_path = File.expand_path(ENV.fetch('AUGURY_CFG_PATH', '~/.augury.yml'))
|
|
76
|
+
if File.file?(config_path)
|
|
77
|
+
config_options = Thor::CoreExt::HashWithIndifferentAccess.new(YAML.load_file(config_path) || {})
|
|
78
|
+
defaults = defaults.merge(config_options)
|
|
21
79
|
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
puts "Fortune written out to #{path}"
|
|
80
|
+
|
|
81
|
+
Thor::CoreExt::HashWithIndifferentAccess.new(defaults.merge(original_options))
|
|
25
82
|
end
|
|
26
83
|
end
|
|
27
84
|
end
|
data/lib/augury/exception.rb
CHANGED
data/lib/augury/fortune.rb
CHANGED
|
@@ -1,55 +1,79 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'cgi'
|
|
1
4
|
require 'facets/string/word_wrap'
|
|
2
|
-
require 'parseconfig'
|
|
3
5
|
require 'twitter'
|
|
4
|
-
require 'wannabe_bool'
|
|
5
6
|
|
|
6
7
|
module Augury
|
|
7
8
|
class Fortune
|
|
8
|
-
def initialize(username, path,
|
|
9
|
-
begin
|
|
10
|
-
@config = ParseConfig.new(File.expand_path('~/.augury.cfg'))
|
|
11
|
-
rescue Errno::EACCES
|
|
12
|
-
@config = ParseConfig.new
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
augury_config = @config.params['augury'] || {}
|
|
9
|
+
def initialize(username, path, config)
|
|
16
10
|
@username = username
|
|
17
11
|
@path = path
|
|
18
|
-
@
|
|
19
|
-
@
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
12
|
+
@config = config
|
|
13
|
+
@tweets = []
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def collect_with_max_id(collection = [], max_id = nil, &block)
|
|
17
|
+
response = yield(max_id)
|
|
18
|
+
collection += response
|
|
19
|
+
if response.empty?
|
|
20
|
+
collection
|
|
21
|
+
elsif !@config[:count].zero? && collection.length >= @config[:count]
|
|
22
|
+
# Get everything or trim the results to the count
|
|
23
|
+
@config[:count].zero? ? collection : collection[0..@config[:count] - 1]
|
|
24
|
+
else
|
|
25
|
+
collect_with_max_id(collection, response.last.id - 1, &block)
|
|
28
26
|
end
|
|
29
27
|
end
|
|
30
28
|
|
|
31
|
-
def
|
|
32
|
-
@
|
|
29
|
+
def retrieve_tweets
|
|
30
|
+
@tweets = collect_with_max_id do |max_id|
|
|
31
|
+
options = {
|
|
32
|
+
count: 200,
|
|
33
|
+
include_rts: @config[:retweets],
|
|
34
|
+
exclude_replies: !@config[:replies],
|
|
35
|
+
}
|
|
36
|
+
options[:max_id] = max_id unless max_id.nil?
|
|
37
|
+
@twitter.user_timeline(@username, options)
|
|
38
|
+
end
|
|
39
|
+
rescue Twitter::Error::TooManyRequests => e
|
|
40
|
+
reset_length = e.rate_limit.reset_in + 1
|
|
41
|
+
puts "Twitter rate limit exceeded. Waiting #{reset_length} minute(s)"
|
|
42
|
+
sleep reset_length
|
|
33
43
|
end
|
|
34
44
|
|
|
35
|
-
def format_fortune
|
|
36
|
-
tweets.flat_map
|
|
45
|
+
def format_fortune
|
|
46
|
+
filtered = @tweets.flat_map(&:full_text).reject do |tweet|
|
|
47
|
+
tweet.match(/https?:/) unless @config[:links]
|
|
48
|
+
end
|
|
49
|
+
formatted = filtered.flat_map { |tweet| CGI.unescapeHTML(tweet).word_wrap(@config[:width]) }
|
|
50
|
+
author = @config[:attribution] ? "\n-- #{@twitter.user(@username).name}\n" : ''
|
|
51
|
+
formatted.join("#{author}%\n")
|
|
37
52
|
end
|
|
38
53
|
|
|
39
|
-
def write_fortune
|
|
54
|
+
def write_fortune
|
|
40
55
|
# Write out the file
|
|
41
56
|
begin
|
|
42
|
-
mode = @append ? 'a' : 'w'
|
|
57
|
+
mode = @config[:append] ? 'a' : 'w'
|
|
43
58
|
file = File.open(@path, mode)
|
|
44
|
-
file.write("%\n") if @append
|
|
45
|
-
file.write(
|
|
46
|
-
rescue IOError => e
|
|
47
|
-
puts e
|
|
59
|
+
file.write("%\n") if @config[:append]
|
|
60
|
+
file.write(format_fortune)
|
|
48
61
|
ensure
|
|
49
|
-
file
|
|
62
|
+
file&.close
|
|
50
63
|
end
|
|
51
64
|
# Create the dat file too
|
|
52
|
-
`strfile #{@path} #{@path}.dat`
|
|
65
|
+
`strfile '#{@path}' '#{@path}.dat'`
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def twitter_setup
|
|
69
|
+
raise Augury::TwitterConfigError unless @config[:twitter]
|
|
70
|
+
|
|
71
|
+
@twitter = Twitter::REST::Client.new do |cfg|
|
|
72
|
+
cfg.consumer_key = @config[:twitter]['consumer_key']
|
|
73
|
+
cfg.consumer_secret = @config[:twitter]['consumer_secret']
|
|
74
|
+
cfg.access_token = @config[:twitter]['access_token']
|
|
75
|
+
cfg.access_token_secret = @config[:twitter]['access_token_secret']
|
|
76
|
+
end
|
|
53
77
|
end
|
|
54
78
|
end
|
|
55
79
|
end
|
data/lib/augury/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,225 +1,57 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: augury
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Clayton Parker
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-01-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: parseconfig
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
27
13
|
- !ruby/object:Gem::Dependency
|
|
28
14
|
name: thor
|
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
|
30
16
|
requirements:
|
|
31
|
-
- - "
|
|
17
|
+
- - "~>"
|
|
32
18
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
19
|
+
version: 1.0.0
|
|
34
20
|
type: :runtime
|
|
35
21
|
prerelease: false
|
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
23
|
requirements:
|
|
38
|
-
- - "
|
|
24
|
+
- - "~>"
|
|
39
25
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
26
|
+
version: 1.0.0
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: twitter
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :runtime
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: wannabe_bool
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :runtime
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: facets
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0'
|
|
76
|
-
type: :runtime
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - ">="
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: bundler
|
|
85
29
|
requirement: !ruby/object:Gem::Requirement
|
|
86
30
|
requirements:
|
|
87
31
|
- - "~>"
|
|
88
32
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
90
|
-
type: :
|
|
33
|
+
version: '7.0'
|
|
34
|
+
type: :runtime
|
|
91
35
|
prerelease: false
|
|
92
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
37
|
requirements:
|
|
94
38
|
- - "~>"
|
|
95
39
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
40
|
+
version: '7.0'
|
|
97
41
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
42
|
+
name: facets
|
|
99
43
|
requirement: !ruby/object:Gem::Requirement
|
|
100
44
|
requirements:
|
|
101
45
|
- - "~>"
|
|
102
46
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
104
|
-
type: :
|
|
47
|
+
version: '3.0'
|
|
48
|
+
type: :runtime
|
|
105
49
|
prerelease: false
|
|
106
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
51
|
requirements:
|
|
108
52
|
- - "~>"
|
|
109
53
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '
|
|
111
|
-
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: rspec
|
|
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'
|
|
125
|
-
- !ruby/object:Gem::Dependency
|
|
126
|
-
name: cucumber
|
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
|
128
|
-
requirements:
|
|
129
|
-
- - ">="
|
|
130
|
-
- !ruby/object:Gem::Version
|
|
131
|
-
version: '0'
|
|
132
|
-
type: :development
|
|
133
|
-
prerelease: false
|
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
-
requirements:
|
|
136
|
-
- - ">="
|
|
137
|
-
- !ruby/object:Gem::Version
|
|
138
|
-
version: '0'
|
|
139
|
-
- !ruby/object:Gem::Dependency
|
|
140
|
-
name: aruba
|
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
|
142
|
-
requirements:
|
|
143
|
-
- - ">="
|
|
144
|
-
- !ruby/object:Gem::Version
|
|
145
|
-
version: '0'
|
|
146
|
-
type: :development
|
|
147
|
-
prerelease: false
|
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
-
requirements:
|
|
150
|
-
- - ">="
|
|
151
|
-
- !ruby/object:Gem::Version
|
|
152
|
-
version: '0'
|
|
153
|
-
- !ruby/object:Gem::Dependency
|
|
154
|
-
name: pry
|
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
|
156
|
-
requirements:
|
|
157
|
-
- - ">="
|
|
158
|
-
- !ruby/object:Gem::Version
|
|
159
|
-
version: '0'
|
|
160
|
-
type: :development
|
|
161
|
-
prerelease: false
|
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
-
requirements:
|
|
164
|
-
- - ">="
|
|
165
|
-
- !ruby/object:Gem::Version
|
|
166
|
-
version: '0'
|
|
167
|
-
- !ruby/object:Gem::Dependency
|
|
168
|
-
name: pry-stack_explorer
|
|
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'
|
|
181
|
-
- !ruby/object:Gem::Dependency
|
|
182
|
-
name: pry-byebug
|
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
|
184
|
-
requirements:
|
|
185
|
-
- - ">="
|
|
186
|
-
- !ruby/object:Gem::Version
|
|
187
|
-
version: '0'
|
|
188
|
-
type: :development
|
|
189
|
-
prerelease: false
|
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
-
requirements:
|
|
192
|
-
- - ">="
|
|
193
|
-
- !ruby/object:Gem::Version
|
|
194
|
-
version: '0'
|
|
195
|
-
- !ruby/object:Gem::Dependency
|
|
196
|
-
name: pry-doc
|
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
|
198
|
-
requirements:
|
|
199
|
-
- - ">="
|
|
200
|
-
- !ruby/object:Gem::Version
|
|
201
|
-
version: '0'
|
|
202
|
-
type: :development
|
|
203
|
-
prerelease: false
|
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
205
|
-
requirements:
|
|
206
|
-
- - ">="
|
|
207
|
-
- !ruby/object:Gem::Version
|
|
208
|
-
version: '0'
|
|
209
|
-
- !ruby/object:Gem::Dependency
|
|
210
|
-
name: pry-awesome_print
|
|
211
|
-
requirement: !ruby/object:Gem::Requirement
|
|
212
|
-
requirements:
|
|
213
|
-
- - ">="
|
|
214
|
-
- !ruby/object:Gem::Version
|
|
215
|
-
version: '0'
|
|
216
|
-
type: :development
|
|
217
|
-
prerelease: false
|
|
218
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
219
|
-
requirements:
|
|
220
|
-
- - ">="
|
|
221
|
-
- !ruby/object:Gem::Version
|
|
222
|
-
version: '0'
|
|
54
|
+
version: '3.0'
|
|
223
55
|
description: This gem turns a twitter feed into a fortune file that you can use with
|
|
224
56
|
the fortune program
|
|
225
57
|
email:
|
|
@@ -229,16 +61,21 @@ executables:
|
|
|
229
61
|
extensions: []
|
|
230
62
|
extra_rdoc_files: []
|
|
231
63
|
files:
|
|
64
|
+
- ".codeclimate.yml"
|
|
232
65
|
- ".gitignore"
|
|
233
66
|
- ".rspec"
|
|
67
|
+
- ".rubocop.yml"
|
|
68
|
+
- ".solargraph.yml"
|
|
234
69
|
- ".travis.yml"
|
|
70
|
+
- CHANGELOG.md
|
|
235
71
|
- Gemfile
|
|
72
|
+
- Gemfile.lock
|
|
236
73
|
- LICENSE.txt
|
|
237
74
|
- README.md
|
|
238
75
|
- Rakefile
|
|
239
|
-
- TODO.md
|
|
240
76
|
- augury.gemspec
|
|
241
77
|
- bin/console
|
|
78
|
+
- bin/extract_creds
|
|
242
79
|
- bin/setup
|
|
243
80
|
- exe/augury
|
|
244
81
|
- lib/augury.rb
|
|
@@ -258,17 +95,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
258
95
|
requirements:
|
|
259
96
|
- - ">="
|
|
260
97
|
- !ruby/object:Gem::Version
|
|
261
|
-
version:
|
|
98
|
+
version: 2.6.0
|
|
262
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
263
100
|
requirements:
|
|
264
101
|
- - ">="
|
|
265
102
|
- !ruby/object:Gem::Version
|
|
266
103
|
version: '0'
|
|
267
104
|
requirements: []
|
|
268
|
-
|
|
269
|
-
rubygems_version: 2.4.5
|
|
105
|
+
rubygems_version: 3.1.4
|
|
270
106
|
signing_key:
|
|
271
107
|
specification_version: 4
|
|
272
108
|
summary: Turn a twitter feed into a fortune file
|
|
273
109
|
test_files: []
|
|
274
|
-
has_rdoc:
|
data/TODO.md
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# TODO
|
|
2
|
-
|
|
3
|
-
Some ideas for things that could be added:
|
|
4
|
-
|
|
5
|
-
- Add an option to limit the tweets from a certain date forward.
|
|
6
|
-
This would allow for adding the latest tweets via cron.
|
|
7
|
-
- Add options for how many tweets to retrieve
|
|
8
|
-
- Ask user for twitter config on first start, save it out
|
|
9
|
-
- Sign each entry with the name of the twitter account
|
|
10
|
-
- Series of regex that could be applied.
|
|
11
|
-
This would be a way to make SeinfeldToday dialog get put on their own lines.
|