emacs_org_protocol_server 0.1.0 → 0.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 +4 -4
- data/README.md +17 -20
- data/emacs_org_protocol_server.gemspec +1 -0
- data/exe/emacs_org_protocol_server +0 -0
- data/lib/emacs_org_protocol_server/version.rb +1 -1
- data/lib/emacs_org_protocol_server.rb +34 -3
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2330fe9ed02f5f65068e804fbb1cce0f9f36ab41
|
4
|
+
data.tar.gz: faf5c3997e5a1263ac1baad1cf972427e477b4af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4728aa51f40c332e9ad4428d4c6de0f2a35c7e9a2e7f3ff71a24699770b4e4d741780470d80337afd7ff80ac80c8272579efacad56960e4f3b4071525606c16f
|
7
|
+
data.tar.gz: 0ffcf8f23e782b017d7f363050502a84c0e44c845d3b9269afa76e67f6fec367f721ae3752387f24b2cd929d31e2272ad063b338b288c166824a57e0ff32a8d0
|
data/README.md
CHANGED
@@ -24,31 +24,28 @@ Start it up:
|
|
24
24
|
This will run the server on port 4567, and call
|
25
25
|
`/usr/local/bin/emacsclient` to operate.
|
26
26
|
|
27
|
-
##
|
27
|
+
## Server Configuration
|
28
28
|
|
29
|
-
The
|
30
|
-
application:
|
29
|
+
The server configuration is contained in the file `$HOME/.config/emacs_org_protocol_server.yml`, a standard YAML key-value pair file.
|
31
30
|
|
32
|
-
|
33
|
-
|
34
|
-
Options are:
|
35
|
-
|
36
|
-
-h # help
|
37
|
-
-p # set the port (default is 4567)
|
38
|
-
-o # set the host (default is 0.0.0.0)
|
39
|
-
-e # set the environment (default is development)
|
40
|
-
-s # specify rack server/handler (default is thin)
|
41
|
-
-x # turn on the mutex lock (default is off)
|
42
|
-
|
43
|
-
In addition, you may set what the path to the `emacsclient`
|
44
|
-
application is by setting the environment variable `EMACSCLIENT`. For
|
45
|
-
example:
|
31
|
+
Example (defaults):
|
46
32
|
|
33
|
+
``` yaml
|
34
|
+
server: [thin, mongrel, webrick]
|
35
|
+
port: 4567
|
36
|
+
bind: 0.0.0.0
|
37
|
+
emacsclient: /usr/local/bin/emacsclient
|
38
|
+
```
|
47
39
|
|
48
|
-
|
40
|
+
You can also specify these via the environment, which will take precedence over the configuration file and the defaults:
|
49
41
|
|
50
|
-
|
51
|
-
|
42
|
+
``` bash
|
43
|
+
EMACS_ORG_PROTOCOL_CONFIG=./my_config.yml
|
44
|
+
EMACS_ORG_PROTOCOL_BIND=127.0.0.1
|
45
|
+
EMACS_ORG_PROTOCOL_PORT=9998
|
46
|
+
EMACS_ORT_PROTOCOL_SERVER=thin
|
47
|
+
EMACSCLIENT=/Application/Emacs.app/Content/MacOS/bin/emacsclient
|
48
|
+
```
|
52
49
|
|
53
50
|
## Browser Configuration
|
54
51
|
|
File without changes
|
@@ -1,12 +1,43 @@
|
|
1
1
|
require "emacs_org_protocol_server/version"
|
2
2
|
require 'sinatra/base'
|
3
3
|
require 'uri'
|
4
|
+
require 'yaml'
|
5
|
+
require 'erb'
|
4
6
|
|
5
7
|
module EmacsOrgProtocolServer
|
6
|
-
|
8
|
+
|
9
|
+
class Settings
|
10
|
+
attr_accessor :emacsclient, :server, :port, :bind, :config_file, :settings
|
11
|
+
def initialize(server: '0.0.0.0', port: 4567, bind: '0.0.0.0', config_file: nil)
|
12
|
+
self.config_file = config_file || ENV['EMACS_ORG_PROTOCOL_CONFIG'] || File.join(ENV['HOME'], '.config', 'emacs_org_protocol_server.yml')
|
13
|
+
$stderr.puts "config_file: #{self.config_file.inspect}"
|
14
|
+
|
15
|
+
self.settings = {}
|
16
|
+
if File.exist?(self.config_file)
|
17
|
+
self.settings = YAML.load(
|
18
|
+
ERB.new(
|
19
|
+
File.read(self.config_file)
|
20
|
+
).result
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
24
|
+
self.server = ENV['EMACS_ORG_PROTOCOL_SERVER'] || settings["server"] || %w[thin mongrel webrick]
|
25
|
+
self.port = ENV['EMACS_ORG_PROTOCOL_PORT'] || settings["port"] || '4567'
|
26
|
+
self.bind = ENV['EMACS_ORG_PROTOCOL_BIND'] || settings["bind"] || '0.0.0.0'
|
27
|
+
self.emacsclient = ENV['EMACSCLIENT'] || "/usr/local/bin/emacsclient"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
|
7
32
|
|
8
33
|
class OPServ < Sinatra::Application
|
9
34
|
|
35
|
+
settings = Settings.new
|
36
|
+
set :server , settings.server
|
37
|
+
set :port , settings.port
|
38
|
+
set :bind , settings.bind
|
39
|
+
enable :logging
|
40
|
+
|
10
41
|
helpers do
|
11
42
|
def esc(s)
|
12
43
|
URI.escape(s, %r{[^[:alnum:]]})
|
@@ -29,9 +60,9 @@ module EmacsOrgProtocolServer
|
|
29
60
|
s=params['s'].to_s
|
30
61
|
|
31
62
|
emacsclient_target = "org-protocol://#{p}:#{template}//#{esc(l)}/#{esc(t)}/#{esc(s)}"
|
32
|
-
cmd = "#{
|
63
|
+
cmd = "#{settings.emacsclient} -n '#{emacsclient_target}'"
|
33
64
|
system(cmd)
|
34
|
-
puts "ran #{cmd}"
|
65
|
+
$stderr.puts "ran #{cmd}"
|
35
66
|
redirect to(params['l'])
|
36
67
|
end
|
37
68
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emacs_org_protocol_server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tamara Temple
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sinatra-contrib
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description: Simple Sinatra server to call org-protocol with emacsclient
|
70
84
|
email:
|
71
85
|
- tamouse@gmail.com
|