prowlnotify 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/Rakefile +20 -0
  2. data/Readme.md +30 -0
  3. data/bin/prowlnotify +119 -0
  4. metadata +84 -0
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ require "rake/gempackagetask"
2
+
3
+ spec = Gem::Specification.new do |s|
4
+ s.name = "prowlnotify"
5
+ s.version = "0.2.1"
6
+ s.author = "Caius Durling"
7
+ s.email = "dev@caius.name"
8
+ s.homepage = "http://github.com/caius/prowlnotify"
9
+ s.platform = Gem::Platform::RUBY
10
+ s.summary = "Easily send prowl notifications from the command line"
11
+ s.bindir = "bin"
12
+ s.files = FileList["lib/**/*.rb", "bin/*", "[A-Z]*", "spec/**/*"].to_a
13
+ s.executables << "prowlnotify"
14
+ s.has_rdoc = false
15
+ s.add_dependency("prowl", "~> 0.1.3")
16
+ end
17
+
18
+ Rake::GemPackageTask.new(spec) do |pkg|
19
+ pkg.need_tar = true
20
+ end
data/Readme.md ADDED
@@ -0,0 +1,30 @@
1
+ # Prowlnotify
2
+
3
+ Little cli tool to let you push notifications to your phone. Modelled after `growlnotify` for growl.
4
+
5
+ ## Installation
6
+
7
+ [sudo] gem install prowlnotify
8
+
9
+ ## Usage
10
+
11
+ Usage: prowlnotify [options] MESSAGE
12
+
13
+ Message can be either a string or "-" to read from stdin
14
+
15
+ -k, --api-key [KEY] Prowl API Key [optional]
16
+ If this isn't specified then -f arg or ~/.prowl is read
17
+ -p, --priority [VALUE] Priority of notification. [optional]
18
+ Defaults to "Normal"
19
+ Value between -2 and 2, or a string:
20
+ -2. Very Low
21
+ -1. Moderate
22
+ 0. Normal
23
+ 1. High
24
+ 2. Emergency
25
+
26
+ -a, --application [NAME] Name of application sending notification. [optional]
27
+ Defaults to "prowlnotify"
28
+ -s, --subject [STRING] Subject line. [optional]
29
+ -r, --provider-key [KEY] Provider API key. [optional]
30
+ -f, --file [FILE] File to read API key from. Defaults to ~/.prowl. Ignored if -a is passed.
data/bin/prowlnotify ADDED
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ #
4
+ # CHANGELOG
5
+ # * 0.2.1 More gemification
6
+ # * 0.2 Gemified
7
+ # * 0.1.5 Bugfixes, -f
8
+ # * 0.1.0 Initial Release
9
+ #
10
+
11
+ require "optparse"
12
+ # Play nicely with non-rubygemists
13
+ begin
14
+ require "prowl"
15
+ rescue LoadError
16
+ require "rubygems"
17
+ require "prowl"
18
+ end
19
+
20
+ config = {}
21
+
22
+ OptionParser.new do |opts|
23
+ opts.banner = "Usage: prowlnotify [options] MESSAGE"
24
+ opts.separator ""
25
+ opts.separator %Q{Message can be either a string or "-" to read from stdin}
26
+ opts.separator ""
27
+
28
+ opts.on("-k", "--api-key [KEY]", "Prowl API Key [optional]", "If this isn't specified then -f arg or ~/.prowl is read") do |key|
29
+ config[:api_key] = key
30
+ end
31
+
32
+ opts.on("-p", "--priority [VALUE]",
33
+ "Priority of notification. [optional]",
34
+ %Q{Defaults to "Normal"},
35
+ "Value between -2 and 2, or a string:",
36
+ "\t -2. Very Low",
37
+ "\t -1. Moderate",
38
+ "\t 0. Normal",
39
+ "\t 1. High",
40
+ "\t 2. Emergency"
41
+ ) do |priority|
42
+ strings = {"very low" => -2, "moderate" => -1, "normal" => 0, "high" => 1, "emergency" => 2}
43
+ if priority.to_i.to_s == priority.to_s
44
+ # It's an integer
45
+ config[:priority] = priority.to_i
46
+ else
47
+ # It's a string
48
+ config[:priority] = strings[priority.downcase]
49
+ end
50
+ end
51
+
52
+ opts.separator ""
53
+
54
+ opts.on("-a", "--application [NAME]", "Name of application sending notification. [optional]",
55
+ %Q{Defaults to "prowlnotify"}) do |name|
56
+ config[:application] = name
57
+ end
58
+
59
+ opts.on("-s", "--subject [STRING]", "Subject line. [optional]") do |subject|
60
+ config[:event] = subject
61
+ end
62
+
63
+ opts.on("-r", "--provider-key [KEY]", "Provider API key. [optional]") do |key|
64
+ config[:provider_key] = key
65
+ end
66
+
67
+ opts.on("-f", "--file [FILE]", "File to read API key from. Defaults to ~/.prowl. Ignored if -a is passed.") do |path|
68
+ config[:api_file] = File.expand_path(path)
69
+ end
70
+ end.parse!
71
+
72
+ # Setup some defaults for optional args
73
+ config[:priority] ||= 0
74
+ config[:application] ||= "prowlnotify"
75
+ config[:event] ||= ""
76
+
77
+ # Unless key is specified, read it from ~/.prowl if it exists
78
+ # If the key isn't set and file doesn't exist we error later
79
+ unless config[:api_key]
80
+ api_file = config[:api_file] || File.expand_path("~/.prowl")
81
+ config[:api_key] = File.open(api_file, "r").read.chomp if File.exists?(api_file)
82
+ end
83
+
84
+ # Grab the message
85
+ config[:description] = ARGV.join(" ")
86
+
87
+ # Check if we're reading stdin
88
+ if config[:description] == "-"
89
+ config[:description] = $stdin.read.chomp
90
+ end
91
+
92
+ # Check we've got what we need to send a notification
93
+ unless config.has_key?(:api_key) && !config[:api_key].empty?
94
+ puts "ERROR: Missing API key."
95
+ puts "Either pass it as an argument or put it in ~/.prowl"
96
+ exit(1)
97
+ end
98
+
99
+ unless config.has_key?(:description) && !config[:description].empty?
100
+ puts "ERROR: Missing message text."
101
+ puts %Q{Either pass it as a string, or pass "-" to read from stdin.}
102
+ exit(1)
103
+ end
104
+
105
+ puts "Sending #{config[:description].inspect}"
106
+
107
+ prowl_hash = {
108
+ :apikey => config[:api_key],
109
+ :application => config[:application],
110
+ :event => config[:event],
111
+ :description => config[:description],
112
+ :priority => config[:priority]
113
+ }
114
+
115
+ if config[:provider_key]
116
+ prowl_hash.merge!(:providerkey => config[:providerkey])
117
+ end
118
+
119
+ Prowl.add(prowl_hash)
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: prowlnotify
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 1
10
+ version: 0.2.1
11
+ platform: ruby
12
+ authors:
13
+ - Caius Durling
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-07-20 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: prowl
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 29
30
+ segments:
31
+ - 0
32
+ - 1
33
+ - 3
34
+ version: 0.1.3
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ description:
38
+ email: dev@caius.name
39
+ executables:
40
+ - prowlnotify
41
+ extensions: []
42
+
43
+ extra_rdoc_files: []
44
+
45
+ files:
46
+ - bin/prowlnotify
47
+ - Rakefile
48
+ - Readme.md
49
+ has_rdoc: true
50
+ homepage: http://github.com/caius/prowlnotify
51
+ licenses: []
52
+
53
+ post_install_message:
54
+ rdoc_options: []
55
+
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ hash: 3
64
+ segments:
65
+ - 0
66
+ version: "0"
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ requirements: []
77
+
78
+ rubyforge_project:
79
+ rubygems_version: 1.3.7
80
+ signing_key:
81
+ specification_version: 3
82
+ summary: Easily send prowl notifications from the command line
83
+ test_files: []
84
+