kagu 3.0.7 → 3.2.0

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
  SHA256:
3
- metadata.gz: '08a61e583b7b18fcfb6861e475872806f51ca5e16fee613a9d6decf4a4654be5'
4
- data.tar.gz: 1cd22e2339674a7f7583fde9542ed495dbce8b1cd0f9643a2f5fac9fdc202501
3
+ metadata.gz: e1c1858a37f00f8823ce4ebacf2b9bb96837da05c1e7be296fcbcd1461afe03f
4
+ data.tar.gz: f8d1d56f7e6e90a3afa12aeabf4f2804dda4d7e3bd4c0be9cfcb1b282a4078d3
5
5
  SHA512:
6
- metadata.gz: e62e833e1a169c9032edeb75d20fb5d19ffbafc950e9ffe92dedf7817425c123f451ab9b15cc2852ceb899b119a72816a52695697e664336c778294cc9f873e3
7
- data.tar.gz: c61a3dca90a31a308788a0aaa67b06c577ec97c039801cf9c4c1df8bd182d3700f662d12fbc86f37d97a737234b9b60854e73b623163e9421cf143084e1f0636
6
+ metadata.gz: 88e72ddf7e6960712558490d614f9e82aa78c6908f5300ac8d29ff587a2e40ee59a471ed9538b03155e0b130bfb15211b3b2baf6ce45e34e338c0f8a3cc1e909
7
+ data.tar.gz: 9d0fe80ce5dc1a8a857409f60425ff349a555a374893ba0c26cd5fea177c0774f4acb21cd0c920d5d0cf28701edbf024a3351e865a3ef80bb9a5129234682305
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.0.7
1
+ 3.2.0
data/kagu.gemspec CHANGED
@@ -16,9 +16,10 @@ Gem::Specification.new do |s|
16
16
  s.required_ruby_version = '>= 2.0.0'
17
17
 
18
18
  s.add_dependency 'activesupport', '>= 4.1.0', '< 7.0.0'
19
+ s.add_dependency 'addressable', '>= 2.7.0', '< 3.0.0'
19
20
  s.add_dependency 'applescript', '>= 1.0', '< 2.0'
20
21
 
21
22
  s.add_development_dependency 'byebug', '>= 3.2.0', '< 12.0.0'
22
23
  s.add_development_dependency 'rake', '>= 10.3.0', '< 14.0.0'
23
- s.add_development_dependency 'rspec', '>= 3.1.0', '< 3.10.0'
24
+ s.add_development_dependency 'rspec', '>= 3.1.0', '< 3.11.0'
24
25
  end
data/lib/kagu.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'active_support'
2
2
  require 'active_support/core_ext'
3
+ require 'addressable/uri'
3
4
  require 'applescript'
4
5
  require 'byebug' if ENV['DEBUGGER']
5
6
  require 'logger'
@@ -7,7 +7,7 @@ module Kagu
7
7
  send("#{name}=", value) if respond_to?("#{name}=", true)
8
8
  end
9
9
  self.class.const_get(:MANDATORY_ATTRIBUTES).each do |attribute|
10
- raise Error.new("#{self.class}##{attribute} is mandatory") if send(attribute).nil?
10
+ raise Error.new("#{self.class}##{attribute} is mandatory for #{inspect}") if send(attribute).nil?
11
11
  end
12
12
  end
13
13
 
@@ -28,11 +28,11 @@ module Kagu
28
28
  print("BEGIN_PLAYLIST")
29
29
  print(playlist.name)
30
30
  for track in playlist.items.filter({ $0.mediaKind == ITLibMediaItemMediaKind.kindSong }) {
31
- print(String(format: "%02X", track.persistentID.intValue))
31
+ print(String(track.persistentID.uint64Value, radix: 16).uppercased())
32
32
  }
33
33
  print("END_PLAYLIST")
34
34
  }
35
- }) do |line|
35
+ }).each do |line|
36
36
  if line == 'BEGIN_PLAYLIST'
37
37
  playlist_name = nil
38
38
  playlist_tracks = []
@@ -44,6 +44,7 @@ module Kagu
44
44
  playlist_tracks << tracks[line]
45
45
  end
46
46
  end
47
+ nil
47
48
  end
48
49
 
49
50
  end
@@ -2,7 +2,7 @@ module Kagu
2
2
 
3
3
  module SwiftHelper
4
4
 
5
- def self.execute(code, &block)
5
+ def self.execute(code)
6
6
  tempfile = Tempfile.new
7
7
  begin
8
8
  tempfile << code
@@ -12,12 +12,7 @@ module Kagu
12
12
  begin
13
13
  stdout, stderr, result = Open3.capture3("swift #{tempfile.path.inspect}")
14
14
  raise(stderr.presence || "Swift command returned with code: #{result.exitstatus}") unless result.success?
15
- if block_given?
16
- stdout.lines.each { |line| yield(line.chomp) }
17
- nil
18
- else
19
- stdout
20
- end
15
+ stdout.lines.map(&:chomp)
21
16
  ensure
22
17
  tempfile.unlink
23
18
  end
data/lib/kagu/track.rb CHANGED
@@ -5,7 +5,7 @@ module Kagu
5
5
  include AttributesInitializer
6
6
  include Comparable
7
7
 
8
- MANDATORY_ATTRIBUTES = %w(added_at id length path)
8
+ MANDATORY_ATTRIBUTES = %w(added_at id length)
9
9
 
10
10
  attr_reader :added_at, :album, :artist, :bpm, :genre, :id, :length, :path, :title, :year
11
11
 
@@ -22,19 +22,14 @@ module Kagu
22
22
  super || self == other
23
23
  end
24
24
 
25
- def exists?
26
- path.file?
25
+ def exists_on_disk?
26
+ path.present? && path.file?
27
27
  end
28
28
 
29
29
  def hash
30
30
  [artist, title].hash
31
31
  end
32
32
 
33
- def relative_path(directory)
34
- directory = directory.to_s
35
- directory.present? ? Pathname.new(path.to_s.gsub(/\A#{Regexp.escape(directory)}\//, '')) : path
36
- end
37
-
38
33
  def to_s
39
34
  "#{artist} - #{title}"
40
35
  end
@@ -77,11 +72,9 @@ module Kagu
77
72
 
78
73
  def path=(value)
79
74
  value = value.to_s.presence
80
- value = URI.unescape(URI.parse(value).path) if value.is_a?(String) && value.starts_with?('file://')
81
- value = value.encode('UTF-8', 'UTF-8-MAC') if Kagu::IS_MAC_OS
82
- @path = Pathname.new(value)
83
- raise Error.new("No such file: #{path.to_s.inspect}") if path.exist? && !exists?
84
- Kagu.logger.error('Kagu') { "No such track: #{path.inspect}" } unless exists?
75
+ value = Addressable::URI.unescape(Addressable::URI.parse(value).path).presence if value.is_a?(String) && value.starts_with?('file://')
76
+ value = value.encode('UTF-8', 'UTF-8-MAC') if value.present? && Kagu::IS_MAC_OS
77
+ @path = value.present? ? Pathname.new(value) : nil
85
78
  end
86
79
 
87
80
  def title=(value)
data/lib/kagu/tracks.rb CHANGED
@@ -35,7 +35,7 @@ module Kagu
35
35
  printObjectProperty(name: "year", value: track.year)
36
36
  print("END_TRACK")
37
37
  }
38
- }) do |line|
38
+ }).each do |line|
39
39
  if line == 'BEGIN_TRACK'
40
40
  attributes = {}
41
41
  elsif line == 'END_TRACK'
@@ -44,6 +44,7 @@ module Kagu
44
44
  attributes[match[1]] = JSON.parse(match[2])
45
45
  end
46
46
  end
47
+ nil
47
48
  end
48
49
 
49
50
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kagu
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.7
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexis Toulotte
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-13 00:00:00.000000000 Z
11
+ date: 2021-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -30,6 +30,26 @@ dependencies:
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 7.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: addressable
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 2.7.0
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: 3.0.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 2.7.0
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: 3.0.0
33
53
  - !ruby/object:Gem::Dependency
34
54
  name: applescript
35
55
  requirement: !ruby/object:Gem::Requirement
@@ -99,7 +119,7 @@ dependencies:
99
119
  version: 3.1.0
100
120
  - - "<"
101
121
  - !ruby/object:Gem::Version
102
- version: 3.10.0
122
+ version: 3.11.0
103
123
  type: :development
104
124
  prerelease: false
105
125
  version_requirements: !ruby/object:Gem::Requirement
@@ -109,7 +129,7 @@ dependencies:
109
129
  version: 3.1.0
110
130
  - - "<"
111
131
  - !ruby/object:Gem::Version
112
- version: 3.10.0
132
+ version: 3.11.0
113
133
  description: API to manage macOS Music tracks and playlists
114
134
  email: al@alweb.org
115
135
  executables: []
@@ -134,7 +154,7 @@ homepage: https://github.com/alexistoulotte/kagu
134
154
  licenses:
135
155
  - MIT
136
156
  metadata: {}
137
- post_install_message:
157
+ post_install_message:
138
158
  rdoc_options: []
139
159
  require_paths:
140
160
  - lib
@@ -149,8 +169,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
169
  - !ruby/object:Gem::Version
150
170
  version: '0'
151
171
  requirements: []
152
- rubygems_version: 3.0.3
153
- signing_key:
172
+ rubygems_version: 3.2.15
173
+ signing_key:
154
174
  specification_version: 4
155
175
  summary: API for macOS Music
156
176
  test_files: []