taketo 0.2.0.alpha → 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 +7 -0
- data/.gitignore +13 -0
- data/.travis.yml +9 -0
- data/.yardopts +7 -0
- data/Gemfile +9 -7
- data/Gemfile.lock +26 -10
- data/README.md +3 -1
- data/Rakefile +7 -1
- data/VERSION +1 -1
- data/bin/taketo +2 -1
- data/lib/taketo/actions/edit_config.rb +16 -0
- data/lib/taketo/actions/generate_ssh_config.rb +0 -3
- data/lib/taketo/actions/list.rb +2 -4
- data/lib/taketo/actions/login.rb +2 -4
- data/lib/taketo/actions/matches.rb +9 -9
- data/lib/taketo/actions/view.rb +2 -4
- data/lib/taketo/actions.rb +5 -1
- data/lib/taketo/commands/ssh_command.rb +2 -0
- data/lib/taketo/config_printer_visitor.rb +2 -0
- data/lib/taketo/config_traverser.rb +2 -0
- data/lib/taketo/config_validator.rb +1 -0
- data/lib/taketo/constructs/base_construct.rb +1 -0
- data/lib/taketo/constructs/command.rb +2 -0
- data/lib/taketo/constructs/config.rb +2 -0
- data/lib/taketo/constructs/environment.rb +2 -0
- data/lib/taketo/constructs/group.rb +2 -0
- data/lib/taketo/constructs/project.rb +2 -0
- data/lib/taketo/constructs/server.rb +2 -0
- data/lib/taketo/constructs_factory.rb +2 -1
- data/lib/taketo/destination_matcher.rb +2 -0
- data/lib/taketo/dsl.rb +2 -0
- data/lib/taketo/group_list_visitor.rb +2 -0
- data/lib/taketo/node_resolver.rb +2 -0
- data/lib/taketo/printer.rb +2 -0
- data/lib/taketo/ssh_config_generator_visitor.rb +2 -0
- data/lib/taketo/support/inflections.rb +44 -0
- data/lib/taketo/support/named_nodes_collection.rb +3 -1
- data/lib/taketo/support.rb +1 -0
- data/scripts/zsh/completion/_taketo +36 -0
- data/spec/acceptance/edit_config_spec.rb +12 -0
- data/spec/lib/taketo/support/inflections_spec.rb +44 -0
- data/spec/spec_helper.rb +3 -0
- data/taketo.gemspec +41 -0
- metadata +80 -42
- data/lib/taketo/actions/group_action.rb +0 -15
- data/lib/taketo/actions/node_action.rb +0 -15
- data/lib/taketo/actions/server_action.rb +0 -14
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 029c1faa2c6ca7f98624297fb06f91d808fcb0f7
|
4
|
+
data.tar.gz: b271faf2011fcc1df7c02a8a4faaf5f058539579
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6c3e8368d01c29ca74ab7bd0162fdd37bed1c56cf2258f2b621e992e116ed709c4667b01e0cdcf1011b262004765d35b163c017e692a838c0f190722f72e98c3
|
7
|
+
data.tar.gz: b3117151aded8ce18fb21961aea05ae3745fa9523393b1379d05bc332a657dc02421fcc3742cb67066d5a1cb4cb185e7239fe79c1a5825643028e8af1331caf6
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/.yardopts
ADDED
data/Gemfile
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gemspec
|
2
4
|
|
3
5
|
group :development do
|
4
|
-
gem
|
5
|
-
gem
|
6
|
-
gem 'simplecov', '~> 0.6', :require => false
|
7
|
-
gem 'open4', '~> 1.3'
|
8
|
-
gem 'pry'
|
9
|
-
end
|
6
|
+
gem 'simplecov', :require => false
|
7
|
+
gem 'coveralls', :require => false
|
10
8
|
|
9
|
+
gem "ripper", :platforms => :ruby_18
|
10
|
+
gem "redcarpet", "~> 2.2"
|
11
|
+
gem "yard", "~> 0.8.5"
|
12
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -1,16 +1,27 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
taketo (0.2.0)
|
5
|
+
|
1
6
|
GEM
|
2
|
-
remote:
|
7
|
+
remote: https://rubygems.org/
|
3
8
|
specs:
|
4
|
-
|
9
|
+
colorize (0.5.8)
|
10
|
+
coveralls (0.6.3)
|
11
|
+
colorize
|
12
|
+
multi_json (~> 1.3)
|
13
|
+
rest-client
|
14
|
+
simplecov (>= 0.7)
|
15
|
+
thor
|
5
16
|
diff-lcs (1.1.3)
|
6
|
-
|
17
|
+
mime-types (1.21)
|
7
18
|
multi_json (1.3.7)
|
8
19
|
open4 (1.3.0)
|
9
|
-
pry (0.9.10)
|
10
|
-
coderay (~> 1.0.5)
|
11
|
-
method_source (~> 0.8)
|
12
|
-
slop (~> 3.3.1)
|
13
20
|
rake (0.9.5)
|
21
|
+
redcarpet (2.2.2)
|
22
|
+
rest-client (1.6.7)
|
23
|
+
mime-types (>= 1.16)
|
24
|
+
ripper (1.0.5)
|
14
25
|
rspec (2.12.0)
|
15
26
|
rspec-core (~> 2.12.0)
|
16
27
|
rspec-expectations (~> 2.12.0)
|
@@ -23,14 +34,19 @@ GEM
|
|
23
34
|
multi_json (~> 1.0)
|
24
35
|
simplecov-html (~> 0.7.1)
|
25
36
|
simplecov-html (0.7.1)
|
26
|
-
|
37
|
+
thor (0.18.0)
|
38
|
+
yard (0.8.5.2)
|
27
39
|
|
28
40
|
PLATFORMS
|
29
41
|
ruby
|
30
42
|
|
31
43
|
DEPENDENCIES
|
44
|
+
coveralls
|
32
45
|
open4 (~> 1.3)
|
33
|
-
pry
|
34
46
|
rake (~> 0.9)
|
47
|
+
redcarpet (~> 2.2)
|
48
|
+
ripper
|
35
49
|
rspec (~> 2.11)
|
36
|
-
simplecov
|
50
|
+
simplecov
|
51
|
+
taketo!
|
52
|
+
yard (~> 0.8.5)
|
data/README.md
CHANGED
@@ -2,7 +2,8 @@ Take Me To
|
|
2
2
|
==========
|
3
3
|
|
4
4
|
[](http://travis-ci.org/v-yarotsky/taketo)
|
5
|
-
[](https://coveralls.io/r/v-yarotsky/taketo)
|
6
|
+
[](https://codeclimate.com/github/v-yarotsky/taketo)
|
6
7
|
[](http://badge.fury.io/rb/taketo)
|
7
8
|
|
8
9
|
A tiny helper utility to make access to servers easier for different projects and environments.
|
@@ -12,6 +13,7 @@ Taketo is known to work on:
|
|
12
13
|
* ree 1.8.7
|
13
14
|
* MRI 1.9.2
|
14
15
|
* MRI 1.9.3
|
16
|
+
* MRI 2.0.0
|
15
17
|
|
16
18
|
Important note:
|
17
19
|
---------------
|
data/Rakefile
CHANGED
@@ -12,8 +12,11 @@ rescue Bundler::BundlerError => e
|
|
12
12
|
end
|
13
13
|
|
14
14
|
require 'rake'
|
15
|
-
require 'rspec/core/rake_task'
|
16
15
|
|
16
|
+
require 'rake/clean'
|
17
|
+
CLOBBER.include('doc/**', 'pkg/**', 'coverage/**')
|
18
|
+
|
19
|
+
require 'rspec/core/rake_task'
|
17
20
|
RSpec::Core::RakeTask.new do |t|
|
18
21
|
t.pattern = 'spec/lib/**/*_spec.rb'
|
19
22
|
end
|
@@ -26,5 +29,8 @@ RSpec::Core::RakeTask.new(:acceptance_spec) do |t|
|
|
26
29
|
t.pattern = 'spec/acceptance/**/*_spec.rb'
|
27
30
|
end
|
28
31
|
|
32
|
+
require 'yard'
|
33
|
+
YARD::Rake::YardocTask.new
|
34
|
+
|
29
35
|
task :default => [:spec, :acceptance_spec]
|
30
36
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.0
|
1
|
+
0.2.0
|
data/bin/taketo
CHANGED
@@ -37,8 +37,9 @@ def parse_options
|
|
37
37
|
opts.separator "Special options:"
|
38
38
|
|
39
39
|
opts.on("--dry-run", "Print out what would be run") { |v| options[:dry_run] = v }
|
40
|
-
opts.on("--debug") { |v| options[:debug] = v }
|
41
40
|
opts.on("--matches") { |v| options[:action] = :matches }
|
41
|
+
opts.on("--edit-config") { |v| options[:action] = :edit_config }
|
42
|
+
opts.on("--debug") { |v| options[:debug] = v }
|
42
43
|
end.parse!
|
43
44
|
|
44
45
|
options.merge!(:destination_path => ARGV.shift.to_s)
|
@@ -1,14 +1,11 @@
|
|
1
1
|
require 'taketo/config_traverser'
|
2
2
|
require 'taketo/ssh_config_generator_visitor'
|
3
3
|
require 'taketo/actions/base_action'
|
4
|
-
require 'taketo/actions/server_action'
|
5
4
|
|
6
5
|
module Taketo
|
7
6
|
module Actions
|
8
7
|
|
9
8
|
class GenerateSshConfig < BaseAction
|
10
|
-
include ServerAction
|
11
|
-
|
12
9
|
def run
|
13
10
|
traverser = ConfigTraverser.new(config)
|
14
11
|
ssh_config_generator = SSHConfigGeneratorVisitor.new
|
data/lib/taketo/actions/list.rb
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
require 'taketo/group_list_visitor'
|
2
2
|
require 'taketo/actions/base_action'
|
3
|
-
require 'taketo/
|
3
|
+
require 'taketo/group_resolver'
|
4
4
|
|
5
5
|
module Taketo
|
6
6
|
module Actions
|
7
7
|
|
8
8
|
class List < BaseAction
|
9
|
-
include GroupAction
|
10
|
-
|
11
9
|
def run
|
12
|
-
node =
|
10
|
+
node = GroupResolver.new(config, destination_path).resolve
|
13
11
|
traverser = ConfigTraverser.new(node)
|
14
12
|
lister = GroupListVisitor.new
|
15
13
|
traverser.visit_depth_first(lister)
|
data/lib/taketo/actions/login.rb
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
require 'taketo/commands/ssh_command'
|
2
2
|
require 'taketo/actions/base_action'
|
3
|
-
require 'taketo/
|
3
|
+
require 'taketo/server_resolver'
|
4
4
|
|
5
5
|
module Taketo
|
6
6
|
module Actions
|
7
7
|
|
8
8
|
class Login < BaseAction
|
9
|
-
include ServerAction
|
10
|
-
|
11
9
|
def run
|
12
|
-
server =
|
10
|
+
server = ServerResolver.new(config, destination_path).resolve
|
13
11
|
server_command = remote_command(server)
|
14
12
|
command_to_execute = Commands::SSHCommand.new(server).render(server_command.render(server, options))
|
15
13
|
execute(command_to_execute)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'taketo/destination_matcher'
|
2
2
|
require 'taketo/actions/base_action'
|
3
|
-
require 'taketo/
|
4
|
-
require 'taketo/
|
5
|
-
require 'taketo/
|
3
|
+
require 'taketo/group_resolver'
|
4
|
+
require 'taketo/node_resolver'
|
5
|
+
require 'taketo/server_resolver'
|
6
6
|
|
7
7
|
module Taketo
|
8
8
|
module Actions
|
@@ -10,17 +10,17 @@ module Taketo
|
|
10
10
|
class Matches < BaseAction
|
11
11
|
def initialize(options)
|
12
12
|
super
|
13
|
-
if options[:list]
|
14
|
-
|
13
|
+
@resolver = if options[:list]
|
14
|
+
GroupResolver
|
15
15
|
elsif options[:view]
|
16
|
-
|
16
|
+
NodeResolver
|
17
17
|
else
|
18
|
-
|
19
|
-
end
|
18
|
+
ServerResolver
|
19
|
+
end.new(config, destination_path)
|
20
20
|
end
|
21
21
|
|
22
22
|
def run
|
23
|
-
puts DestinationMatcher.new(resolver.nodes).matches.join(" ")
|
23
|
+
puts DestinationMatcher.new(@resolver.nodes).matches.join(" ")
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
data/lib/taketo/actions/view.rb
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
require 'taketo/config_traverser'
|
2
2
|
require 'taketo/config_printer_visitor'
|
3
3
|
require 'taketo/actions/base_action'
|
4
|
-
require 'taketo/
|
4
|
+
require 'taketo/node_resolver'
|
5
5
|
|
6
6
|
module Taketo
|
7
7
|
module Actions
|
8
8
|
|
9
9
|
class View < BaseAction
|
10
|
-
include NodeAction
|
11
|
-
|
12
10
|
def run
|
13
11
|
config.default_destination = nil
|
14
|
-
node =
|
12
|
+
node = NodeResolver.new(config, destination_path).resolve
|
15
13
|
traverser = ConfigTraverser.new(node)
|
16
14
|
config_printer = ConfigPrinterVisitor.new
|
17
15
|
traverser.visit_depth_first(config_printer)
|
data/lib/taketo/actions.rb
CHANGED
@@ -3,8 +3,10 @@ require 'taketo/actions/view'
|
|
3
3
|
require 'taketo/actions/list'
|
4
4
|
require 'taketo/actions/matches'
|
5
5
|
require 'taketo/actions/generate_ssh_config'
|
6
|
+
require 'taketo/actions/edit_config'
|
6
7
|
|
7
8
|
module Taketo
|
9
|
+
|
8
10
|
module Actions
|
9
11
|
def self.[](name)
|
10
12
|
actions_map = {
|
@@ -12,10 +14,12 @@ module Taketo
|
|
12
14
|
:view => View,
|
13
15
|
:list => List,
|
14
16
|
:matches => Matches,
|
15
|
-
:generate_ssh_config => GenerateSshConfig
|
17
|
+
:generate_ssh_config => GenerateSshConfig,
|
18
|
+
:edit_config => EditConfig
|
16
19
|
}
|
17
20
|
actions_map.fetch(name) { Login }
|
18
21
|
end
|
19
22
|
end
|
23
|
+
|
20
24
|
end
|
21
25
|
|
@@ -3,6 +3,7 @@ require 'shellwords'
|
|
3
3
|
|
4
4
|
module Taketo
|
5
5
|
module Commands
|
6
|
+
|
6
7
|
class SSHCommand
|
7
8
|
extend Forwardable
|
8
9
|
include Shellwords
|
@@ -31,6 +32,7 @@ module Taketo
|
|
31
32
|
%Q[-i #{shellescape @server.identity_file}] if @server.identity_file
|
32
33
|
end
|
33
34
|
end
|
35
|
+
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
@@ -2,6 +2,7 @@ require 'taketo/config_visitor'
|
|
2
2
|
require 'taketo/printer'
|
3
3
|
|
4
4
|
module Taketo
|
5
|
+
|
5
6
|
class ConfigPrinterVisitor < ConfigVisitor
|
6
7
|
include Printer
|
7
8
|
|
@@ -49,5 +50,6 @@ module Taketo
|
|
49
50
|
indent(4) { put command.name.to_s + (" - " + command.description if command.description).to_s }
|
50
51
|
end
|
51
52
|
end
|
53
|
+
|
52
54
|
end
|
53
55
|
|
@@ -3,6 +3,7 @@ require 'shellwords'
|
|
3
3
|
|
4
4
|
module Taketo
|
5
5
|
module Constructs
|
6
|
+
|
6
7
|
class Command < BaseConstruct
|
7
8
|
include Shellwords
|
8
9
|
|
@@ -35,6 +36,7 @@ module Taketo
|
|
35
36
|
server.environment_variables.map { |k, v| %Q[#{k}=#{shellescape v}] }.join(" ")
|
36
37
|
end
|
37
38
|
end
|
39
|
+
|
38
40
|
end
|
39
41
|
end
|
40
42
|
|
@@ -3,6 +3,7 @@ require 'taketo/support'
|
|
3
3
|
|
4
4
|
module Taketo
|
5
5
|
module Constructs
|
6
|
+
|
6
7
|
class Config < BaseConstruct
|
7
8
|
has_nodes :groups, :group
|
8
9
|
has_nodes :projects, :project
|
@@ -18,6 +19,7 @@ module Taketo
|
|
18
19
|
has_deeply_nested_nodes?(:servers)
|
19
20
|
end
|
20
21
|
end
|
22
|
+
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
@@ -4,6 +4,7 @@ require 'taketo/support'
|
|
4
4
|
|
5
5
|
module Taketo
|
6
6
|
module Constructs
|
7
|
+
|
7
8
|
class Environment < BaseConstruct
|
8
9
|
has_nodes :servers, :server
|
9
10
|
has_nodes :groups, :group
|
@@ -28,6 +29,7 @@ module Taketo
|
|
28
29
|
has_deeply_nested_nodes?(:servers)
|
29
30
|
end
|
30
31
|
end
|
32
|
+
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
@@ -3,6 +3,7 @@ require 'taketo/support'
|
|
3
3
|
|
4
4
|
module Taketo
|
5
5
|
module Constructs
|
6
|
+
|
6
7
|
class Project < BaseConstruct
|
7
8
|
has_nodes :environments, :environment
|
8
9
|
has_nodes :servers, :server
|
@@ -12,6 +13,7 @@ module Taketo
|
|
12
13
|
has_deeply_nested_nodes?(:servers)
|
13
14
|
end
|
14
15
|
end
|
16
|
+
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
@@ -4,6 +4,7 @@ require 'taketo/support'
|
|
4
4
|
|
5
5
|
module Taketo
|
6
6
|
module Constructs
|
7
|
+
|
7
8
|
class Server < BaseConstruct
|
8
9
|
attr_reader :environment_variables
|
9
10
|
attr_accessor :host, :port, :username, :default_location, :default_command, :global_alias, :identity_file
|
@@ -36,6 +37,7 @@ module Taketo
|
|
36
37
|
end
|
37
38
|
end
|
38
39
|
end
|
40
|
+
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'taketo/constructs'
|
2
2
|
|
3
3
|
module Taketo
|
4
|
-
class ConstructsFactory
|
5
4
|
|
5
|
+
class ConstructsFactory
|
6
6
|
def create(type, *args)
|
7
7
|
send("create_#{type}", *args)
|
8
8
|
end
|
@@ -31,5 +31,6 @@ module Taketo
|
|
31
31
|
Constructs::Command.new(*args)
|
32
32
|
end
|
33
33
|
end
|
34
|
+
|
34
35
|
end
|
35
36
|
|
data/lib/taketo/dsl.rb
CHANGED
data/lib/taketo/node_resolver.rb
CHANGED
@@ -2,6 +2,7 @@ require 'taketo/config_visitor'
|
|
2
2
|
require 'taketo/config_traverser'
|
3
3
|
|
4
4
|
module Taketo
|
5
|
+
|
5
6
|
class AmbiguousDestinationError < StandardError; end
|
6
7
|
class NonExistentDestinationError < StandardError; end
|
7
8
|
|
@@ -45,6 +46,7 @@ module Taketo
|
|
45
46
|
end
|
46
47
|
end
|
47
48
|
end
|
49
|
+
|
48
50
|
end
|
49
51
|
|
50
52
|
|
data/lib/taketo/printer.rb
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
module Taketo
|
2
|
+
module Support
|
3
|
+
|
4
|
+
module Inflections
|
5
|
+
extend self
|
6
|
+
|
7
|
+
def to_singular(thing)
|
8
|
+
str = name(thing)
|
9
|
+
str.chop! if plural?(str)
|
10
|
+
str.to_sym
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_plural(thing)
|
14
|
+
str = name(thing)
|
15
|
+
str << "s" unless plural?(str)
|
16
|
+
str.to_sym
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_class(thing, nesting = Module.nesting.first || Object)
|
20
|
+
nesting.const_get(class_name_from_string(to_singular(thing)))
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def name(thing)
|
26
|
+
thing.is_a?(Class) ? name_from_class(thing) : thing.to_s
|
27
|
+
end
|
28
|
+
|
29
|
+
def name_from_class(klass)
|
30
|
+
klass.name.gsub(/[A-Za-z0-9]+::/, "").gsub(/[A-Z][^A-Z]*/) { |s| s.gsub("::", "").downcase + "_" }.chop
|
31
|
+
end
|
32
|
+
|
33
|
+
def class_name_from_string(singular)
|
34
|
+
singular.to_s.gsub(/(^|_)\w/) { |s| s.gsub(/_/, "").capitalize }
|
35
|
+
end
|
36
|
+
|
37
|
+
def plural?(str)
|
38
|
+
str =~ /s$/
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
@@ -3,6 +3,7 @@ require 'taketo/support'
|
|
3
3
|
|
4
4
|
module Taketo
|
5
5
|
module Support
|
6
|
+
|
6
7
|
class NamedNodesCollection
|
7
8
|
include Enumerable
|
8
9
|
extend Forwardable
|
@@ -37,9 +38,10 @@ module Taketo
|
|
37
38
|
end
|
38
39
|
|
39
40
|
protected
|
40
|
-
|
41
|
+
|
41
42
|
attr_reader :nodes
|
42
43
|
end
|
44
|
+
|
43
45
|
end
|
44
46
|
end
|
45
47
|
|
data/lib/taketo/support.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
#compdef taketo
|
2
|
+
|
3
|
+
typeset curcontext state line cmds ret
|
4
|
+
|
5
|
+
curcontext="$curcontext"
|
6
|
+
ret=1
|
7
|
+
|
8
|
+
_taketo() {
|
9
|
+
_arguments -C \
|
10
|
+
'(--command)--command[Command to execute on destination server]' \
|
11
|
+
'(--directory)--directory[Directory on destination server to cd to]' \
|
12
|
+
'(--config)--config[Use custom config file]' \
|
13
|
+
'(--view)--view[Show config contents in a tree form]' \
|
14
|
+
'(--list)--list[List scopes]' \
|
15
|
+
'(--dry-run)--dry-run[Print out what would be run]' \
|
16
|
+
'(--generate-ssh-config)--generate-ssh-config[Generate SSH config from taketo config]' \
|
17
|
+
'(--version)--version[Display taketo version and exit]' \
|
18
|
+
'1: :->dest' && ret=0
|
19
|
+
|
20
|
+
_taketo_destinations() {
|
21
|
+
matching_destinations=(`taketo --matches $@ 2> /dev/null`)
|
22
|
+
}
|
23
|
+
|
24
|
+
local -a matching_destinations
|
25
|
+
local expl
|
26
|
+
|
27
|
+
case $state in
|
28
|
+
dest)
|
29
|
+
_taketo_destinations
|
30
|
+
_wanted matching_destinations expl 'all matching destinations' _multi_parts -i : matching_destinations
|
31
|
+
;;
|
32
|
+
esac
|
33
|
+
}
|
34
|
+
|
35
|
+
_taketo "$@"
|
36
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'acceptance_spec_helper'
|
2
|
+
|
3
|
+
feature "Edit taketo config" do
|
4
|
+
scenario "Open config in editor" do
|
5
|
+
run "EDITOR='echo editing' taketo --edit-config"
|
6
|
+
stdout.should =~ /editing.*taketo.*/
|
7
|
+
stderr.should be_empty
|
8
|
+
exit_status.should be_success
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'taketo/support/inflections'
|
3
|
+
|
4
|
+
include Taketo::Support
|
5
|
+
|
6
|
+
describe "Inflections" do
|
7
|
+
module Nest1
|
8
|
+
module Nest2
|
9
|
+
class Thing; end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#to_singular" do
|
14
|
+
it "returns singularized sumbol for klass" do
|
15
|
+
expect(Inflections.to_singular(Nest1::Nest2::Thing)).to eq(:thing)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns singularized sumbol for pluralized symbol" do
|
19
|
+
expect(Inflections.to_singular(:things)).to eq(:thing)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#to_plural" do
|
24
|
+
it "returns pluralized sumbol for klass" do
|
25
|
+
expect(Inflections.to_plural(Nest1::Nest2::Thing)).to eq(:things)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns pluralized sumbol for singularized symbol" do
|
29
|
+
expect(Inflections.to_plural(:thing)).to eq(:things)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#to_class" do
|
34
|
+
it "returns klass by pluralized symbol" do
|
35
|
+
expect(Inflections.to_class(:things, Nest1::Nest2)).to eq(Nest1::Nest2::Thing)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns klass by singularized symbol" do
|
39
|
+
expect(Inflections.to_class(:thing, Nest1::Nest2)).to eq(Nest1::Nest2::Thing)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
|
data/spec/spec_helper.rb
CHANGED
data/taketo.gemspec
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
$:.unshift File.expand_path('../lib/', __FILE__)
|
4
|
+
|
5
|
+
require 'taketo'
|
6
|
+
require 'date'
|
7
|
+
|
8
|
+
Gem::Specification.new do |s|
|
9
|
+
s.name = "taketo"
|
10
|
+
s.summary = "A tiny helper utility to make access to servers eaiser " \
|
11
|
+
"for different projects and environments"
|
12
|
+
s.description = <<-DESC
|
13
|
+
Taketo is an utility to aid quick access to often used servers for web-developers.
|
14
|
+
Taketo uses a config written in ruby using light DSL.
|
15
|
+
See http://github.com/v-yarotsky/taketo for additional instructions
|
16
|
+
DESC
|
17
|
+
|
18
|
+
s.version = Taketo::VERSION.dup
|
19
|
+
s.authors = ["Vladimir Yarotsky"]
|
20
|
+
s.date = Date.today.to_s
|
21
|
+
s.email = "vladimir.yarotksy@gmail.com"
|
22
|
+
s.homepage = "http://github.com/v-yarotsky/taketo"
|
23
|
+
s.licenses = ["MIT"]
|
24
|
+
|
25
|
+
s.rubygems_version = "1.8.21"
|
26
|
+
s.required_rubygems_version = ">= 1.3.6"
|
27
|
+
s.specification_version = 3
|
28
|
+
|
29
|
+
s.files = `git ls-files`.split($/)
|
30
|
+
s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
31
|
+
s.test_files = s.files.grep(%r{^(spec)/})
|
32
|
+
s.require_paths = ["lib"]
|
33
|
+
s.extra_rdoc_files = %w[LICENSE.txt README.md]
|
34
|
+
|
35
|
+
s.add_development_dependency("rspec", "~> 2.11")
|
36
|
+
s.add_development_dependency("rake", "~> 0.9")
|
37
|
+
s.add_development_dependency("simplecov", "~> 0.6")
|
38
|
+
s.add_development_dependency("open4", "~> 1.3")
|
39
|
+
end
|
40
|
+
|
41
|
+
|
metadata
CHANGED
@@ -1,107 +1,110 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taketo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 0.2.0.alpha
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Vladimir Yarotsky
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-04-12 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '2.11'
|
22
20
|
type: :development
|
21
|
+
prerelease: false
|
23
22
|
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
23
|
requirements:
|
26
24
|
- - ~>
|
27
25
|
- !ruby/object:Gem::Version
|
28
26
|
version: '2.11'
|
29
|
-
prerelease: false
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0.9'
|
38
34
|
type: :development
|
35
|
+
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
37
|
requirements:
|
42
38
|
- - ~>
|
43
39
|
- !ruby/object:Gem::Version
|
44
40
|
version: '0.9'
|
45
|
-
prerelease: false
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: simplecov
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0.6'
|
54
48
|
type: :development
|
49
|
+
prerelease: false
|
55
50
|
version_requirements: !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
51
|
requirements:
|
58
52
|
- - ~>
|
59
53
|
- !ruby/object:Gem::Version
|
60
54
|
version: '0.6'
|
61
|
-
prerelease: false
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: open4
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '1.3'
|
70
62
|
type: :development
|
63
|
+
prerelease: false
|
71
64
|
version_requirements: !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
65
|
requirements:
|
74
66
|
- - ~>
|
75
67
|
- !ruby/object:Gem::Version
|
76
68
|
version: '1.3'
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
69
|
+
description: |2
|
70
|
+
Taketo is an utility to aid quick access to often used servers for web-developers.
|
71
|
+
Taketo uses a config written in ruby using light DSL.
|
72
|
+
See http://github.com/v-yarotsky/taketo for additional instructions
|
81
73
|
email: vladimir.yarotksy@gmail.com
|
82
74
|
executables:
|
83
75
|
- taketo
|
84
76
|
extensions: []
|
85
|
-
extra_rdoc_files:
|
77
|
+
extra_rdoc_files:
|
78
|
+
- LICENSE.txt
|
79
|
+
- README.md
|
86
80
|
files:
|
81
|
+
- .gitignore
|
82
|
+
- .travis.yml
|
83
|
+
- .yardopts
|
84
|
+
- Gemfile
|
85
|
+
- Gemfile.lock
|
86
|
+
- LICENSE.txt
|
87
|
+
- README.md
|
88
|
+
- Rakefile
|
89
|
+
- VERSION
|
87
90
|
- bin/taketo
|
91
|
+
- lib/taketo.rb
|
92
|
+
- lib/taketo/actions.rb
|
88
93
|
- lib/taketo/actions/base_action.rb
|
94
|
+
- lib/taketo/actions/edit_config.rb
|
89
95
|
- lib/taketo/actions/generate_ssh_config.rb
|
90
|
-
- lib/taketo/actions/group_action.rb
|
91
96
|
- lib/taketo/actions/list.rb
|
92
97
|
- lib/taketo/actions/login.rb
|
93
98
|
- lib/taketo/actions/matches.rb
|
94
|
-
- lib/taketo/actions/node_action.rb
|
95
|
-
- lib/taketo/actions/server_action.rb
|
96
99
|
- lib/taketo/actions/view.rb
|
97
|
-
- lib/taketo/actions.rb
|
98
100
|
- lib/taketo/associated_nodes.rb
|
99
|
-
- lib/taketo/commands/ssh_command.rb
|
100
101
|
- lib/taketo/commands.rb
|
102
|
+
- lib/taketo/commands/ssh_command.rb
|
101
103
|
- lib/taketo/config_printer_visitor.rb
|
102
104
|
- lib/taketo/config_traverser.rb
|
103
105
|
- lib/taketo/config_validator.rb
|
104
106
|
- lib/taketo/config_visitor.rb
|
107
|
+
- lib/taketo/constructs.rb
|
105
108
|
- lib/taketo/constructs/base_construct.rb
|
106
109
|
- lib/taketo/constructs/command.rb
|
107
110
|
- lib/taketo/constructs/config.rb
|
@@ -109,7 +112,6 @@ files:
|
|
109
112
|
- lib/taketo/constructs/group.rb
|
110
113
|
- lib/taketo/constructs/project.rb
|
111
114
|
- lib/taketo/constructs/server.rb
|
112
|
-
- lib/taketo/constructs.rb
|
113
115
|
- lib/taketo/constructs_factory.rb
|
114
116
|
- lib/taketo/destination_matcher.rb
|
115
117
|
- lib/taketo/dsl.rb
|
@@ -119,15 +121,17 @@ files:
|
|
119
121
|
- lib/taketo/printer.rb
|
120
122
|
- lib/taketo/server_resolver.rb
|
121
123
|
- lib/taketo/ssh_config_generator_visitor.rb
|
124
|
+
- lib/taketo/support.rb
|
125
|
+
- lib/taketo/support/inflections.rb
|
122
126
|
- lib/taketo/support/key_error.rb
|
123
127
|
- lib/taketo/support/named_nodes_collection.rb
|
124
|
-
-
|
125
|
-
- lib/taketo.rb
|
128
|
+
- scripts/zsh/completion/_taketo
|
126
129
|
- spec/acceptance/command_spec.rb
|
127
130
|
- spec/acceptance/completion_spec.rb
|
128
131
|
- spec/acceptance/config_dsl_spec.rb
|
129
132
|
- spec/acceptance/config_validation_spec.rb
|
130
133
|
- spec/acceptance/connect_to_server_spec.rb
|
134
|
+
- spec/acceptance/edit_config_spec.rb
|
131
135
|
- spec/acceptance/error_handling_spec.rb
|
132
136
|
- spec/acceptance/generate_ssh_config_spec.rb
|
133
137
|
- spec/acceptance/help_spec.rb
|
@@ -155,6 +159,7 @@ files:
|
|
155
159
|
- spec/lib/taketo/group_resolver_spec.rb
|
156
160
|
- spec/lib/taketo/server_resolver_spec.rb
|
157
161
|
- spec/lib/taketo/ssh_config_generator_visitor_spec.rb
|
162
|
+
- spec/lib/taketo/support/inflections_spec.rb
|
158
163
|
- spec/lib/taketo/support/named_nodes_collection_spec.rb
|
159
164
|
- spec/spec_helper.rb
|
160
165
|
- spec/support/helpers/construct_spec_helper.rb
|
@@ -162,39 +167,72 @@ files:
|
|
162
167
|
- spec/support/matchers/be_appropriate_construct_matcher.rb
|
163
168
|
- spec/support/matchers/enclose_scope_matcher.rb
|
164
169
|
- spec/support/matchers/have_accessor_matcher.rb
|
165
|
-
-
|
166
|
-
- Gemfile.lock
|
167
|
-
- Rakefile
|
168
|
-
- LICENSE.txt
|
169
|
-
- README.md
|
170
|
-
- VERSION
|
170
|
+
- taketo.gemspec
|
171
171
|
homepage: http://github.com/v-yarotsky/taketo
|
172
172
|
licenses:
|
173
173
|
- MIT
|
174
|
+
metadata: {}
|
174
175
|
post_install_message:
|
175
176
|
rdoc_options: []
|
176
177
|
require_paths:
|
177
178
|
- lib
|
178
179
|
required_ruby_version: !ruby/object:Gem::Requirement
|
179
|
-
none: false
|
180
180
|
requirements:
|
181
|
-
- -
|
181
|
+
- - '>='
|
182
182
|
- !ruby/object:Gem::Version
|
183
|
-
segments:
|
184
|
-
- 0
|
185
|
-
hash: -2702655235104001250
|
186
183
|
version: '0'
|
187
184
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
188
|
-
none: false
|
189
185
|
requirements:
|
190
|
-
- -
|
186
|
+
- - '>='
|
191
187
|
- !ruby/object:Gem::Version
|
192
188
|
version: 1.3.6
|
193
189
|
requirements: []
|
194
190
|
rubyforge_project:
|
195
|
-
rubygems_version:
|
191
|
+
rubygems_version: 2.0.3
|
196
192
|
signing_key:
|
197
193
|
specification_version: 3
|
198
194
|
summary: A tiny helper utility to make access to servers eaiser for different projects
|
199
195
|
and environments
|
200
|
-
test_files:
|
196
|
+
test_files:
|
197
|
+
- spec/acceptance/command_spec.rb
|
198
|
+
- spec/acceptance/completion_spec.rb
|
199
|
+
- spec/acceptance/config_dsl_spec.rb
|
200
|
+
- spec/acceptance/config_validation_spec.rb
|
201
|
+
- spec/acceptance/connect_to_server_spec.rb
|
202
|
+
- spec/acceptance/edit_config_spec.rb
|
203
|
+
- spec/acceptance/error_handling_spec.rb
|
204
|
+
- spec/acceptance/generate_ssh_config_spec.rb
|
205
|
+
- spec/acceptance/help_spec.rb
|
206
|
+
- spec/acceptance/location_spec.rb
|
207
|
+
- spec/acceptance_spec_helper.rb
|
208
|
+
- spec/integration/dsl_integration_spec.rb
|
209
|
+
- spec/lib/taketo/actions_spec.rb
|
210
|
+
- spec/lib/taketo/associated_nodes_spec.rb
|
211
|
+
- spec/lib/taketo/commands/ssh_command_spec.rb
|
212
|
+
- spec/lib/taketo/config_printer_visitor_spec.rb
|
213
|
+
- spec/lib/taketo/config_traverser_spec.rb
|
214
|
+
- spec/lib/taketo/config_validator_spec.rb
|
215
|
+
- spec/lib/taketo/config_visitor_spec.rb
|
216
|
+
- spec/lib/taketo/constructs/base_construct_spec.rb
|
217
|
+
- spec/lib/taketo/constructs/command_spec.rb
|
218
|
+
- spec/lib/taketo/constructs/config_spec.rb
|
219
|
+
- spec/lib/taketo/constructs/environment_spec.rb
|
220
|
+
- spec/lib/taketo/constructs/group_spec.rb
|
221
|
+
- spec/lib/taketo/constructs/project_spec.rb
|
222
|
+
- spec/lib/taketo/constructs/server_spec.rb
|
223
|
+
- spec/lib/taketo/constructs_factory_spec.rb
|
224
|
+
- spec/lib/taketo/destination_matcher_spec.rb
|
225
|
+
- spec/lib/taketo/dsl_spec.rb
|
226
|
+
- spec/lib/taketo/group_list_visitor_spec.rb
|
227
|
+
- spec/lib/taketo/group_resolver_spec.rb
|
228
|
+
- spec/lib/taketo/server_resolver_spec.rb
|
229
|
+
- spec/lib/taketo/ssh_config_generator_visitor_spec.rb
|
230
|
+
- spec/lib/taketo/support/inflections_spec.rb
|
231
|
+
- spec/lib/taketo/support/named_nodes_collection_spec.rb
|
232
|
+
- spec/spec_helper.rb
|
233
|
+
- spec/support/helpers/construct_spec_helper.rb
|
234
|
+
- spec/support/helpers/dsl_spec_helper.rb
|
235
|
+
- spec/support/matchers/be_appropriate_construct_matcher.rb
|
236
|
+
- spec/support/matchers/enclose_scope_matcher.rb
|
237
|
+
- spec/support/matchers/have_accessor_matcher.rb
|
238
|
+
has_rdoc:
|