bananajour 2.1.9 → 2.2
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.
- data/Readme.md +21 -4
- data/lib/bananajour/bonjour/bananajour_browser.rb +2 -2
- data/lib/bananajour/bonjour/browser.rb +13 -5
- data/lib/bananajour/bonjour/repository_browser.rb +2 -2
- data/lib/bananajour/gem_dependencies.rb +3 -3
- data/lib/bananajour/repository.rb +1 -1
- data/lib/bananajour/version.rb +1 -1
- data/lib/bananajour.rb +8 -3
- metadata +5 -5
data/Readme.md
CHANGED
@@ -5,7 +5,6 @@ Local git repository hosting with a sexy web interface and Bonjour discovery. It
|
|
5
5
|
|
6
6
|
Unlike Gitjour, the repositories you're serving are not your working git repositories, they're served from `~/.bananajour/repositories`. You can push to your bananajour repositories from your working copies just like you do with github.
|
7
7
|
|
8
|
-
Bananajour is the baby of [Tim Lucas](http://toolmantim.com/) with much railscamp hackage by [Nathan de Vries](http://github.com/atnan), [Lachlan Hardy](http://github.com/lachlanhardy), [Josh Bassett](http://github.com/nullobject), [Myles Byrne](http://github.com/quackingduck), [Ben Hoskings](http://github.com/benhoskings), [Brett Goulder](http://github.com/brettgo1), [Tony Issakov](https://github.com/tissak), and [Mark Bennett](http://github.com/MarkBennett). The rad logo was by [Carla Hackett](http://carlahackettdesign.com/). Other various fixes and contributions by [Travis Swicegood](http://github.com/tswicegood) and [Nate Haas](http://github.com/natehaas).
|
9
8
|
|
10
9
|

|
11
10
|
|
@@ -14,11 +13,11 @@ Installation and usage
|
|
14
13
|
|
15
14
|
You'll need at least [git version 1.6](http://git-scm.com/). Run `git --version` if you're unsure.
|
16
15
|
|
17
|
-
Install it from
|
16
|
+
Install it from [gemcutter](http://gemcutter.org/) via gems:
|
18
17
|
|
19
|
-
gem install
|
18
|
+
gem install bananajour
|
20
19
|
|
21
|
-
(you might need to do a `gem sources -a http://
|
20
|
+
(you might need to do a `gem sources -a http://gemcutter.org` beforehand!)
|
22
21
|
|
23
22
|
Start it up:
|
24
23
|
|
@@ -49,6 +48,8 @@ To install the dnssd gem on linux you'll need [avahi](http://avahi.org/). For Ub
|
|
49
48
|
|
50
49
|
sudo apt-get install libavahi-compat-libdnssd-dev
|
51
50
|
|
51
|
+
On Linux, if you kill bananajour with kill -9 it doesn't get a chance to unregister the Bonjour services, and when it is restarted it will die with DNSSD::AlreadyRegisteredError. Although not ideal, you can work around this my restarting avahi-daemon first.
|
52
|
+
|
52
53
|
Using with Ginatra
|
53
54
|
------------------
|
54
55
|
|
@@ -76,6 +77,22 @@ If you then want to run your working copy as your public bananajour rebuild and
|
|
76
77
|
|
77
78
|
sudo rake gem:install
|
78
79
|
|
80
|
+
Contributors
|
81
|
+
------------
|
82
|
+
|
83
|
+
* [Carla Hackett](http://carlahackettdesign.com/) (logo)
|
84
|
+
* [Nathan de Vries](http://github.com/atnan)
|
85
|
+
* [Lachlan Hardy](http://github.com/lachlanhardy)
|
86
|
+
* [Josh Bassett](http://github.com/nullobject)
|
87
|
+
* [Myles Byrne](http://github.com/quackingduck)
|
88
|
+
* [Ben Hoskings](http://github.com/benhoskings)
|
89
|
+
* [Brett Goulder](http://github.com/brettgo1)
|
90
|
+
* [Tony Issakov](https://github.com/tissak)
|
91
|
+
* [Mark Bennett](http://github.com/MarkBennett)
|
92
|
+
* [Travis Swicegood](http://github.com/tswicegood)
|
93
|
+
* [Nate Haas](http://github.com/natehaas)
|
94
|
+
* [James Sadler](http://github.com/freshtonic)
|
95
|
+
|
79
96
|
License
|
80
97
|
-------
|
81
98
|
|
@@ -8,8 +8,8 @@ Thread.abort_on_exception = true
|
|
8
8
|
# Generic bonjour browser
|
9
9
|
#
|
10
10
|
# Example use:
|
11
|
-
#
|
12
|
-
# browser = BonjourBrowser.new("
|
11
|
+
#
|
12
|
+
# browser = BonjourBrowser.new("_git._tcp,_bananajour")
|
13
13
|
# loop do
|
14
14
|
# sleep(1)
|
15
15
|
# pp browser.replies.map {|r| r.name}
|
@@ -17,19 +17,23 @@ Thread.abort_on_exception = true
|
|
17
17
|
#
|
18
18
|
# Probably gem-worthy
|
19
19
|
class Bananajour::Bonjour::Browser
|
20
|
-
attr_reader :replies
|
21
20
|
def initialize(service)
|
22
21
|
@service = service
|
23
22
|
@mutex = Mutex.new
|
24
23
|
@replies = []
|
25
24
|
watch!
|
26
25
|
end
|
26
|
+
def replies
|
27
|
+
@mutex.synchronize do
|
28
|
+
@replies.clone
|
29
|
+
end
|
30
|
+
end
|
27
31
|
private
|
28
32
|
def watch!
|
29
33
|
DNSSD.browse(@service) do |br|
|
30
34
|
begin
|
31
35
|
Timeout.timeout(5) do
|
32
|
-
DNSSD.resolve(br
|
36
|
+
DNSSD.resolve(br) do |rr|
|
33
37
|
begin
|
34
38
|
@mutex.synchronize do
|
35
39
|
rr_exists = Proc.new {|existing_rr| existing_rr.target == rr.target && existing_rr.fullname == rr.fullname}
|
@@ -39,11 +43,15 @@ class Bananajour::Bonjour::Browser
|
|
39
43
|
@replies.delete_if(&rr_exists)
|
40
44
|
end
|
41
45
|
end
|
46
|
+
rescue DNSSD::UnknownError
|
47
|
+
$stderr.puts "unknown error occurred in dnssd: #{$!.message}"
|
42
48
|
ensure
|
43
|
-
rr.service.stop
|
49
|
+
rr.service.stop unless rr.service.stopped?
|
44
50
|
end
|
45
51
|
end
|
46
52
|
end
|
53
|
+
rescue DNSSD::UnknownError
|
54
|
+
$stderr.puts "unknown error occurred in dnssd: #{$!.message}"
|
47
55
|
rescue Timeout::Error
|
48
56
|
# Do nothing
|
49
57
|
end
|
@@ -4,10 +4,10 @@ module Bananajour
|
|
4
4
|
DEPENDENCIES = [
|
5
5
|
%w( sinatra 0.9.2 ),
|
6
6
|
%w( json 1.1.7 ),
|
7
|
-
%w(
|
7
|
+
%w( fancypath 0.5.13 ),
|
8
8
|
%w( rainbow 1.0.1 ),
|
9
|
-
%w(
|
10
|
-
%w( dnssd
|
9
|
+
%w( grit 1.1.1 ),
|
10
|
+
%w( dnssd 1.3.1 ),
|
11
11
|
%w( rack 1.0.0 ),
|
12
12
|
%w( thin 1.0.0 ),
|
13
13
|
%w( haml 2.0.9 ),
|
data/lib/bananajour/version.rb
CHANGED
data/lib/bananajour.rb
CHANGED
@@ -10,7 +10,7 @@ require 'bananajour/gem_dependencies'
|
|
10
10
|
|
11
11
|
Bananajour.require_gem 'rainbow'
|
12
12
|
Bananajour.require_gem 'dnssd'
|
13
|
-
Bananajour.require_gem '
|
13
|
+
Bananajour.require_gem 'fancypath'
|
14
14
|
|
15
15
|
require 'bananajour/repository'
|
16
16
|
require 'bananajour/grit_extensions'
|
@@ -65,7 +65,12 @@ module Bananajour
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def host_name
|
68
|
-
Socket.gethostname
|
68
|
+
hn = Socket.gethostname
|
69
|
+
if hn =~ /\.local$/
|
70
|
+
hn
|
71
|
+
else
|
72
|
+
hn + ".local"
|
73
|
+
end
|
69
74
|
end
|
70
75
|
|
71
76
|
def git_uri
|
@@ -96,4 +101,4 @@ module Bananajour
|
|
96
101
|
|
97
102
|
end
|
98
103
|
|
99
|
-
end
|
104
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bananajour
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: "2.2"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Lucas
|
@@ -33,14 +33,14 @@ dependencies:
|
|
33
33
|
version: 1.1.7
|
34
34
|
version:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
36
|
+
name: fancypath
|
37
37
|
type: :runtime
|
38
38
|
version_requirement:
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
41
|
- - "="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.5.
|
43
|
+
version: 0.5.13
|
44
44
|
version:
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: rainbow
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
version: 1.0.1
|
54
54
|
version:
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: grit
|
57
57
|
type: :runtime
|
58
58
|
version_requirement:
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -70,7 +70,7 @@ dependencies:
|
|
70
70
|
requirements:
|
71
71
|
- - "="
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
73
|
+
version: 1.3.1
|
74
74
|
version:
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: rack
|