vagrant aliases proof-of-concept
This commit is contained in:
parent
d075f183ac
commit
bbb3cdaa9a
|
@ -83,6 +83,7 @@ require "vagrant/registry"
|
||||||
|
|
||||||
module Vagrant
|
module Vagrant
|
||||||
autoload :Action, 'vagrant/action'
|
autoload :Action, 'vagrant/action'
|
||||||
|
autoload :Alias, 'vagrant/alias'
|
||||||
autoload :BatchAction, 'vagrant/batch_action'
|
autoload :BatchAction, 'vagrant/batch_action'
|
||||||
autoload :Box, 'vagrant/box'
|
autoload :Box, 'vagrant/box'
|
||||||
autoload :BoxCollection, 'vagrant/box_collection'
|
autoload :BoxCollection, 'vagrant/box_collection'
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
require "vagrant/registry"
|
||||||
|
|
||||||
|
module Vagrant
|
||||||
|
# This class imports and processes CLI aliases stored in ~/.vagrant.d/aliases
|
||||||
|
class Alias
|
||||||
|
def initialize(env)
|
||||||
|
@aliases = Registry.new
|
||||||
|
|
||||||
|
aliases_file = env.home_path.join("aliases")
|
||||||
|
if aliases_file.file?
|
||||||
|
aliases_file.readlines.each do |line|
|
||||||
|
# skip comments
|
||||||
|
next if line.strip.start_with?("#")
|
||||||
|
|
||||||
|
# separate keyword-command pairs
|
||||||
|
keyword, command = line.split("=").collect(&:strip)
|
||||||
|
|
||||||
|
@aliases.register(keyword.to_sym) do
|
||||||
|
lambda do |args|
|
||||||
|
# directly execute shell commands
|
||||||
|
if command.start_with?("!")
|
||||||
|
return exec "#{command[1..-1]} #{args.join(" ")}".strip
|
||||||
|
end
|
||||||
|
|
||||||
|
return CLI.new(command.split.concat(args), env).execute
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def commands
|
||||||
|
@aliases
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -26,6 +26,14 @@ module Vagrant
|
||||||
command_plugin = nil
|
command_plugin = nil
|
||||||
if @sub_command
|
if @sub_command
|
||||||
command_plugin = Vagrant.plugin("2").manager.commands[@sub_command.to_sym]
|
command_plugin = Vagrant.plugin("2").manager.commands[@sub_command.to_sym]
|
||||||
|
|
||||||
|
if !command_plugin
|
||||||
|
alias_command = Alias.new(@env).commands[@sub_command.to_sym]
|
||||||
|
|
||||||
|
if alias_command
|
||||||
|
return alias_command.call(@sub_args)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if !command_plugin || !@sub_command
|
if !command_plugin || !@sub_command
|
||||||
|
|
Loading…
Reference in New Issue