jump 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,139 @@
1
+ # This file is part of the jump project
2
+ #
3
+ # Copyright (C) 2010 Flavio Castelli <flavio@castelli.name>
4
+ # Copyright (C) 2010 Giuseppe Capizzi <gcapizzi@gmail.com>
5
+ #
6
+ # kaveau is free software; you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation; either version 2 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # kaveau is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with Keep; if not, write to the
18
+ # Free Software Foundation, Inc.,
19
+ # 51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA.
20
+
21
+ require "test_helper"
22
+ require 'bookmarks'
23
+ require 'fileutils'
24
+
25
+ class BookmarksTest < Test::Unit::TestCase
26
+ def setup
27
+ @test_bookmarks = { "foo" => "/tmp/foo",
28
+ "bar" => "/tmp/bar",
29
+ "complex" => "/tmp/foo/bar/complex"}
30
+ FakeFS do
31
+ File.open(Bookmarks::BOOKMARKS_PATH, 'w') do |file|
32
+ file << YAML::dump(@test_bookmarks)
33
+ end
34
+
35
+ @bookmarks = Bookmarks.new
36
+ end
37
+
38
+ end
39
+
40
+ def test_expand_path
41
+ @test_bookmarks.each do |bookmark, expected_path|
42
+ current_path = @bookmarks.expand_path bookmark
43
+ assert_equal expected_path, current_path
44
+ end
45
+
46
+ # check absolute path
47
+ assert_equal "/foo", @bookmarks.expand_path("/foo")
48
+
49
+ # check multiple / handling
50
+ assert_equal "/tmp/foo/1/2", @bookmarks.expand_path("foo/1/2")
51
+ end
52
+
53
+ def test_add
54
+ # should add a new bookmark
55
+ bookmark = "flavio_home"
56
+ path = "/home/flavio"
57
+ @bookmarks.add(path, bookmark)
58
+ assert_equal path, @bookmarks.expand_path(bookmark)
59
+
60
+ #should update a bookmark
61
+ new_path = "/tmp"
62
+ @bookmarks.add(new_path, bookmark)
63
+ assert_equal new_path, @bookmarks.expand_path(bookmark)
64
+ end
65
+
66
+ def test_to_s
67
+ output = <<EOF
68
+ +----------+----------------------+
69
+ | Bookmark | Path |
70
+ +----------+----------------------+
71
+ | bar | /tmp/bar |
72
+ | complex | /tmp/foo/bar/complex |
73
+ | foo | /tmp/foo |
74
+ +----------+----------------------+
75
+ EOF
76
+ assert_equal output, @bookmarks.to_s
77
+ end
78
+
79
+ def test_save
80
+ bookmark = "flavio_home"
81
+ path = "/home/flavio"
82
+ @bookmarks.add(path, bookmark)
83
+
84
+ expected_bookmarks = @test_bookmarks.dup
85
+ expected_bookmarks[bookmark] = path
86
+
87
+ FakeFS do
88
+ @bookmarks.save
89
+
90
+ assert File.exists?(Bookmarks::BOOKMARKS_PATH)
91
+ contents = YAML::load_file Bookmarks::BOOKMARKS_PATH
92
+ assert_equal expected_bookmarks, contents
93
+ end
94
+ end
95
+
96
+ def test_bash_completion
97
+ FakeFS do
98
+ FileUtils.rm "~/.jumprc"
99
+ bookmarks = Bookmarks.new
100
+ bookmarks.add("/home/flavio/templates", "templates")
101
+ bookmarks.add("/home/flavio/templates", "test")
102
+ bookmarks.add("/home/flavio/test/rails_app", "rails")
103
+
104
+ FileUtils.mkdir_p "/home/flavio/templates/foo/bar"
105
+ FileUtils.mkdir_p "/home/flavio/test/rails_app/log"
106
+ FileUtils.mkdir_p "/home/flavio/test/rails_app/locale"
107
+ FileUtils.mkdir_p "/home/flavio/test/rails_app/app/model"
108
+ FileUtils.touch "/home/flavio/test/rails_app/local_file"
109
+
110
+ # should handle absolute paths
111
+ assert_equal "/rails", bookmarks.bash_completion('/rails')
112
+
113
+ # should return all the bookmarks
114
+ assert_equal "rails templates test", bookmarks.bash_completion(nil)
115
+ assert_equal "rails templates test", bookmarks.bash_completion('')
116
+
117
+ # no matches => should return the same text
118
+ assert_equal "foo", bookmarks.bash_completion("foo")
119
+
120
+ # should complete the text
121
+ assert_equal "templates test", bookmarks.bash_completion("te")
122
+ assert_equal "rails", bookmarks.bash_completion("ra")
123
+
124
+ # /home/flavio/templates/bar doesn't exist => should return the same text
125
+ assert_equal "templates/bar", bookmarks.bash_completion("templates/bar")
126
+ assert_equal( "templates/bar/1/2",
127
+ bookmarks.bash_completion("templates/bar/1/2"))
128
+
129
+ # should expand the path
130
+ assert_equal "rails/ rails/locale rails/log",
131
+ bookmarks.bash_completion("rails/lo")
132
+
133
+ # should expand the path
134
+ assert_equal "rails/ rails/app rails/locale rails/log",
135
+ bookmarks.bash_completion("rails/")
136
+ end
137
+ end
138
+
139
+ end
@@ -0,0 +1,24 @@
1
+ # This file is part of the jump project
2
+ #
3
+ # Copyright (C) 2010 Flavio Castelli <flavio@castelli.name>
4
+ # Copyright (C) 2010 Giuseppe Capizzi <gcapizzi@gmail.com>
5
+ #
6
+ # kaveau is free software; you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation; either version 2 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # kaveau is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with Keep; if not, write to the
18
+ # Free Software Foundation, Inc.,
19
+ # 51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA.
20
+
21
+ require 'rubygems'
22
+ require 'test/unit'
23
+ require 'fakefs/safe'
24
+ require 'yaml'
metadata ADDED
@@ -0,0 +1,175 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jump
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Flavio Castelli
14
+ - Giuseppe Capizzi
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2010-08-09 00:00:00 +02:00
20
+ default_executable: jump-bin
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: terminal-table
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 3
31
+ segments:
32
+ - 0
33
+ version: "0"
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: fakefs
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
48
+ type: :development
49
+ version_requirements: *id002
50
+ description: |-
51
+ Jump is a tool that allows you to quickly change
52
+ directories in the bash shell using bookmarks.
53
+ Thanks to Jump, you won't have to type those long paths anymore.
54
+
55
+ Jump was inspired by go-tool by ActiveState
56
+ (http://code.google.com/p/go-tool/).
57
+ email:
58
+ - flavio@castelli.name
59
+ - gcapizzi@gmail.com
60
+ executables:
61
+ - jump-bin
62
+ extensions: []
63
+
64
+ extra_rdoc_files:
65
+ - README.rdoc
66
+ files:
67
+ - COPYING.txt
68
+ - POST_INSTALL.txt
69
+ - README.rdoc
70
+ - Rakefile
71
+ - VERSION
72
+ - bash_integration/bash_completion/jump
73
+ - bash_integration/shell_driver
74
+ - lib/bookmarks.rb
75
+ - test/bookmarks_test.rb
76
+ - test/test_helper.rb
77
+ - bin/jump-bin
78
+ has_rdoc: true
79
+ homepage: http://github.com/flavio/jump
80
+ licenses: []
81
+
82
+ post_install_message: |-
83
+ It's strongly recommended to install bash_completion. In this way you will have
84
+ the best user experience.
85
+ Linux users can install it using their package manager (apt, zypper, yum, emerge...),
86
+ while OSX users can install it via ports, fink or brew.
87
+
88
+ Now that jump is installed you have to create a file called 'jump' containing the
89
+ following text:
90
+
91
+ _jump()
92
+ {
93
+ local cur prev opts
94
+ COMPREPLY=()
95
+ cur="${COMP_WORDS[COMP_CWORD]}"
96
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
97
+ opts="--help -h --add -a --del -d --list -l"
98
+
99
+ if [[ ${prev} == -d || ${prev} == --d* ]] ; then
100
+ # complete the del command with a list of the available bookmarks
101
+ local bookmarks=$(jump --bc)
102
+ COMPREPLY=( $(compgen -W "${bookmarks}" -- ${cur}) )
103
+ return 0
104
+ fi
105
+
106
+ if [[ ${cur:0:1} == "-" ]]; then
107
+ COMPREPLY="$(compgen -W "${opts}" -- ${cur}) "
108
+ return 0
109
+ else
110
+ local bookmarks=$(jump --bc ${cur})
111
+ COMPREPLY=( $(compgen -W "${bookmarks}" -- ${cur}) )
112
+ return 0
113
+ fi
114
+ }
115
+
116
+ function jump {
117
+ #echo "jump called with $*"
118
+ if [ ${1:0:1} == "-" ]; then
119
+ jump-bin $*
120
+ else
121
+ cd $(jump-bin $*)
122
+ fi
123
+ }
124
+
125
+ complete -o nospace -F _jump jump
126
+
127
+
128
+ The file must be located inside of the 'bash_completion.d' directory, which is
129
+ usually located under /etc/.
130
+
131
+ If you do not want to install 'bash_completion' then add the following code
132
+ to your bash configuration file (e.g. '~/.bash_profile' or '~/.bashrc'):
133
+
134
+ function jump {
135
+ if [ ${1:0:1} == "-" ]; then
136
+ jump-bin $*
137
+ else
138
+ cd $(jump-bin $*)
139
+ fi
140
+ }
141
+
142
+ Beware: without bash_completion you won't be able use jump's advanced completion features.
143
+ rdoc_options:
144
+ - --line-numbers
145
+ - --main
146
+ - README.rdoc
147
+ require_paths:
148
+ - lib
149
+ required_ruby_version: !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ hash: 3
155
+ segments:
156
+ - 0
157
+ version: "0"
158
+ required_rubygems_version: !ruby/object:Gem::Requirement
159
+ none: false
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ hash: 3
164
+ segments:
165
+ - 0
166
+ version: "0"
167
+ requirements: []
168
+
169
+ rubyforge_project:
170
+ rubygems_version: 1.3.7
171
+ signing_key:
172
+ specification_version: 3
173
+ summary: A bookmarking system for the bash shell
174
+ test_files:
175
+ - test/bookmarks_test.rb