friends 0.28 → 0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +2 -0
- data/CHANGELOG.md +13 -0
- data/README.md +35 -5
- data/Rakefile +1 -1
- data/bin/friends +7 -379
- data/friends.gemspec +3 -1
- data/lib/friends/activity.rb +4 -4
- data/lib/friends/commands/add.rb +64 -0
- data/lib/friends/commands/clean.rb +9 -0
- data/lib/friends/commands/edit.rb +12 -0
- data/lib/friends/commands/graph.rb +56 -0
- data/lib/friends/commands/list.rb +143 -0
- data/lib/friends/commands/remove.rb +27 -0
- data/lib/friends/commands/rename.rb +30 -0
- data/lib/friends/commands/set.rb +14 -0
- data/lib/friends/commands/stats.rb +11 -0
- data/lib/friends/commands/suggest.rb +20 -0
- data/lib/friends/commands/update.rb +29 -0
- data/lib/friends/graph.rb +7 -7
- data/lib/friends/introvert.rb +23 -18
- data/lib/friends/version.rb +1 -1
- data/test/commands/add/activity_spec.rb +379 -0
- data/test/commands/add/friend_spec.rb +30 -0
- data/test/commands/add/location_spec.rb +30 -0
- data/test/commands/add/nickname_spec.rb +50 -0
- data/test/commands/add/tag_spec.rb +65 -0
- data/test/commands/clean_spec.rb +39 -0
- data/test/commands/graph_spec.rb +147 -0
- data/test/commands/help_spec.rb +45 -0
- data/test/commands/list/activities_spec.rb +136 -0
- data/test/commands/list/favorite/friends_spec.rb +77 -0
- data/test/commands/list/favorite/locations_spec.rb +82 -0
- data/test/commands/list/friends_spec.rb +76 -0
- data/test/commands/list/locations_spec.rb +35 -0
- data/test/commands/list/tags_spec.rb +58 -0
- data/test/commands/remove/nickname_spec.rb +63 -0
- data/test/commands/remove/tag_spec.rb +64 -0
- data/test/commands/rename/friend_spec.rb +55 -0
- data/test/commands/rename/location_spec.rb +43 -0
- data/test/commands/set/location_spec.rb +54 -0
- data/test/commands/stats_spec.rb +41 -0
- data/test/commands/suggest_spec.rb +86 -0
- data/test/commands/update_spec.rb +13 -0
- data/test/helper.rb +114 -0
- metadata +89 -15
- data/test/activity_spec.rb +0 -597
- data/test/friend_spec.rb +0 -241
- data/test/graph_spec.rb +0 -92
- data/test/introvert_spec.rb +0 -969
- data/test/location_spec.rb +0 -60
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "./test/helper"
|
4
|
+
|
5
|
+
clean_describe "rename friend" do
|
6
|
+
subject { run_cmd("rename friend #{old_name} #{new_name}") }
|
7
|
+
|
8
|
+
let(:content) { CONTENT }
|
9
|
+
let(:new_name) { "'George Washington'" }
|
10
|
+
|
11
|
+
describe "when friend name has no matches" do
|
12
|
+
let(:old_name) { "Garbage" }
|
13
|
+
it "prints an error message" do
|
14
|
+
stderr_only 'Error: No friend found for "Garbage"'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "when friend name has more than one match" do
|
19
|
+
let(:old_name) { "George" }
|
20
|
+
before { run_cmd("add friend George Harrison") }
|
21
|
+
|
22
|
+
it "prints an error message" do
|
23
|
+
stderr_only 'Error: More than one friend found for "George": '\
|
24
|
+
"George Harrison, George Washington Carver"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "when friend name has one match" do
|
29
|
+
let(:old_name) { "George" }
|
30
|
+
|
31
|
+
it "renames friend" do
|
32
|
+
line_changed "- George Washington Carver", "- George Washington"
|
33
|
+
end
|
34
|
+
|
35
|
+
it "updates friend name in activities" do
|
36
|
+
run_cmd("list activities")[:stdout].must_equal <<-FILE
|
37
|
+
2015-11-01: Grace Hopper and I went to Marie's Diner. George had to cancel at the last minute. @food
|
38
|
+
2015-01-04: Got lunch with Grace Hopper and George Washington Carver. @food
|
39
|
+
2014-12-31: Celebrated the new year in Paris with Marie Curie. @partying
|
40
|
+
2014-11-15: Talked to George Washington Carver on the phone for an hour.
|
41
|
+
FILE
|
42
|
+
subject
|
43
|
+
run_cmd("list activities")[:stdout].must_equal <<-FILE
|
44
|
+
2015-11-01: Grace Hopper and I went to Marie's Diner. George had to cancel at the last minute. @food
|
45
|
+
2015-01-04: Got lunch with Grace Hopper and George Washington. @food
|
46
|
+
2014-12-31: Celebrated the new year in Paris with Marie Curie. @partying
|
47
|
+
2014-11-15: Talked to George Washington on the phone for an hour.
|
48
|
+
FILE
|
49
|
+
end
|
50
|
+
|
51
|
+
it "prints an output message" do
|
52
|
+
stdout_only 'Name changed: "George Washington"'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "./test/helper"
|
4
|
+
|
5
|
+
clean_describe "rename location" do
|
6
|
+
subject { run_cmd("rename location #{old_name} #{new_name}") }
|
7
|
+
|
8
|
+
let(:content) { CONTENT }
|
9
|
+
let(:new_name) { "'Ville Lumière'" }
|
10
|
+
|
11
|
+
describe "when location name has no matches" do
|
12
|
+
let(:old_name) { "Garbage" }
|
13
|
+
it "prints an error message" do
|
14
|
+
stderr_only 'Error: No location found for "Garbage"'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "when location name has one match" do
|
19
|
+
let(:old_name) { "Paris" }
|
20
|
+
|
21
|
+
it "renames location" do
|
22
|
+
line_changed("- Paris", "- Ville Lumière")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "updates location name in activities" do
|
26
|
+
line_changed(
|
27
|
+
"- 2014-12-31: Celebrated the new year in _Paris_ with **Marie Curie**. @partying",
|
28
|
+
"- 2014-12-31: Celebrated the new year in _Ville Lumière_ with **Marie Curie**. @partying"
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "updates location name for friends" do
|
33
|
+
line_changed(
|
34
|
+
"- Grace Hopper (a.k.a. The Admiral a.k.a. Amazing Grace) [Paris] @navy @science",
|
35
|
+
"- Grace Hopper (a.k.a. The Admiral a.k.a. Amazing Grace) [Ville Lumière] @navy @science"
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "prints an output message" do
|
40
|
+
stdout_only 'Location renamed: "Ville Lumière"'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "./test/helper"
|
4
|
+
|
5
|
+
clean_describe "set location" do
|
6
|
+
subject { run_cmd("set location #{friend_name} #{location_name}") }
|
7
|
+
let(:content) { CONTENT }
|
8
|
+
|
9
|
+
describe "when friend does not exist" do
|
10
|
+
let(:friend_name) { "Garbage" }
|
11
|
+
let(:location_name) { "Paris" }
|
12
|
+
|
13
|
+
it "prints an error message" do
|
14
|
+
stderr_only 'Error: No friend found for "Garbage"'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "when location does not exist" do
|
19
|
+
let(:friend_name) { "Marie" }
|
20
|
+
let(:location_name) { "Garbage" }
|
21
|
+
|
22
|
+
it "prints an error message" do
|
23
|
+
stderr_only 'Error: No location found for "Garbage"'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "when friend and location exist" do
|
28
|
+
let(:location_name) { "Paris" }
|
29
|
+
|
30
|
+
describe "when friend already has a location" do
|
31
|
+
let(:friend_name) { "Marie" }
|
32
|
+
|
33
|
+
it "prints correct output" do
|
34
|
+
stdout_only "Marie Curie's location set to: Paris"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "updates existing location" do
|
38
|
+
line_changed "- Marie Curie [Atlantis] @science", "- Marie Curie [Paris] @science"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "when friend has no location" do
|
43
|
+
let(:friend_name) { "George" }
|
44
|
+
|
45
|
+
it "prints correct output" do
|
46
|
+
stdout_only "George Washington Carver's location set to: Paris"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "adds a location" do
|
50
|
+
line_changed "- George Washington Carver", "- George Washington Carver [Paris]"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "./test/helper"
|
4
|
+
|
5
|
+
clean_describe "stats" do
|
6
|
+
subject { run_cmd("stats") }
|
7
|
+
|
8
|
+
describe "when file does not exist" do
|
9
|
+
it "returns the stats" do
|
10
|
+
stdout_only <<-FILE
|
11
|
+
Total activities: 0
|
12
|
+
Total friends: 0
|
13
|
+
Total time elapsed: 0 days
|
14
|
+
FILE
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "when the file is empty" do
|
19
|
+
let(:content) { "" }
|
20
|
+
|
21
|
+
it "returns the stats" do
|
22
|
+
stdout_only <<-FILE
|
23
|
+
Total activities: 0
|
24
|
+
Total friends: 0
|
25
|
+
Total time elapsed: 0 days
|
26
|
+
FILE
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "when file has stats" do
|
31
|
+
let(:content) { CONTENT }
|
32
|
+
|
33
|
+
it "returns the content" do
|
34
|
+
stdout_only <<-FILE
|
35
|
+
Total activities: 4
|
36
|
+
Total friends: 3
|
37
|
+
Total time elapsed: 351 days
|
38
|
+
FILE
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "./test/helper"
|
4
|
+
|
5
|
+
clean_describe "suggest" do
|
6
|
+
subject { run_cmd("suggest") }
|
7
|
+
|
8
|
+
describe "when file does not exist" do
|
9
|
+
it "prints a no-data message" do
|
10
|
+
stdout_only <<-FILE
|
11
|
+
Distant friend: None found
|
12
|
+
Moderate friend: None found
|
13
|
+
Close friend: None found
|
14
|
+
FILE
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "when the file is empty" do
|
19
|
+
let(:content) { "" }
|
20
|
+
|
21
|
+
it "prints a no-data message" do
|
22
|
+
stdout_only <<-FILE
|
23
|
+
Distant friend: None found
|
24
|
+
Moderate friend: None found
|
25
|
+
Close friend: None found
|
26
|
+
FILE
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "when file has content" do
|
31
|
+
let(:content) do
|
32
|
+
<<-FILE
|
33
|
+
### Activities:
|
34
|
+
- 2017-03-01: Met up with **George Washington Carver**.
|
35
|
+
- 2017-02-01: Met up with **George Washington Carver**.
|
36
|
+
- 2017-01-01: Met up with **George Washington Carver**.
|
37
|
+
- 2016-12-01: Met up with **Grace Hopper**.
|
38
|
+
- 2016-11-01: Met up with **Grace Hopper**.
|
39
|
+
- 2016-10-01: Met up with **Grace Hopper**.
|
40
|
+
- 2016-09-01: Met up with **Grace Hopper**.
|
41
|
+
- 2016-08-01: Met up with **Grace Hopper**.
|
42
|
+
- 2016-07-01: Met up with **Grace Hopper**.
|
43
|
+
- 2016-06-01: Met up with **Grace Hopper**.
|
44
|
+
- 2016-05-01: Met up with **Grace Hopper**.
|
45
|
+
- 2016-04-01: Met up with **Grace Hopper**.
|
46
|
+
- 2016-03-01: Met up with **Grace Hopper**.
|
47
|
+
- 2016-02-01: Met up with **Grace Hopper**.
|
48
|
+
- 2016-01-01: Met up with **Grace Hopper**.
|
49
|
+
- 2015-11-01: **Grace Hopper** and I went to _Marie's Diner_. George had to cancel at the last minute. @food
|
50
|
+
- 2015-01-04: Got lunch with **Grace Hopper** and **George Washington Carver**. @food
|
51
|
+
- 2014-12-31: Celebrated the new year in _Paris_ with **Marie Curie**. @partying
|
52
|
+
- 2014-11-15: Talked to **George Washington Carver** on the phone for an hour.
|
53
|
+
|
54
|
+
### Friends:
|
55
|
+
- George Washington Carver
|
56
|
+
- Grace Hopper (a.k.a. The Admiral a.k.a. Amazing Grace) [Paris] @navy @science
|
57
|
+
- Marie Curie [Atlantis] @science
|
58
|
+
|
59
|
+
### Locations:
|
60
|
+
- Atlantis
|
61
|
+
- Marie's Diner
|
62
|
+
- Paris
|
63
|
+
FILE
|
64
|
+
end
|
65
|
+
|
66
|
+
it "prints suggested friends" do
|
67
|
+
stdout_only <<-FILE
|
68
|
+
Distant friend: Marie Curie
|
69
|
+
Moderate friend: George Washington Carver
|
70
|
+
Close friend: Grace Hopper
|
71
|
+
FILE
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "--in" do
|
75
|
+
subject { run_cmd("suggest --in Paris") }
|
76
|
+
|
77
|
+
it "prints suggested friends" do
|
78
|
+
stdout_only <<-FILE
|
79
|
+
Distant friend: None found
|
80
|
+
Moderate friend: None found
|
81
|
+
Close friend: Grace Hopper
|
82
|
+
FILE
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "./test/helper"
|
4
|
+
|
5
|
+
clean_describe "update" do
|
6
|
+
subject { run_cmd("update") }
|
7
|
+
|
8
|
+
it "prints a status message" do
|
9
|
+
subject[:stderr].must_equal ""
|
10
|
+
subject[:status].must_equal 0
|
11
|
+
[/Updated to friends/, /Already up-to-date/].one? { |m| subject[:stdout] =~ m }.must_equal true
|
12
|
+
end
|
13
|
+
end
|
data/test/helper.rb
CHANGED
@@ -3,7 +3,121 @@
|
|
3
3
|
require "codeclimate-test-reporter"
|
4
4
|
CodeClimate::TestReporter.start
|
5
5
|
|
6
|
+
ENV["MT_HELL"] = "1" # Forces tests to have at least one assertion to pass.
|
7
|
+
|
6
8
|
require "minitest/autorun"
|
9
|
+
require "minitest/parallel_fork"
|
7
10
|
require "minitest/pride"
|
11
|
+
require "minitest/hell"
|
12
|
+
require "open3"
|
13
|
+
require "securerandom"
|
8
14
|
|
9
15
|
require "friends"
|
16
|
+
|
17
|
+
CONTENT = <<-FILE
|
18
|
+
### Activities:
|
19
|
+
- 2015-11-01: **Grace Hopper** and I went to _Marie's Diner_. George had to cancel at the last minute. @food
|
20
|
+
- 2015-01-04: Got lunch with **Grace Hopper** and **George Washington Carver**. @food
|
21
|
+
- 2014-12-31: Celebrated the new year in _Paris_ with **Marie Curie**. @partying
|
22
|
+
- 2014-11-15: Talked to **George Washington Carver** on the phone for an hour.
|
23
|
+
|
24
|
+
### Friends:
|
25
|
+
- George Washington Carver
|
26
|
+
- Grace Hopper (a.k.a. The Admiral a.k.a. Amazing Grace) [Paris] @navy @science
|
27
|
+
- Marie Curie [Atlantis] @science
|
28
|
+
|
29
|
+
### Locations:
|
30
|
+
- Atlantis
|
31
|
+
- Marie's Diner
|
32
|
+
- Paris
|
33
|
+
FILE
|
34
|
+
|
35
|
+
# This is CONTENT but with activities, friends, and locations unsorted.
|
36
|
+
SCRAMBLED_CONTENT = <<-FILE
|
37
|
+
### Activities:
|
38
|
+
- 2015-01-04: Got lunch with **Grace Hopper** and **George Washington Carver**. @food
|
39
|
+
- 2015-11-01: **Grace Hopper** and I went to _Marie's Diner_. George had to cancel at the last minute. @food
|
40
|
+
- 2014-11-15: Talked to **George Washington Carver** on the phone for an hour.
|
41
|
+
- 2014-12-31: Celebrated the new year in _Paris_ with **Marie Curie**. @partying
|
42
|
+
|
43
|
+
### Friends:
|
44
|
+
- George Washington Carver
|
45
|
+
- Marie Curie [Atlantis] @science
|
46
|
+
- Grace Hopper (a.k.a. The Admiral a.k.a. Amazing Grace) [Paris] @navy @science
|
47
|
+
|
48
|
+
### Locations:
|
49
|
+
- Paris
|
50
|
+
- Atlantis
|
51
|
+
- Marie's Diner
|
52
|
+
FILE
|
53
|
+
|
54
|
+
# Define these methods so they can be referenced in the methods below. They'll be overridden in
|
55
|
+
# test files.
|
56
|
+
def filename; end
|
57
|
+
|
58
|
+
def subject; end
|
59
|
+
|
60
|
+
def run_cmd(command, **args)
|
61
|
+
stdout, stderr, status = Open3.capture3(
|
62
|
+
"bundle exec bin/friends --colorless --filename #{filename} #{command}",
|
63
|
+
**args
|
64
|
+
)
|
65
|
+
{
|
66
|
+
stdout: stdout,
|
67
|
+
stderr: stderr,
|
68
|
+
status: status.exitstatus
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
# @param str [String] a string
|
73
|
+
# @return [String] the input string with a newline appended to it if one was not already
|
74
|
+
# present, *unless* the string is empty
|
75
|
+
def ensure_trailing_newline_unless_empty(str)
|
76
|
+
return "" if str.empty?
|
77
|
+
|
78
|
+
str.to_s[-1] == "\n" ? str.to_s : "#{str}\n"
|
79
|
+
end
|
80
|
+
|
81
|
+
def stdout_only(expected)
|
82
|
+
subject[:stdout].must_equal ensure_trailing_newline_unless_empty(expected)
|
83
|
+
subject[:stderr].must_equal ""
|
84
|
+
subject[:status].must_equal 0
|
85
|
+
end
|
86
|
+
|
87
|
+
def stderr_only(expected)
|
88
|
+
subject[:stdout].must_equal ""
|
89
|
+
subject[:stderr].must_equal ensure_trailing_newline_unless_empty(expected)
|
90
|
+
subject[:status].must_be :>, 0
|
91
|
+
end
|
92
|
+
|
93
|
+
def file_equals(expected)
|
94
|
+
subject
|
95
|
+
File.read(filename).must_equal expected
|
96
|
+
end
|
97
|
+
|
98
|
+
def line_changed(expected_old, expected_new)
|
99
|
+
index = File.read(filename).split("\n").index(expected_old)
|
100
|
+
index.must_be_kind_of Numeric # Not nil, so we know that `expected_old` was found.
|
101
|
+
subject
|
102
|
+
File.read(filename).split("\n")[index].must_equal expected_new
|
103
|
+
end
|
104
|
+
|
105
|
+
def line_added(expected)
|
106
|
+
n_initial_lines = File.read(filename).split("\n").size
|
107
|
+
subject
|
108
|
+
lines = File.read(filename).split("\n")
|
109
|
+
lines.index(expected).must_be_kind_of Numeric # Not nil, so we know that `expected` was found.
|
110
|
+
lines.size.must_equal(n_initial_lines + 1) # Line was added, not changed.
|
111
|
+
end
|
112
|
+
|
113
|
+
def clean_describe(desc, *additional_desc, &block)
|
114
|
+
describe desc, *additional_desc do
|
115
|
+
let(:filename) { "test/tmp/friends#{SecureRandom.uuid}.md" }
|
116
|
+
let(:content) { nil }
|
117
|
+
|
118
|
+
before { File.write(filename, content) unless content.nil? }
|
119
|
+
after { File.delete(filename) if File.exist?(filename) }
|
120
|
+
|
121
|
+
class_eval(&block)
|
122
|
+
end
|
123
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: friends
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.29'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacob Evelyn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chronic
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
47
|
+
version: '0.15'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0.
|
54
|
+
version: '0.15'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: paint
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +122,34 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '5.5'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: minitest-parallel_fork
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '1.0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '1.0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: minitest-proveit
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '1.0'
|
125
153
|
- !ruby/object:Gem::Dependency
|
126
154
|
name: overcommit
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -191,6 +219,17 @@ files:
|
|
191
219
|
- friends.md
|
192
220
|
- lib/friends.rb
|
193
221
|
- lib/friends/activity.rb
|
222
|
+
- lib/friends/commands/add.rb
|
223
|
+
- lib/friends/commands/clean.rb
|
224
|
+
- lib/friends/commands/edit.rb
|
225
|
+
- lib/friends/commands/graph.rb
|
226
|
+
- lib/friends/commands/list.rb
|
227
|
+
- lib/friends/commands/remove.rb
|
228
|
+
- lib/friends/commands/rename.rb
|
229
|
+
- lib/friends/commands/set.rb
|
230
|
+
- lib/friends/commands/stats.rb
|
231
|
+
- lib/friends/commands/suggest.rb
|
232
|
+
- lib/friends/commands/update.rb
|
194
233
|
- lib/friends/friend.rb
|
195
234
|
- lib/friends/friends_error.rb
|
196
235
|
- lib/friends/graph.rb
|
@@ -199,12 +238,29 @@ files:
|
|
199
238
|
- lib/friends/regex_builder.rb
|
200
239
|
- lib/friends/serializable.rb
|
201
240
|
- lib/friends/version.rb
|
202
|
-
- test/activity_spec.rb
|
203
|
-
- test/friend_spec.rb
|
204
|
-
- test/
|
241
|
+
- test/commands/add/activity_spec.rb
|
242
|
+
- test/commands/add/friend_spec.rb
|
243
|
+
- test/commands/add/location_spec.rb
|
244
|
+
- test/commands/add/nickname_spec.rb
|
245
|
+
- test/commands/add/tag_spec.rb
|
246
|
+
- test/commands/clean_spec.rb
|
247
|
+
- test/commands/graph_spec.rb
|
248
|
+
- test/commands/help_spec.rb
|
249
|
+
- test/commands/list/activities_spec.rb
|
250
|
+
- test/commands/list/favorite/friends_spec.rb
|
251
|
+
- test/commands/list/favorite/locations_spec.rb
|
252
|
+
- test/commands/list/friends_spec.rb
|
253
|
+
- test/commands/list/locations_spec.rb
|
254
|
+
- test/commands/list/tags_spec.rb
|
255
|
+
- test/commands/remove/nickname_spec.rb
|
256
|
+
- test/commands/remove/tag_spec.rb
|
257
|
+
- test/commands/rename/friend_spec.rb
|
258
|
+
- test/commands/rename/location_spec.rb
|
259
|
+
- test/commands/set/location_spec.rb
|
260
|
+
- test/commands/stats_spec.rb
|
261
|
+
- test/commands/suggest_spec.rb
|
262
|
+
- test/commands/update_spec.rb
|
205
263
|
- test/helper.rb
|
206
|
-
- test/introvert_spec.rb
|
207
|
-
- test/location_spec.rb
|
208
264
|
- test/tmp/.keep
|
209
265
|
homepage: https://github.com/JacobEvelyn/friends
|
210
266
|
licenses:
|
@@ -226,15 +282,33 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
226
282
|
version: '0'
|
227
283
|
requirements: []
|
228
284
|
rubyforge_project:
|
229
|
-
rubygems_version: 2.
|
285
|
+
rubygems_version: 2.6.8
|
230
286
|
signing_key:
|
231
287
|
specification_version: 4
|
232
288
|
summary: Spend time with the people you care about.
|
233
289
|
test_files:
|
234
|
-
- test/activity_spec.rb
|
235
|
-
- test/friend_spec.rb
|
236
|
-
- test/
|
290
|
+
- test/commands/add/activity_spec.rb
|
291
|
+
- test/commands/add/friend_spec.rb
|
292
|
+
- test/commands/add/location_spec.rb
|
293
|
+
- test/commands/add/nickname_spec.rb
|
294
|
+
- test/commands/add/tag_spec.rb
|
295
|
+
- test/commands/clean_spec.rb
|
296
|
+
- test/commands/graph_spec.rb
|
297
|
+
- test/commands/help_spec.rb
|
298
|
+
- test/commands/list/activities_spec.rb
|
299
|
+
- test/commands/list/favorite/friends_spec.rb
|
300
|
+
- test/commands/list/favorite/locations_spec.rb
|
301
|
+
- test/commands/list/friends_spec.rb
|
302
|
+
- test/commands/list/locations_spec.rb
|
303
|
+
- test/commands/list/tags_spec.rb
|
304
|
+
- test/commands/remove/nickname_spec.rb
|
305
|
+
- test/commands/remove/tag_spec.rb
|
306
|
+
- test/commands/rename/friend_spec.rb
|
307
|
+
- test/commands/rename/location_spec.rb
|
308
|
+
- test/commands/set/location_spec.rb
|
309
|
+
- test/commands/stats_spec.rb
|
310
|
+
- test/commands/suggest_spec.rb
|
311
|
+
- test/commands/update_spec.rb
|
237
312
|
- test/helper.rb
|
238
|
-
- test/introvert_spec.rb
|
239
|
-
- test/location_spec.rb
|
240
313
|
- test/tmp/.keep
|
314
|
+
has_rdoc:
|