naksh 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +1 -0
- data/COPYING +674 -0
- data/COPYING-DOCS +15 -0
- data/README.md +45 -0
- data/Rakefile +129 -0
- data/TODO +19 -0
- data/bin/naksh +2 -0
- data/data/default.mo +0 -0
- data/data/default.po +16 -0
- data/data/default2.mo +0 -0
- data/data/default2.po +27 -0
- data/data/starter.pot +29 -0
- data/docs/bash_flow.dia +0 -0
- data/docs/gtk_manual.txt +13 -0
- data/docs/master_plan.dia +0 -0
- data/docs/master_plan.png +0 -0
- data/docs/master_plan.svg +74 -0
- data/docs/master_plan.svgz +0 -0
- data/docs/userguide/en/about.xml +42 -0
- data/docs/userguide/en/gnu-fdl-1.2.xml +543 -0
- data/docs/userguide/en/naksh.xml +881 -0
- data/docs/userguide/en/naksh_start_window.png +0 -0
- data/docs/userguide/en/old_naksh.xml +180 -0
- data/docs/userguide/en/userguide-en.omf +37 -0
- data/lib/naksh.rb +165 -0
- data/lib/naksh/buffer.rb +153 -0
- data/lib/naksh/command_handling.rb +117 -0
- data/lib/naksh/commands/bash/README +2 -0
- data/lib/naksh/commands/bash/echo.nkc.rb +50 -0
- data/lib/naksh/commands/bsd.rb +25 -0
- data/lib/naksh/commands/dos.rb +25 -0
- data/lib/naksh/commands/fuse.rb +25 -0
- data/lib/naksh/commands/gnu.rb +30 -0
- data/lib/naksh/commands/gnu/README +2 -0
- data/lib/naksh/commands/gnu/cat.nkc.rb +50 -0
- data/lib/naksh/commands/gnu/cd.nkc.rb +11 -0
- data/lib/naksh/commands/gnu/echo.documentation.json +57 -0
- data/lib/naksh/commands/gnu/echo.documentation.rb +60 -0
- data/lib/naksh/commands/gnu/echo.nkc.rb +52 -0
- data/lib/naksh/commands/gnu/ls.nkc.rb +11 -0
- data/lib/naksh/commands/gnu/mv.nkc.rb +15 -0
- data/lib/naksh/commands/gnu/pwd.nkc.rb +11 -0
- data/lib/naksh/commands/naksh/addpath.nkc.rb +15 -0
- data/lib/naksh/commands/naksh/broken.nkc.rb +10 -0
- data/lib/naksh/commands/naksh/empty.nkc.rb +4 -0
- data/lib/naksh/commands/naksh/exit.nkc.rb +10 -0
- data/lib/naksh/commands/naksh/help.nkc.rb +21 -0
- data/lib/naksh/commands/naksh/man.nkc.rb +8 -0
- data/lib/naksh/commands/ruby.rb +31 -0
- data/lib/naksh/commands/unix.rb +131 -0
- data/lib/naksh/configuration/gconf.rb +51 -0
- data/lib/naksh/configuration/hash.rb +38 -0
- data/lib/naksh/defaults.rb +40 -0
- data/lib/naksh/history.rb +85 -0
- data/lib/naksh/interfaces.rb +59 -0
- data/lib/naksh/interfaces/fox.rb +49 -0
- data/lib/naksh/interfaces/gtk.rb +103 -0
- data/lib/naksh/interfaces/gtk/abtwin.rb +53 -0
- data/lib/naksh/interfaces/gtk/gnomeapp.rb +31 -0
- data/lib/naksh/interfaces/gtk/helpwin.rb +70 -0
- data/lib/naksh/interfaces/gtk/io.rb +94 -0
- data/lib/naksh/interfaces/gtk/mainwin.rb +56 -0
- data/lib/naksh/interfaces/gtk/mainwin/console.rb +121 -0
- data/lib/naksh/interfaces/gtk/mainwin/main_menu.rb +143 -0
- data/lib/naksh/interfaces/gtk/optwin.rb +78 -0
- data/lib/naksh/interfaces/tab.rb +58 -0
- data/lib/naksh/interfaces/wxw.rb +75 -0
- data/lib/naksh/interfaces/wxw/abtwin.rb +38 -0
- data/lib/naksh/interfaces/wxw/helpwin.rb +40 -0
- data/lib/naksh/interfaces/wxw/io.rb +61 -0
- data/lib/naksh/interfaces/wxw/mainwin.rb +42 -0
- data/lib/naksh/interfaces/wxw/mainwin/main_menu.rb +126 -0
- data/lib/naksh/interfaces/wxw/mainwin/sessions.rb +49 -0
- data/lib/naksh/interfaces/wxw/optwin.rb +37 -0
- data/lib/naksh/path_entry.rb +101 -0
- data/lib/naksh/regexp.rb +31 -0
- data/lib/naksh/session.rb +72 -0
- data/lib/naksh/stdlibext.rb +48 -0
- data/lib/naksh/syntax.rb +57 -0
- data/lib/naksh/syntax/bash.rb +219 -0
- data/lib/naksh/syntax/bash/antlr/bottomup.g +24 -0
- data/lib/naksh/syntax/bash/antlr/topdown.g +52 -0
- data/lib/naksh/syntax/bash/dhaka/evaluator.rb +353 -0
- data/lib/naksh/syntax/bash/dhaka/grammar.rb +71 -0
- data/lib/naksh/syntax/bash/dhaka/lexer.rb +52 -0
- data/lib/naksh/syntax/bash/treetop/bash.treetop +17 -0
- data/lib/old/abbr_call.rb +39 -0
- data/lib/old/autocomplete.rb +29 -0
- data/lib/old/command.rb +106 -0
- data/lib/old/command_holder.rb +75 -0
- data/lib/old/commands.rb +24 -0
- data/lib/old/old_executor.rb +95 -0
- data/lib/old/options.rb +31 -0
- data/lib/old/rush.rb +113 -0
- data/lib/old/sortissimo.rb +205 -0
- data/lib/old/systems.rb +25 -0
- data/lib/old/systems/ruby.rb +26 -0
- data/lib/old/un.rb +240 -0
- data/lib/rust/Rakefile +6 -0
- data/lib/rust/commands/builtins.rb +46 -0
- data/lib/rust/commands/builtins/cd.rb +17 -0
- data/lib/rust/commands/builtins/exit.rb +13 -0
- data/lib/rust/commands/builtins/help.rb +14 -0
- data/lib/rust/commands/builtins/parser.rb +13 -0
- data/lib/rust/commands/builtins/pwd.rb +13 -0
- data/lib/rust/commands/builtins/type.rb +13 -0
- data/lib/rust/commands/commands/ls.rb +13 -0
- data/lib/rust/commands/commands/read.rb +13 -0
- data/lib/rust/commands/commands/rm.rb +14 -0
- data/lib/rust/commands/commands/test.rb +20 -0
- data/lib/rust/helpers/array.rb +10 -0
- data/lib/rust/helpers/command_center.rb +78 -0
- data/lib/rust/helpers/constants.rb +58 -0
- data/lib/rust/helpers/io.rb +132 -0
- data/lib/rust/helpers/parser.rb +45 -0
- data/lib/rust/helpers/rush_control.rb +40 -0
- data/lib/rust/helpers/string.rb +50 -0
- data/lib/rust/helpers/trollop.rb +475 -0
- data/lib/rust/parsers/bash.rb +220 -0
- data/lib/rust/parsers/bash/stdlibext.rb +32 -0
- data/lib/rust/parsers/ren.rb +57 -0
- data/lib/rust/rust.rb +75 -0
- data/lib/rust/syntax/command.rb +23 -0
- data/lib/rust/syntax/paths.rb +31 -0
- data/lib/rust/syntax/pipes.rb +148 -0
- data/naksh.gemspec +55 -0
- data/test/naksh/arg_parser.rspec.rb +27 -0
- data/test/naksh/commands/bash/echo.rspec.rb +32 -0
- data/test/naksh/commands/sortlist +127 -0
- data/test/naksh/external_command.rspec.rb +46 -0
- data/test/naksh/send_error.rspec.rb +60 -0
- data/test/naksh/suggest.rspec.rb +38 -0
- data/test/naksh/syntax/bash.rspec.rb +69 -0
- data/test/naksh/syntax/bash/execute.rspec.rb +51 -0
- data/test/naksh/syntax/rspec.rb +63 -0
- data/test/run_rspecs.rb +20 -0
- metadata +217 -0
data/lib/old/options.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
# 2011 Mahmut Bulut
|
3
|
+
|
4
|
+
# This file is part of Naksh.
|
5
|
+
#
|
6
|
+
# Naksh 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 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# Naksh 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 Naksh. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
module Naksh
|
20
|
+
def options
|
21
|
+
@options
|
22
|
+
end
|
23
|
+
class OptionsClass<Hash
|
24
|
+
def method_missing(m)
|
25
|
+
p m
|
26
|
+
self[m]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
@options=OptionsClass.new({
|
30
|
+
:suggest_on_failure?=>false}
|
31
|
+
end
|
data/lib/old/rush.rb
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
# Copyright 20.2.09-27 Ari Brown
|
3
|
+
# All pwnage reserved.
|
4
|
+
|
5
|
+
#THIS FILE IS NO LONGER USED,
|
6
|
+
#IT IS KEPT SO YOU CAN STEAL CODE AND
|
7
|
+
#USE IT IN ANOTHER FILE
|
8
|
+
|
9
|
+
require "rubygems"
|
10
|
+
|
11
|
+
module Kernel
|
12
|
+
def interactive(m, &b)
|
13
|
+
system(m)
|
14
|
+
yield
|
15
|
+
system("exit")
|
16
|
+
end
|
17
|
+
|
18
|
+
def method_missing(m, *arr)
|
19
|
+
if arr[0].is_a? Proc
|
20
|
+
interactive(m, arr[0])
|
21
|
+
else
|
22
|
+
system(m + arr.join(" "))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
alias_method(:old_system, :system)
|
27
|
+
def system(*arr)
|
28
|
+
puts *arr.join(" ")
|
29
|
+
old_system(*arr)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class Rush
|
34
|
+
attr_reader :env
|
35
|
+
|
36
|
+
class << self
|
37
|
+
|
38
|
+
def get(url, save_loco=Dir.pwd)
|
39
|
+
system("#{@env[:getter]} #{url}")
|
40
|
+
if url =~ %r(.+/([^/]+)$)
|
41
|
+
name = \1
|
42
|
+
File.new(\1, false, false)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def env(arr={})
|
47
|
+
@env[:getter] = arr[:getter] || "curl"
|
48
|
+
@env[:clean] = arr[:clean] || false
|
49
|
+
end
|
50
|
+
|
51
|
+
def clean(file)
|
52
|
+
system("rm -rf #{file}*")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
class File
|
58
|
+
|
59
|
+
TYPES = [".zip",
|
60
|
+
".tgz",
|
61
|
+
".gz",
|
62
|
+
".tar"]
|
63
|
+
UNCOMPRESS = {".zip" => "unzip",
|
64
|
+
".tgz" => "tar zxvf",
|
65
|
+
".tar" => "tar xvf",
|
66
|
+
".gz" => "gunzip"}
|
67
|
+
|
68
|
+
def __clean(name)
|
69
|
+
if @clean
|
70
|
+
system("rm -rf #{name}")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
private :clean
|
74
|
+
|
75
|
+
def initialize(file_name, clean, echo)
|
76
|
+
@type = TYPES.size.times do |i, type|
|
77
|
+
i = []
|
78
|
+
|
79
|
+
if file_name =~ %r((\.zip|\.tgz|\.tar|\.gz)$)
|
80
|
+
i << $1
|
81
|
+
end
|
82
|
+
|
83
|
+
i.reverse.join("")
|
84
|
+
end
|
85
|
+
@name = file_name - @type
|
86
|
+
@clean = clean
|
87
|
+
$echo = echo
|
88
|
+
end
|
89
|
+
|
90
|
+
def unpack
|
91
|
+
system(UNCOMPRESS[@type] + (@name + @type))
|
92
|
+
__clean(@name + @type)
|
93
|
+
end
|
94
|
+
|
95
|
+
def configure(*args)
|
96
|
+
system("cd #{@name}")
|
97
|
+
system("./configure" + args.join(" "))
|
98
|
+
system("cd ..")
|
99
|
+
end
|
100
|
+
|
101
|
+
def make
|
102
|
+
system("make")
|
103
|
+
end
|
104
|
+
|
105
|
+
def install
|
106
|
+
system("sudo make install")
|
107
|
+
end
|
108
|
+
|
109
|
+
def minstall
|
110
|
+
make
|
111
|
+
install
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,205 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
# 2011 Mahmut Bulut
|
3
|
+
|
4
|
+
# This file is part of Naksh.
|
5
|
+
#
|
6
|
+
# Naksh 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 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# Naksh 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 Naksh. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
#this library is not capable of performing sorts using UNIX sort order
|
20
|
+
#because a<A<aa
|
21
|
+
#however, I am leaving it in until I figure out the right order.
|
22
|
+
|
23
|
+
#Need to replace this with proper method
|
24
|
+
#cant remember right now
|
25
|
+
class Array
|
26
|
+
alias_method :merge,:+
|
27
|
+
def merge!(other_arr)
|
28
|
+
self.replace(self.merge(other_arr))
|
29
|
+
end
|
30
|
+
end
|
31
|
+
#sortObjects(objects,order,options,&block)
|
32
|
+
#objects is an array of objects to be sorted
|
33
|
+
#order is an array in the order the objects are to be arranged or a hash with a pointer to a nonnegative integer
|
34
|
+
#others is either :beginning or :end, anything else raises an exception
|
35
|
+
#if unlisted==:beginning, unlisted objects are prepended in the order they are given in +objects+
|
36
|
+
#if unlisted==:end, unlisted objects are appended in the order they are given in +objects+
|
37
|
+
#If a block is given, it will be executed whenever an element of +objects+ is unlisted in +order+, it will be passed that object
|
38
|
+
def sort_objects(objects,order,unlisted=:end,&block)
|
39
|
+
raise ArgumentError,'3rd argument must be :beginning, :end, or :omit' if unlisted != :beginning and unlisted != :end and unlisted != :omit
|
40
|
+
begin
|
41
|
+
objects.replace(objects.to_ary)
|
42
|
+
rescue
|
43
|
+
raise ArgumentError,'1st argument must be an array'
|
44
|
+
end
|
45
|
+
begin
|
46
|
+
order.replace(order.to_ary)
|
47
|
+
rescue
|
48
|
+
begin
|
49
|
+
order.replace(order.to_hash)
|
50
|
+
rescue
|
51
|
+
raise ArgumentError,"2nd argument must respond to either to_ary or to_hsh #{order.inspect}"
|
52
|
+
end
|
53
|
+
raise ArgumentError,"second_argument.to_hash does not return a Hash #{order.inspect}" unless order.kind_of? Hash
|
54
|
+
end
|
55
|
+
#what's the proper error for object.to_ary is not an array?
|
56
|
+
raise ArgumentError,"second_argument.to_ary does not return an Array #{order.inspect}" unless order.kind_of? Array
|
57
|
+
result=[]
|
58
|
+
unlisted=[] if others
|
59
|
+
objects.each do |obj|
|
60
|
+
if order.class==Array
|
61
|
+
i=order.index(obj)
|
62
|
+
else
|
63
|
+
i=order[obj]
|
64
|
+
end
|
65
|
+
if i
|
66
|
+
#in case a hash points to something other than a nonnegative integer of class Fixnum
|
67
|
+
if order.class==Hash
|
68
|
+
begin
|
69
|
+
ni=i.to_i
|
70
|
+
#gets caught
|
71
|
+
raise ArgumentError unless i==ni
|
72
|
+
i=ni
|
73
|
+
ni=nil
|
74
|
+
rescue
|
75
|
+
raise ArgumentError,'2nd Argument (hashlike) has keys pointing to nonintegers'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
if result[i]
|
79
|
+
result[i]<< obj
|
80
|
+
else
|
81
|
+
result[i]=[obj]
|
82
|
+
end
|
83
|
+
else
|
84
|
+
if block
|
85
|
+
#should blocks be allowed to modify obj?
|
86
|
+
yield(obj)
|
87
|
+
end
|
88
|
+
if unlisted != :omit
|
89
|
+
begin
|
90
|
+
unlisted<< obj
|
91
|
+
rescue
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
result.compact!
|
97
|
+
result.flatten!
|
98
|
+
if unlisted != :omit# or result.empty? #what is this?
|
99
|
+
if unlisted==:beginning
|
100
|
+
return unlisted.merge(result)
|
101
|
+
elsif unlisted==:end
|
102
|
+
return result.merge(unlisted)
|
103
|
+
else
|
104
|
+
raise RuntimeError,"internal problem with sortissimo; unlisted is not :omit, :beginning, or :end. This should have been checked earlier [#{unlisted.inspect}]"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
result
|
108
|
+
end
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
#make nil allowed in order set
|
114
|
+
#[a,b,nil,c]
|
115
|
+
#this was a bad attempt to apply sort_objects to strings and arrays
|
116
|
+
def sort_ordered_objects(objects,order,others=:end,element=0,&block)
|
117
|
+
$stderr.puts('this does not appear to work.')
|
118
|
+
raise ArgumentError,'3rd argument must be falsy or :beginning or :end' if others and others != :beginning and others != :end
|
119
|
+
begin
|
120
|
+
objects.replace(objects.to_ary)
|
121
|
+
rescue
|
122
|
+
raise ArgumentError,'1st argument must be an array'
|
123
|
+
end
|
124
|
+
begin
|
125
|
+
order.replace(order.to_ary)
|
126
|
+
rescue
|
127
|
+
begin
|
128
|
+
order.replace(order.to_hash)
|
129
|
+
rescue
|
130
|
+
raise ArgumentError,"2nd argument must respond to either to_ary or to_hsh #{order.inspect}"
|
131
|
+
end
|
132
|
+
raise ArgumentError,"second_argument.to_hash does not return a Hash #{order.inspect}" unless order.kind_of? Hash
|
133
|
+
end
|
134
|
+
#what's the proper error for object.to_ary is not an array?
|
135
|
+
raise ArgumentError,"second_argument.to_ary does not return an Array #{order.inspect}" unless order.kind_of? Array
|
136
|
+
result=[]
|
137
|
+
unlisted=[] if others
|
138
|
+
objects.each do |obj|
|
139
|
+
if order.class==Array
|
140
|
+
i=order.index(obj[element])
|
141
|
+
else
|
142
|
+
i=order[obj[element]]
|
143
|
+
end
|
144
|
+
if i
|
145
|
+
#in case a hash points to something other than a nonnegative integer of class Fixnum
|
146
|
+
if order.class==Hash
|
147
|
+
begin
|
148
|
+
ni=i.to_i
|
149
|
+
#gets caught
|
150
|
+
raise ArgumentError unless i==ni
|
151
|
+
i=ni
|
152
|
+
ni=nil
|
153
|
+
rescue
|
154
|
+
raise ArgumentError,'2nd Argument (hashlike) has keys pointing to nonintegers'
|
155
|
+
end
|
156
|
+
end
|
157
|
+
if result[i]
|
158
|
+
result[i]<< obj
|
159
|
+
else
|
160
|
+
result[i]=[obj]
|
161
|
+
end
|
162
|
+
else
|
163
|
+
if block
|
164
|
+
#should blocks be allowed to modify obj?
|
165
|
+
yield(obj)
|
166
|
+
end
|
167
|
+
if others
|
168
|
+
begin
|
169
|
+
unlisted<< obj
|
170
|
+
rescue
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
result.compact!
|
176
|
+
result.collect do entry
|
177
|
+
entry.kind_of? Array ? entry=sort_ordered_objects(entry,order,others,element.next) : entry
|
178
|
+
end
|
179
|
+
result.flatten!
|
180
|
+
if others or result.empty?
|
181
|
+
if others==:beginning
|
182
|
+
return unlisted.merge(result)
|
183
|
+
else#if others==:end#argument checked earlier
|
184
|
+
return result.merge(unlisted)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
result
|
188
|
+
end
|
189
|
+
|
190
|
+
a=[4,6,'a']
|
191
|
+
b={5=>a,:6=>'ahr'}
|
192
|
+
c=nil
|
193
|
+
d=3
|
194
|
+
e=:6
|
195
|
+
f=Object.new
|
196
|
+
class<<f
|
197
|
+
undef_method :==,:===,'=~'.intern,:args_and_options,:class,:clone,:dclone,:deep_clone,:display,:dup,:enum_for,:eql?,:equal?,:extend,:freeze,:frozen?,:hash,:id,:inspect,:instance_eval,:instance_of?,:instance_variable_defined?,:instance_variable_get,:instance_variable_set,:instance_variables,:is_a?,:is_one_of?,:kind_of?,:metaclass,:method,:methods,:nil?,:object_id,:private_methods,:protected_methods,:public_methods,:remove_instance_variable,:respond_to?,:rollback!,:send,:singleton_method_added,:singleton_method_removed,:singleton_method_undefined,:singleton_methods,:taint,:tainted?,:to_a,:to_enum,:to_s,:to_yaml,:to_yaml_properties,:to_yaml_style,:type,:untaint,'`'.intern,:abort,:at_exit,:autoload,:autoload?,:binding,:block_given?,:callcc,:caller,:catch,:chomp,:chomp!,:chop,:chop!,:context,:describe,:eval,:exec,:exit,:exit!,:fail,:fork,:format,:gem,:getc,:gets,:global_variables,:gsub,:gsub!,:iterator?,:lambda,:load,:local_variables,:loop,:method_missing,:open,:open_uri_original_open,:p,:pp,:pretty_inspect,:print,:printf,:proc,:putc,:puts,:raise,:rand,:readline,:readlines,:require,:require_gem,:respond_to,:scan,:scanf,:select,:set_trace_func,:sleep,:split,:sprintf,:srand,:sub,:sub!,:syscall,:system,:test,:throw,:trace_var,:trap,:untrace_var,:warn,:y,:pretty_print,:pretty_print_cycle,:pretty_print_inspect,:pretty_print_instance_variables
|
198
|
+
def method_missing(*args,&block)
|
199
|
+
p args,block
|
200
|
+
yield block
|
201
|
+
*args
|
202
|
+
end
|
203
|
+
end
|
204
|
+
p f.methods
|
205
|
+
sort_objects([a,b,c,d,e,f],[b,e,c,a,f,d],:end,0){|*args|p args;args}
|
data/lib/old/systems.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
# 2011 Mahmut Bulut
|
3
|
+
|
4
|
+
# This file is part of Naksh.
|
5
|
+
#
|
6
|
+
# Naksh 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 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# Naksh 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 Naksh. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
module Naksh
|
20
|
+
#these should be really dumb
|
21
|
+
#only use when there isn't a cross-platform way
|
22
|
+
#good example is expanding '~/'
|
23
|
+
module Systems
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
# 2011 Mahmut Bulut
|
3
|
+
# GPLv3 License
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
module Naksh
|
8
|
+
module Systems
|
9
|
+
module Ruby
|
10
|
+
def Ruby.delete(file_path)
|
11
|
+
File.del(file_path)
|
12
|
+
end
|
13
|
+
def Ruby.make_dir(dir_name,folder=Naksh.current_dir)
|
14
|
+
File.mkdir(dir_name,folder=Naksh.current_dir)
|
15
|
+
end
|
16
|
+
def Ruby.make_file(file_name,folder=Naksh.current_dir)
|
17
|
+
end
|
18
|
+
def Ruby.move(file_path,destination_dir)
|
19
|
+
File.mv(file_path,destination_dir)
|
20
|
+
end
|
21
|
+
def Ruby.rename(file_path,new_name)
|
22
|
+
File.rename(file_path,new_name)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/old/un.rb
ADDED
@@ -0,0 +1,240 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
# 2003 WATANABE Hirofumi
|
3
|
+
# Ruby License
|
4
|
+
|
5
|
+
#http://www.atdot.net/~ko1/w3ml/w3ml.cgi/yarv-diff/msg/152
|
6
|
+
#
|
7
|
+
# = un.rb
|
8
|
+
#
|
9
|
+
# Copyright (c) 2003 WATANABE Hirofumi <eban ruby-lang.org>
|
10
|
+
#
|
11
|
+
# This program is free software.
|
12
|
+
# You can distribute/modify this program under the same terms of Ruby.
|
13
|
+
#
|
14
|
+
# == Utilities to replace common UNIX commands in Makefiles etc
|
15
|
+
#
|
16
|
+
# == SYNOPSIS
|
17
|
+
#
|
18
|
+
# ruby -run -e cp -- [OPTION] SOURCE DEST
|
19
|
+
# ruby -run -e ln -- [OPTION] TARGET LINK_NAME
|
20
|
+
# ruby -run -e mv -- [OPTION] SOURCE DEST
|
21
|
+
# ruby -run -e rm -- [OPTION] FILE
|
22
|
+
# ruby -run -e mkdir -- [OPTION] DIRS
|
23
|
+
# ruby -run -e rmdir -- [OPTION] DIRS
|
24
|
+
# ruby -run -e install -- [OPTION] SOURCE DEST
|
25
|
+
# ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE
|
26
|
+
# ruby -run -e touch -- [OPTION] FILE
|
27
|
+
# ruby -run -e help [COMMAND]
|
28
|
+
|
29
|
+
require "fileutils"
|
30
|
+
require "optparse"
|
31
|
+
|
32
|
+
module FileUtils
|
33
|
+
# @fileutils_label = ""
|
34
|
+
@fileutils_output = $stdout
|
35
|
+
end
|
36
|
+
|
37
|
+
def setup(options = "")
|
38
|
+
ARGV.map! do |x|
|
39
|
+
case x
|
40
|
+
when /^-/
|
41
|
+
x.delete "^-#{options}v"
|
42
|
+
when /[*?\[{]/
|
43
|
+
Dir[x]
|
44
|
+
else
|
45
|
+
x
|
46
|
+
end
|
47
|
+
end
|
48
|
+
ARGV.flatten!
|
49
|
+
ARGV.delete_if{|x| x == "-"}
|
50
|
+
opt_hash = {}
|
51
|
+
OptionParser.new do |o|
|
52
|
+
options.scan(/.:?/) do |s|
|
53
|
+
o.on("-" + s.tr(":", " ")) do |val|
|
54
|
+
opt_hash[s.delete(":").intern] = val
|
55
|
+
end
|
56
|
+
end
|
57
|
+
o.on("-v") do opt_hash[:verbose] = true end
|
58
|
+
o.parse!
|
59
|
+
end
|
60
|
+
yield ARGV, opt_hash
|
61
|
+
end
|
62
|
+
|
63
|
+
##
|
64
|
+
# Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY
|
65
|
+
#
|
66
|
+
# ruby -run -e cp -- [OPTION] SOURCE DEST
|
67
|
+
#
|
68
|
+
# -p preserve file attributes if possible
|
69
|
+
# -r copy recursively
|
70
|
+
# -v verbose
|
71
|
+
#
|
72
|
+
|
73
|
+
def cp
|
74
|
+
setup("pr") do |argv, options|
|
75
|
+
cmd = "cp"
|
76
|
+
cmd += "_r" if options.delete :r
|
77
|
+
options[:preserve] = true if options.delete :p
|
78
|
+
dest = argv.pop
|
79
|
+
argv = argv[0] if argv.size == 1
|
80
|
+
FileUtils.send cmd, argv, dest, options
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
##
|
85
|
+
# Create a link to the specified TARGET with LINK_NAME.
|
86
|
+
#
|
87
|
+
# ruby -run -e ln -- [OPTION] TARGET LINK_NAME
|
88
|
+
#
|
89
|
+
# -s make symbolic links instead of hard links
|
90
|
+
# -f remove existing destination files
|
91
|
+
# -v verbose
|
92
|
+
#
|
93
|
+
|
94
|
+
def ln
|
95
|
+
setup("sf") do |argv, options|
|
96
|
+
cmd = "ln"
|
97
|
+
cmd += "_s" if options.delete :s
|
98
|
+
options[:force] = true if options.delete :f
|
99
|
+
dest = argv.pop
|
100
|
+
argv = argv[0] if argv.size == 1
|
101
|
+
FileUtils.send cmd, argv, dest, options
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
##
|
106
|
+
# Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
|
107
|
+
#
|
108
|
+
# ruby -run -e mv -- [OPTION] SOURCE DEST
|
109
|
+
#
|
110
|
+
# -v verbose
|
111
|
+
#
|
112
|
+
|
113
|
+
def mv
|
114
|
+
setup do |argv, options|
|
115
|
+
dest = argv.pop
|
116
|
+
argv = argv[0] if argv.size == 1
|
117
|
+
FileUtils.mv argv, dest, options
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
##
|
122
|
+
# Remove the FILE
|
123
|
+
#
|
124
|
+
# ruby -run -e rm -- [OPTION] FILE
|
125
|
+
#
|
126
|
+
# -f ignore nonexistent files
|
127
|
+
# -r remove the contents of directories recursively
|
128
|
+
# -v verbose
|
129
|
+
#
|
130
|
+
|
131
|
+
def rm
|
132
|
+
setup("fr") do |argv, options|
|
133
|
+
cmd = "rm"
|
134
|
+
cmd += "_r" if options.delete :r
|
135
|
+
options[:force] = true if options.delete :f
|
136
|
+
FileUtils.send cmd, argv, options
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
##
|
141
|
+
# Create the DIR, if they do not already exist.
|
142
|
+
#
|
143
|
+
# ruby -run -e mkdir -- [OPTION] DIR
|
144
|
+
#
|
145
|
+
# -p no error if existing, make parent directories as needed
|
146
|
+
# -v verbose
|
147
|
+
#
|
148
|
+
|
149
|
+
def mkdir
|
150
|
+
setup("p") do |argv, options|
|
151
|
+
cmd = "mkdir"
|
152
|
+
cmd += "_p" if options.delete :p
|
153
|
+
FileUtils.send cmd, argv, options
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
##
|
158
|
+
# Remove the DIR.
|
159
|
+
#
|
160
|
+
# ruby -run -e rmdir -- [OPTION] DIR
|
161
|
+
#
|
162
|
+
# -v verbose
|
163
|
+
#
|
164
|
+
|
165
|
+
def rmdir
|
166
|
+
setup do |argv, options|
|
167
|
+
FileUtils.rmdir argv, options
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
##
|
172
|
+
# Copy SOURCE to DEST.
|
173
|
+
#
|
174
|
+
# ruby -run -e install -- [OPTION] SOURCE DEST
|
175
|
+
#
|
176
|
+
# -p apply access/modification times of SOURCE files to
|
177
|
+
# corresponding destination files
|
178
|
+
# -m set permission mode (as in chmod), instead of 0755
|
179
|
+
# -v verbose
|
180
|
+
#
|
181
|
+
|
182
|
+
def install
|
183
|
+
setup("pm:") do |argv, options|
|
184
|
+
options[:mode] = (mode = options.delete :m) ? mode.oct : 0755
|
185
|
+
options[:preserve] = true if options.delete :p
|
186
|
+
dest = argv.pop
|
187
|
+
argv = argv[0] if argv.size == 1
|
188
|
+
FileUtils.install argv, dest, options
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
##
|
193
|
+
# Change the mode of each FILE to OCTAL-MODE.
|
194
|
+
#
|
195
|
+
# ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE
|
196
|
+
#
|
197
|
+
# -v verbose
|
198
|
+
#
|
199
|
+
|
200
|
+
def chmod
|
201
|
+
setup do |argv, options|
|
202
|
+
mode = argv.shift.oct
|
203
|
+
FileUtils.chmod mode, argv, options
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
##
|
208
|
+
# Update the access and modification times of each FILE to the current time.
|
209
|
+
#
|
210
|
+
# ruby -run -e touch -- [OPTION] FILE
|
211
|
+
#
|
212
|
+
# -v verbose
|
213
|
+
#
|
214
|
+
|
215
|
+
def touch
|
216
|
+
setup do |argv, options|
|
217
|
+
FileUtils.touch argv, options
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
##
|
222
|
+
# Display help message.
|
223
|
+
#
|
224
|
+
# ruby -run -e help [COMMAND]
|
225
|
+
#
|
226
|
+
|
227
|
+
def help
|
228
|
+
setup do |argv,|
|
229
|
+
all = argv.empty?
|
230
|
+
open(__FILE__) do |me|
|
231
|
+
while me.gets("##\n")
|
232
|
+
if help = me.gets("\n\n")
|
233
|
+
if all or argv.delete help[/-e \w+/].sub(/-e /, "")
|
234
|
+
print help.gsub(/^# ?/, "")
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
end
|