bowie 0.3.8 → 0.3.9

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: c6de128b1a903cc5e6e15cf5b84fab85a3c376c6
4
- data.tar.gz: 99666a1ee7cba1791b892d5ac8d7b3657a30edb1
3
+ metadata.gz: b1d11347f6f13ef0b6277970b9a3ddd1be58ee5b
4
+ data.tar.gz: 2ddb2a6e22adc24846c9f872844784e863835fdd
5
5
  SHA512:
6
- metadata.gz: 25091b0792ffe4e226c6021e682a6b00155398098a283a99c51f688a99ba69d4936e60959f296ca287392f80f5d1f5325de6b8a16c00b3d05554f4200e92cb65
7
- data.tar.gz: 1f05ddff20967d19416b9f04053ebcb9ab17835a6fda67ca43c6f345d1b98490e3f4b38023efecb36bd02e2cfc837784f3153b29d68fa44c7ebcc20a53012fde
6
+ metadata.gz: ec78b408d237502e9d225e647edc83cb2902cfcce9dc63d5642dc28d81ac0a507cf525b5a409856cb06d24f7b2bdbd4c65355183a5f7c01382ac8e610b1be840
7
+ data.tar.gz: 46f11400095274a130c39fcd4cee63aadeb4d1640a80796b8238b920892bd7afcea62b064bf2bacad47abdfe13ec6f413af4b2e7b865430486ef4ce3ce20aee6
@@ -5,34 +5,37 @@ module Bowie
5
5
  begin
6
6
  YAML.parse(open("https://raw.github.com/axyz/bowie-songs/master/songs.yml")).to_ruby
7
7
  rescue
8
- puts "ERROR: Cannot connect to github.com"
8
+ raise "cannot connect to github.com"
9
9
  end
10
10
  end
11
11
 
12
12
  # Retrive the local registry of installed songs
13
13
  def self.get_local_songs
14
- begin
15
- YAML.load_file('songs.yml')? YAML.load_file('songs.yml') : Array.new
16
- rescue
17
- begin
18
- FileUtils.mkdir 'bowie_songs'
19
- rescue
14
+ if File.exist? 'songs.yml'
15
+ if self.valid_songs_file? 'songs.yml'
16
+ self.check_songs_dir
17
+ return YAML.load_file('songs.yml')
18
+ else
19
+ raise "songs.yml is not valid"
20
20
  end
21
- FileUtils.touch 'songs.yml'
21
+ else
22
+ self.create_empty_songs_file
23
+ self.check_songs_dir
22
24
  return Array.new
23
25
  end
24
26
  end
25
27
 
26
28
  # Retrive the local lyrics file
27
29
  def self.get_local_lyrics
28
- begin
29
- YAML.load_file('bowie_songs/lyrics.yml')? YAML.load_file('songs.yml') : Hash.new
30
- rescue
31
- begin
32
- FileUtils.mkdir 'bowie_songs'
33
- rescue
30
+ if File.exist? 'bowie_songs/lyrics.yml'
31
+ if self.valid_lyrics_file? 'bowie_songs/lyrics.yml'
32
+ return YAML.load_file('bowie_songs/lyrics.yml')
33
+ else
34
+ raise "bowie_songs/lyrics.yml is not valid"
34
35
  end
35
- FileUtils.touch 'bowie_songs/lyrics.yml'
36
+ else
37
+ self.check_songs_dir
38
+ self.create_empty_lyrics_file
36
39
  return Hash.new
37
40
  end
38
41
  end
@@ -57,5 +60,46 @@ module Bowie
57
60
  def self.parse_song_version(s)
58
61
  s.split("#")[1]
59
62
  end
63
+
64
+ def self.valid_songs_file?(file)
65
+ begin
66
+ f = YAML.load_file file
67
+ f.each do |s|
68
+ unless valid_song? s
69
+ return false
70
+ end
71
+ end
72
+ return true
73
+ rescue
74
+ return false
75
+ end
76
+ end
77
+
78
+ def self.valid_song?(string)
79
+ (string =~ /^[a-z0-9]+(-?[a-z0-9])*(#\d+.\d+.\d+)?$/) == nil ? false : true
80
+ end
81
+
82
+ def self.valid_lyrics_file?(file)
83
+ begin
84
+ f = YAML.load_file file
85
+ (f.is_a? Hash)? true : false
86
+ rescue
87
+ false
88
+ end
89
+ end
90
+
91
+ def self.create_empty_songs_file
92
+ File.open("./songs.yml", "w"){|f| YAML.dump(Array.new, f)}
93
+ end
94
+
95
+ def self.check_songs_dir
96
+ unless File.directory? 'bowie_songs'
97
+ FileUtils.mkdir 'bowie_songs'
98
+ end
99
+ end
100
+
101
+ def self.create_empty_lyrics_file
102
+ File.open("./bowie_songs/lyrics.yml", "w"){|f| YAML.dump(Hash.new, f)}
103
+ end
60
104
  end
61
105
  end
@@ -1,3 +1,3 @@
1
1
  module Bowie
2
- VERSION = "0.3.8"
2
+ VERSION = "0.3.9"
3
3
  end
@@ -0,0 +1,58 @@
1
+ describe "Bowie::Actions" do
2
+ it ".install [song]" do
3
+ expect {Bowie::Actions.install('bowie-test')}.to_not raise_error
4
+ expect(File.directory? './bowie_songs').to be true
5
+ expect(File.directory? './bowie_songs/bowie-test').to be true
6
+ expect(File.exist? './songs.yml').to be true
7
+ expect(Bowie::SongUtils.get_local_songs.include? 'bowie-test').to be true
8
+ expect(Bowie::SongUtils.get_local_songs.length).to be 1
9
+ end
10
+
11
+ context "when songs.yml exist" do
12
+ before(:each) do
13
+ File.open("./songs.yml", "w"){|f| YAML.dump(["bowie-test"], f)}
14
+ end
15
+ after(:each) do
16
+ FileUtils.rm_rf('./songs.yml')
17
+ end
18
+
19
+ it "install with no argument" do
20
+ expect {Bowie::Actions.install()}.to_not raise_error
21
+ expect(File.directory? './bowie_songs').to be true
22
+ expect(File.directory? './bowie_songs/bowie-test').to be true
23
+ expect(File.exist? './songs.yml').to be true
24
+ expect(Bowie::SongUtils.get_local_songs.include? 'bowie-test').to be true
25
+ expect(Bowie::SongUtils.get_local_songs.length).to be 1
26
+ end
27
+ end
28
+
29
+ context "when songs.yml do not exist" do
30
+ it "install with no argument" do
31
+ expect {Bowie::Actions.install()}.to_not raise_error
32
+ expect(File.directory? './bowie_songs').to be true
33
+ expect(File.directory? './bowie_songs/bowie-test').to be false
34
+ expect(File.exist? './songs.yml').to be true
35
+ expect(Bowie::SongUtils.get_local_songs.include? 'bowie-test').to be false
36
+ expect(Bowie::SongUtils.get_local_songs.length).to be 0
37
+ end
38
+ end
39
+
40
+ context "when songs.yml is not valid" do
41
+ before(:each) do
42
+ h = Hash.new
43
+ h['bowie-test'] = '0.0.1'
44
+ File.open("./songs.yml", "w"){|f| YAML.dump(h, f)}
45
+ end
46
+ after(:each) do
47
+ FileUtils.rm_rf('./songs.yml')
48
+ end
49
+
50
+ it "install with no argument" do
51
+ expect {Bowie::Actions.install()}.to raise_error "songs.yml is not valid"
52
+ expect(File.directory? './bowie_songs').to be false
53
+ expect(File.directory? './bowie_songs/bowie-test').to be false
54
+ expect(File.exist? './songs.yml').to be true
55
+ expect(Bowie::SongUtils.valid_songs_file? './songs.yml').to be false
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,81 @@
1
+ describe "Bowie::SongUtils" do
2
+ it ".parse_song_name" do
3
+ expect {Bowie::SongUtils.parse_song_name 'bowie-test#0.0.1'}.to_not raise_error
4
+ expect(Bowie::SongUtils.parse_song_name 'bowie-test#0.0.1').to match "bowie-test"
5
+ end
6
+
7
+ it ".parse_song_version" do
8
+ expect {Bowie::SongUtils.parse_song_version 'bowie-test#0.0.1'}.to_not raise_error
9
+ expect(Bowie::SongUtils.parse_song_version 'bowie-test#0.0.1').to match "0.0.1"
10
+ end
11
+
12
+ it ".valid_song?" do
13
+ expect(Bowie::SongUtils.valid_song? 'bowie-test').to be true
14
+ expect(Bowie::SongUtils.valid_song? 'bowie-test#0.0.1').to be true
15
+ expect(Bowie::SongUtils.valid_song? '-foo-bar').to be false
16
+ expect(Bowie::SongUtils.valid_song? 'foo-bar-').to be false
17
+ expect(Bowie::SongUtils.valid_song? 'foo-bar-#0.0.1').to be false
18
+ expect(Bowie::SongUtils.valid_song? 'foo-bar#0.1').to be false
19
+ expect(Bowie::SongUtils.valid_song? 'foo-bar#0.1.2.3').to be false
20
+ end
21
+
22
+ context "when lyrics.yml is valid" do
23
+ before(:each) do
24
+ File.open("./lyrics.yml", "w"){|f| YAML.dump(Hash.new, f)}
25
+ end
26
+ after(:each) do
27
+ FileUtils.rm_rf('./lyrics.yml')
28
+ end
29
+
30
+ it ".valid_lyrics_file?" do
31
+ expect {Bowie::SongUtils.valid_lyrics_file? './lyrics.yml'}.to_not raise_error
32
+ expect(Bowie::SongUtils.valid_lyrics_file? './lyrics.yml').to be true
33
+ end
34
+ end
35
+
36
+ context "when lyrics.yml is not valid" do
37
+ before(:each) do
38
+ File.open("./lyrics.yml", "w"){|f| YAML.dump(Array.new, f)}
39
+ end
40
+ after(:each) do
41
+ FileUtils.rm_rf('./lyrics.yml')
42
+ end
43
+
44
+ it ".valid_lyrics_file?" do
45
+ expect {Bowie::SongUtils.valid_lyrics_file? './lyrics.yml'}.to_not raise_error
46
+ expect(Bowie::SongUtils.valid_lyrics_file? './lyrics.yml').to be false
47
+ end
48
+ end
49
+
50
+ context "when songs.yml is valid" do
51
+ before(:each) do
52
+ File.open("./songs.yml", "w"){|f| YAML.dump(["bowie-test", "foo", "bar"], f)}
53
+ end
54
+ after(:each) do
55
+ FileUtils.rm_rf('./songs.yml')
56
+ end
57
+
58
+ it ".valid_songs_file?" do
59
+ expect {Bowie::SongUtils.valid_songs_file? './songs.yml'}.to_not raise_error
60
+ expect(Bowie::SongUtils.valid_songs_file? './songs.yml').to be true
61
+ end
62
+ end
63
+
64
+ context "when songs.yml is not valid" do
65
+ before(:each) do
66
+ h = Hash.new
67
+ h["bowie-test"] = ".0.1"
68
+ h["susy"] = "0.0.1"
69
+ File.open("./songs.yml", "w"){|f| YAML.dump(h, f)}
70
+ end
71
+ after(:each) do
72
+ FileUtils.rm_rf('./songs.yml')
73
+ end
74
+
75
+ it ".valid_songs_file?" do
76
+ expect {Bowie::SongUtils.valid_songs_file? './songs.yml'}.to_not raise_error
77
+ expect(Bowie::SongUtils.valid_songs_file? './songs.yml').to be false
78
+ end
79
+ end
80
+
81
+ end
@@ -3,9 +3,8 @@ require './lib/bowie'
3
3
  require './spec/spec_helper.rb'
4
4
 
5
5
  describe "Bowie" do
6
- it "executes actions" do
7
- Dir.glob('./spec/actions/*') do |spec|
8
- require spec
9
- end
6
+ require './spec/bowie/song_utils_spec'
7
+ Dir.glob('./spec/bowie/actions/*') do |spec|
8
+ require spec
10
9
  end
11
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bowie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.8
4
+ version: 0.3.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrea Moretti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-17 00:00:00.000000000 Z
11
+ date: 2013-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -108,12 +108,13 @@ files:
108
108
  - lib/bowie/utils.rb
109
109
  - lib/bowie/version.rb
110
110
  - lib/semver/semver.rb
111
- - spec/actions/install_spec.rb
112
- - spec/actions/list_spec.rb
113
- - spec/actions/prune_spec.rb
114
- - spec/actions/search_spec.rb
115
- - spec/actions/uninstall_spec.rb
116
- - spec/actions/update_spec.rb
111
+ - spec/bowie/actions/install_spec.rb
112
+ - spec/bowie/actions/list_spec.rb
113
+ - spec/bowie/actions/prune_spec.rb
114
+ - spec/bowie/actions/search_spec.rb
115
+ - spec/bowie/actions/uninstall_spec.rb
116
+ - spec/bowie/actions/update_spec.rb
117
+ - spec/bowie/song_utils_spec.rb
117
118
  - spec/bowie_spec.rb
118
119
  - spec/spec_helper.rb
119
120
  homepage: http://axyz.github.io/bowie/
@@ -141,11 +142,12 @@ signing_key:
141
142
  specification_version: 4
142
143
  summary: The White Duke rules them all
143
144
  test_files:
144
- - spec/actions/install_spec.rb
145
- - spec/actions/list_spec.rb
146
- - spec/actions/prune_spec.rb
147
- - spec/actions/search_spec.rb
148
- - spec/actions/uninstall_spec.rb
149
- - spec/actions/update_spec.rb
145
+ - spec/bowie/actions/install_spec.rb
146
+ - spec/bowie/actions/list_spec.rb
147
+ - spec/bowie/actions/prune_spec.rb
148
+ - spec/bowie/actions/search_spec.rb
149
+ - spec/bowie/actions/uninstall_spec.rb
150
+ - spec/bowie/actions/update_spec.rb
151
+ - spec/bowie/song_utils_spec.rb
150
152
  - spec/bowie_spec.rb
151
153
  - spec/spec_helper.rb
@@ -1,10 +0,0 @@
1
- describe "Bowie::Actions" do
2
- it ".install [song]" do
3
- expect {Bowie::Actions.install('bowie-test')}.to_not raise_error
4
- expect(File.directory? './bowie_songs').to be true
5
- expect(File.directory? './bowie_songs/bowie-test').to be true
6
- expect(File.exist? './songs.yml').to be true
7
- expect(Bowie::SongUtils.get_local_songs.include? 'bowie-test').to be true
8
- expect(Bowie::SongUtils.get_local_songs.length).to be 1
9
- end
10
- end