please-command-alias-manager 0.0.0-universal-darwin-10

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.
Files changed (2) hide show
  1. data/bin/please +125 -0
  2. metadata +65 -0
data/bin/please ADDED
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'yaml'
4
+ yamldir = (ENV["PLEASEDIR"]) ? ENV["PLEASEDIR"] : "/usr/local/.please"
5
+ yamlfile = yamldir + "/please.yml"
6
+
7
+ if ARGV.length == 0
8
+ puts "Please specify an alias or add a new one. --help for help."
9
+ Process.exit
10
+ end
11
+
12
+ #ensure files presence
13
+ begin
14
+ if !FileTest::directory?(yamldir)
15
+ Dir::mkdir(yamldir)
16
+ end
17
+ end
18
+
19
+ #load file
20
+ begin
21
+ aliasmap = YAML.load_file yamlfile
22
+ rescue
23
+ aliasmap = {}
24
+ end
25
+
26
+ if (!aliasmap)
27
+ aliasmap = {}
28
+ end
29
+
30
+ #collect arguments
31
+ arguments = []
32
+ ARGV.each do|a|
33
+ arguments.push(a)
34
+ #puts arguments[arguments.length - 1];
35
+ end
36
+
37
+ if (arguments[0] === '--help')
38
+ puts "\n"
39
+ puts "Please - an alias manager by David LeMieux\n\n"
40
+ puts "Commands:\n"
41
+ puts " --add 'new alias' 'aliased command' 'working dir'(optional)\n"
42
+ puts " --del 'new alias'"
43
+ puts " --list to see list of aliases\n"
44
+ puts "\n"
45
+ puts "You can store your please aliases in a custom directory by exporting PLEASEDIR\n"
46
+ puts "\n"
47
+ Process.exit
48
+ elsif (arguments[0] === '--list')
49
+ aliasmap = aliasmap.sort {|a,b| a[0]<=>b[0]}
50
+ aliasmap.each {|key, value|
51
+ puts ">" + key.rjust(30) + " = " + value["command"]
52
+ }
53
+ Process.exit
54
+ elsif (arguments[0] === '--add')
55
+ if (!arguments[1] || !arguments[2])
56
+ puts "Not enough arguments."
57
+ Process.exit
58
+ end
59
+
60
+ begin
61
+ newcommand = {"command"=>arguments[2],"dir"=>(arguments[3]||"")}
62
+ aliasmap[arguments[1]] = newcommand
63
+ File.open(yamlfile, "w") {|f| f.write((aliasmap.to_yaml()))}
64
+ rescue
65
+ puts "Error adding alias to file."
66
+ end
67
+
68
+ Process.exit
69
+ elsif (arguments[0] === '--del')
70
+ if (!arguments[1])
71
+ puts "Not enough arguments."
72
+ Process.exit
73
+ end
74
+
75
+ begin
76
+ aliasmap.delete(arguments[1])
77
+ File.open(yamlfile, "w") {|f| f.write((aliasmap.to_yaml()))}
78
+ rescue
79
+ puts "Error deleting alias from file."
80
+ end
81
+
82
+ Process.exit
83
+ end
84
+
85
+ begin
86
+ aliname = ""
87
+
88
+ arguments.each_with_index do|arg, index|
89
+ aliname << arg
90
+ if (index < arguments.length - 1)
91
+ aliname << " "
92
+ end
93
+ end
94
+
95
+ # puts aliname
96
+ ali = aliasmap[aliname]
97
+
98
+ if (ali == nil)
99
+ puts "No alias found."
100
+ Process.exit
101
+ end
102
+
103
+ if (ali["dir"] && ali["dir"] != "")
104
+ Dir.chdir(ali["dir"])
105
+ end
106
+
107
+ alicmd = ali["command"]
108
+ # puts "Command to run #{alicmd}"
109
+
110
+ #TODO loop over "tokens" in alicmd and ask for inputs
111
+ inputs = alicmd.scan(/\{([^\}]+)\}/)
112
+ inputs.each{|e|
113
+ printf "#{e[0]}: "
114
+ input = $stdin.gets.chomp
115
+ alicmd = alicmd.gsub(/\{#{e[0]}\}/, input)
116
+ }
117
+
118
+ #puts "Final command #{alicmd}"
119
+
120
+ exec( alicmd )
121
+
122
+ rescue StandardError => error
123
+ puts "Error executing alias."
124
+ puts error
125
+ end
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: please-command-alias-manager
3
+ version: !ruby/object:Gem::Version
4
+ hash: 31
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 0
10
+ version: 0.0.0
11
+ platform: universal-darwin-10
12
+ authors:
13
+ - David LeMieux
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-01-30 00:00:00 Z
19
+ dependencies: []
20
+
21
+ description: Use please to manage complex aliases and other repeatedely used terminal commands. please can normal aliases or aliases with arguments.
22
+ email: lemieuxster@gmai.com
23
+ executables:
24
+ - please
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - bin/please
31
+ homepage: http://github.com/lemieuxster/please
32
+ licenses: []
33
+
34
+ post_install_message:
35
+ rdoc_options: []
36
+
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !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
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ hash: 3
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ requirements: []
58
+
59
+ rubyforge_project:
60
+ rubygems_version: 1.8.15
61
+ signing_key:
62
+ specification_version: 3
63
+ summary: A polite alias manager.
64
+ test_files: []
65
+