remme 0.1.6 → 0.1.7
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/bin/remme +1 -1
- data/lib/remme/demonizer.rb +6 -0
- data/lib/remme/notifier/adapters/say.rb +11 -0
- data/lib/remme/notifier/base.rb +19 -0
- data/lib/remme/notifier.rb +7 -0
- data/lib/remme/performer/base.rb +7 -0
- data/lib/remme/player/adapters/spotify.rb +33 -0
- data/lib/remme/player/base.rb +28 -0
- data/lib/remme/scheduler.rb +51 -0
- data/lib/remme/version.rb +3 -0
- data/lib/{reminder.rb → remme.rb} +7 -8
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7815d109ff7a76dd1be30eff506220bcb3259e9b
|
4
|
+
data.tar.gz: 88c8a43900a24b692b84b0964f5da26a2b5649dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3571d648a67c0d443541ea44ec567d6dc4a04a7323b02238893a58f69e979d81cc98b79d01658a95912e3f5bdec8ac560b2385768fcee97cf9f19e21b964db32
|
7
|
+
data.tar.gz: ecb1674f504785d8847e7746673cc77e139e4d26727c60e6aeef4702c775497bd2ed6a78cce51e790e364fb633f183039cead0dfefa739c9e3fdfd0dce97a7fd
|
data/bin/remme
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
module Player
|
2
|
+
module Adapters
|
3
|
+
module Spotify
|
4
|
+
class << self
|
5
|
+
def play
|
6
|
+
`osascript -e 'tell application "Spotify" to play'`
|
7
|
+
end
|
8
|
+
|
9
|
+
def pause
|
10
|
+
`osascript -e 'tell application "Spotify" to pause'`
|
11
|
+
end
|
12
|
+
|
13
|
+
def being_played?
|
14
|
+
script = %q{
|
15
|
+
echo $(osascript <<EOF
|
16
|
+
set state to missing value
|
17
|
+
|
18
|
+
if application "Spotify" is running then
|
19
|
+
tell application "Spotify"
|
20
|
+
set state to (player state as text)
|
21
|
+
end tell
|
22
|
+
end if
|
23
|
+
|
24
|
+
return state is equal to "playing"
|
25
|
+
EOF)
|
26
|
+
}
|
27
|
+
|
28
|
+
`#{script}`.strip == 'true'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Player
|
2
|
+
class Base
|
3
|
+
class << self
|
4
|
+
def init
|
5
|
+
self.tap do
|
6
|
+
@adapter = adapter
|
7
|
+
@was_playing = adapter.being_played?
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def pause
|
12
|
+
return if !@was_playing
|
13
|
+
@adapter.pause
|
14
|
+
end
|
15
|
+
|
16
|
+
def play
|
17
|
+
return if !@was_playing
|
18
|
+
@adapter.play
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def adapter
|
24
|
+
Adapters::Spotify
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'reminder/performer/base'
|
2
|
+
|
3
|
+
class Scheduler < Performer::Base
|
4
|
+
class << self
|
5
|
+
attr_accessor :completed
|
6
|
+
alias :completed? :completed
|
7
|
+
|
8
|
+
@@class_instance_fields = %i(
|
9
|
+
after_hook before_hook
|
10
|
+
message notifier
|
11
|
+
)
|
12
|
+
|
13
|
+
def run(options)
|
14
|
+
build_class_instance_fields(options)
|
15
|
+
perform_in(options.delete(:timeout))
|
16
|
+
end
|
17
|
+
|
18
|
+
@@class_instance_fields.each do |field|
|
19
|
+
define_method(field) { instance_variable_get("@#{field}") }
|
20
|
+
end
|
21
|
+
|
22
|
+
def build_class_instance_fields(options)
|
23
|
+
@@class_instance_fields.each do |field_name|
|
24
|
+
instance_variable_set("@#{field_name}", options.delete(field_name))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def perform
|
30
|
+
complete_after { notify }
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def notify
|
36
|
+
with_callbacks do
|
37
|
+
self.class.notifier.run(self.class.message)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def complete_after
|
42
|
+
yield
|
43
|
+
self.class.completed = true
|
44
|
+
end
|
45
|
+
|
46
|
+
def with_callbacks
|
47
|
+
self.class.before_hook.call
|
48
|
+
yield
|
49
|
+
self.class.after_hook.call
|
50
|
+
end
|
51
|
+
end
|
@@ -1,14 +1,13 @@
|
|
1
|
-
require "
|
2
|
-
require "
|
3
|
-
require "reminder/demonizer"
|
1
|
+
require "remme/scheduler"
|
2
|
+
require "remme/demonizer"
|
4
3
|
|
5
|
-
require "
|
6
|
-
require "
|
4
|
+
require "remme/player/base"
|
5
|
+
require "remme/player/adapters/spotify"
|
7
6
|
|
8
|
-
require "
|
9
|
-
require "
|
7
|
+
require "remme/notifier/base"
|
8
|
+
require "remme/notifier/adapters/say"
|
10
9
|
|
11
|
-
module
|
10
|
+
module Remme
|
12
11
|
class Runner
|
13
12
|
include Demonizer
|
14
13
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luis Vasconcellos
|
@@ -75,7 +75,16 @@ extensions: []
|
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
77
|
- bin/remme
|
78
|
-
- lib/
|
78
|
+
- lib/remme.rb
|
79
|
+
- lib/remme/demonizer.rb
|
80
|
+
- lib/remme/notifier.rb
|
81
|
+
- lib/remme/notifier/adapters/say.rb
|
82
|
+
- lib/remme/notifier/base.rb
|
83
|
+
- lib/remme/performer/base.rb
|
84
|
+
- lib/remme/player/adapters/spotify.rb
|
85
|
+
- lib/remme/player/base.rb
|
86
|
+
- lib/remme/scheduler.rb
|
87
|
+
- lib/remme/version.rb
|
79
88
|
homepage: http://luisvasconcellos.com
|
80
89
|
licenses:
|
81
90
|
- MIT
|