alternate-folder 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.
@@ -0,0 +1,17 @@
1
+ # alternate-folder
2
+
3
+ # Information
4
+
5
+ This is a simple program that stores local_folder => remote_server:remote_folder mappings in ~/.afrc. When it is run, it'll attempt to transfer you to your defined remote. If one doesn't exist, it'll ask for one to be created.
6
+
7
+ # Usage
8
+
9
+ ## Install the gem
10
+ gem install alternate-folder
11
+
12
+ ## Run it
13
+ $ af
14
+
15
+ ## Change a mapping later
16
+ $ af --change
17
+
@@ -0,0 +1,13 @@
1
+ begin
2
+ require 'jeweler'
3
+ Jeweler::Tasks.new do |gemspec|
4
+ gemspec.name = 'alternate-folder'
5
+ gemspec.summary = 'Quickly switch to pre-defined remote folders with one command.'
6
+ gemspec.description = ''
7
+ gemspec.email = 'andy@andymoreland.com'
8
+ gemspec.homepage = 'http://github.com/AndyMoreland/alternate-folder'
9
+ gemspec.authors = ['Andy Moreland']
10
+ end
11
+ rescue LoadError
12
+ puts 'Jeweler is not installed'
13
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.0
@@ -0,0 +1,44 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{alternate-folder}
8
+ s.version = "0.2.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Andy Moreland"]
12
+ s.date = %q{2010-01-16}
13
+ s.default_executable = %q{af}
14
+ s.description = %q{}
15
+ s.email = %q{andy@andymoreland.com}
16
+ s.executables = ["af"]
17
+ s.extra_rdoc_files = [
18
+ "README.markdown"
19
+ ]
20
+ s.files = [
21
+ "README.markdown",
22
+ "Rakefile",
23
+ "VERSION",
24
+ "alternate-folder.gemspec",
25
+ "bin/af",
26
+ "lib/alternate-folder.rb"
27
+ ]
28
+ s.homepage = %q{http://github.com/AndyMoreland/alternate-folder}
29
+ s.rdoc_options = ["--charset=UTF-8"]
30
+ s.require_paths = ["lib"]
31
+ s.rubygems_version = %q{1.3.5}
32
+ s.summary = %q{Quickly switch to pre-defined remote folders with one command.}
33
+
34
+ if s.respond_to? :specification_version then
35
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
36
+ s.specification_version = 3
37
+
38
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
39
+ else
40
+ end
41
+ else
42
+ end
43
+ end
44
+
data/bin/af ADDED
@@ -0,0 +1,34 @@
1
+ #! /usr/bin/ruby
2
+ require 'optparse'
3
+ require 'alternate-folder'
4
+
5
+ include AlternateFolder
6
+
7
+ def ask?(question)
8
+ puts question
9
+ gets.chomp
10
+ end
11
+
12
+ options = {}
13
+
14
+ optparse = OptionParser.new do |opts|
15
+ opts.banner = 'Usage: af [Options] folder'
16
+
17
+ options[:change] = false
18
+ opts.on('-c', '--change', 'Change the mapping for the given folder') { options[:change] = true }
19
+ end
20
+
21
+ optparse.parse!
22
+
23
+ target = File.expand_path(ARGV.size > 0 ? ARGV[0] : '.')
24
+ m = Mapping.find(target)
25
+
26
+ #This code is run if the mapping doesn't exist or if the user specifically asks to change the mapping
27
+ if !m || options[:change]
28
+ remote_server = ask? "Which server?"
29
+ remote_folder = ask? "Which remote folder on #{remote_server}?"
30
+
31
+ m = Mapping.update(target, Mapping.new(target,remote_folder, remote_server))
32
+ end
33
+
34
+ m.ssh if m
@@ -0,0 +1,52 @@
1
+ #! /usr/bin/ruby
2
+ require 'yaml'
3
+
4
+ module AlternateFolder
5
+ class Mapping
6
+ attr_accessor :local_folder, :remote_folder, :remote_server
7
+
8
+ def initialize(loc_folder, rem_folder, rem_server)
9
+ @local_folder, @remote_folder, @remote_server = loc_folder, rem_folder, rem_server
10
+ end
11
+
12
+ def self.find(folder)
13
+ maps = YAML::load(File.open(File.expand_path('~/.afrc')))
14
+ if maps
15
+ maps[folder] && Mapping.new(folder, maps[folder]['remote_folder'], maps[folder]['remote_server'])
16
+ end
17
+ end
18
+
19
+ def to_hash
20
+ {@local_folder => {'remote_folder' => @remote_folder, 'remote_server' => @remote_server}}
21
+ end
22
+
23
+ def to_yaml
24
+ to_hash.to_yaml.gsub(/---/, '')
25
+ end
26
+
27
+ def self.update(target, mapping)
28
+ if Mapping.find(mapping.local_folder)
29
+ maps = YAML::load(File.open(File.expand_path('~/.afrc')))
30
+ maps.delete(target)
31
+ payload = maps.size > 0 ? maps.to_yaml.gsub(/---/, '') : ''
32
+
33
+ f = File.open(File.expand_path('~/.afrc'), 'w')
34
+ f.write(payload)
35
+ f.close
36
+ end
37
+ mapping.write
38
+ mapping
39
+ end
40
+
41
+ def write
42
+ f = File.open(File.expand_path('~/.afrc'), 'a')
43
+ f.write(self.to_yaml)
44
+ f.close
45
+ end
46
+
47
+ def ssh
48
+ puts "Connecting to #{@remote_server}:#{@remote_folder}"
49
+ exec("ssh -t #{@remote_server} 'cd #{@remote_folder} ; eval $SHELL'")
50
+ end
51
+ end
52
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alternate-folder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Andy Moreland
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-16 00:00:00 -08:00
13
+ default_executable: af
14
+ dependencies: []
15
+
16
+ description: ""
17
+ email: andy@andymoreland.com
18
+ executables:
19
+ - af
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.markdown
24
+ files:
25
+ - README.markdown
26
+ - Rakefile
27
+ - VERSION
28
+ - alternate-folder.gemspec
29
+ - bin/af
30
+ - lib/alternate-folder.rb
31
+ has_rdoc: true
32
+ homepage: http://github.com/AndyMoreland/alternate-folder
33
+ licenses: []
34
+
35
+ post_install_message:
36
+ rdoc_options:
37
+ - --charset=UTF-8
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: "0"
45
+ version:
46
+ required_rubygems_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: "0"
51
+ version:
52
+ requirements: []
53
+
54
+ rubyforge_project:
55
+ rubygems_version: 1.3.5
56
+ signing_key:
57
+ specification_version: 3
58
+ summary: Quickly switch to pre-defined remote folders with one command.
59
+ test_files: []
60
+