Top Level Namespace

Includes:
HighLine::SystemExtensions

Defined Under Namespace

Modules: BuiltinCommands, CommandCenter, FileUtils, Kernel, Naksh, Parser, Paths, Pipes, Ren Classes: Array, AutoComplete, BashDhakaEvaluator, BashDhakaGrammar, BashDhakaLexerSpecification, ChittagongExceptionResult, ChittagongResult, ChittagongSuccessResult, Command, CompatibilityError, Function, Hell, InOut, NkcLoadError, NoCommandError, NoGuessError, NotExpectedFiletypeError, PathEntry, Pathname, Regexp, Rust, String

Constant Summary collapse

ERASE_CHAR =

Created by me on 2011-12-07.

Copyright (c) 2011. All pwnage reserved.
"\e[P"
CLEAR =

Did I mention this is ripped from JEG2’s HighLine

"\e[0m"
BOLD =

The start of an ANSI bold sequence.

"\e[1m"
DARK =

The start of an ANSI dark sequence. (Terminal support uncommon.)

"\e[2m"
UNDERLINE =

The start of an ANSI underline sequence.

"\e[4m"
UNDERSCORE =

An alias for UNDERLINE.

UNDERLINE
"\e[5m"
REVERSE =

The start of an ANSI reverse sequence.

"\e[7m"
CONCEALED =

The start of an ANSI concealed sequence. (Terminal support uncommon.)

"\e[8m"
BLACK =

Set the terminal’s foreground ANSI color to black.

"\e[30m"
RED =

Set the terminal’s foreground ANSI color to red.

"\e[31m"
GREEN =

Set the terminal’s foreground ANSI color to green.

"\e[32m"
YELLOW =

Set the terminal’s foreground ANSI color to yellow.

"\e[33m"
BLUE =

Set the terminal’s foreground ANSI color to blue.

"\e[34m"
MAGENTA =

Set the terminal’s foreground ANSI color to magenta.

"\e[35m"
CYAN =

Set the terminal’s foreground ANSI color to cyan.

"\e[36m"
WHITE =

Set the terminal’s foreground ANSI color to white.

"\e[37m"
ON_BLACK =

Set the terminal’s background ANSI color to black.

"\e[40m"
ON_RED =

Set the terminal’s background ANSI color to red.

"\e[41m"
ON_GREEN =

Set the terminal’s background ANSI color to green.

"\e[42m"
ON_YELLOW =

Set the terminal’s background ANSI color to yellow.

"\e[43m"
ON_BLUE =

Set the terminal’s background ANSI color to blue.

"\e[44m"
ON_MAGENTA =

Set the terminal’s background ANSI color to magenta.

"\e[45m"
ON_CYAN =

Set the terminal’s background ANSI color to cyan.

"\e[46m"
ON_WHITE =

Set the terminal’s background ANSI color to white.

"\e[47m"

Instance Method Summary collapse

Instance Method Details

#_(str) ⇒ Object

hack to make stuff work if you don’t use gettext



60
61
62
# File 'lib/naksh.rb', line 60

def _(str)
  str
end

#chmodObject

Change the mode of each FILE to OCTAL-MODE.

ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE

-v    verbose


200
201
202
203
204
205
# File 'lib/old/un.rb', line 200

def chmod
  setup do |argv, options|
    mode = argv.shift.oct
    FileUtils.chmod mode, argv, options
  end
end

#cpObject

Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY

ruby -run -e cp -- [OPTION] SOURCE DEST

-p    preserve file attributes if possible
-r    copy recursively
-v    verbose


73
74
75
76
77
78
79
80
81
82
# File 'lib/old/un.rb', line 73

def cp
  setup("pr") do |argv, options|
    cmd = "cp"
    cmd += "_r" if options.delete :r
    options[:preserve] = true if options.delete :p
    dest = argv.pop
    argv = argv[0] if argv.size == 1
    FileUtils.send cmd, argv, dest, options
  end
end

#helpObject

Display help message.

ruby -run -e help [COMMAND]


227
228
229
230
231
232
233
234
235
236
237
238
239
240
# File 'lib/old/un.rb', line 227

def help
  setup do |argv,|
    all = argv.empty?
    open(__FILE__) do |me|
      while me.gets("##\n")
        if help = me.gets("\n\n")
          if all or argv.delete help[/-e \w+/].sub(/-e /, "")
            print help.gsub(/^# ?/, "")
          end
        end
      end
    end
  end
end

#installObject

Copy SOURCE to DEST.

ruby -run -e install -- [OPTION] SOURCE DEST

-p    apply access/modification times of SOURCE files to
      corresponding destination files
-m    set permission mode (as in chmod), instead of 0755
-v    verbose


182
183
184
185
186
187
188
189
190
# File 'lib/old/un.rb', line 182

def install
  setup("pm:") do |argv, options|
    options[:mode] = (mode = options.delete :m) ? mode.oct : 0755
    options[:preserve] = true if options.delete :p
    dest = argv.pop
    argv = argv[0] if argv.size == 1
    FileUtils.install argv, dest, options
  end
end

#lnObject

Create a link to the specified TARGET with LINK_NAME.

ruby -run -e ln -- [OPTION] TARGET LINK_NAME

-s    make symbolic links instead of hard links
-f    remove existing destination files
-v    verbose


94
95
96
97
98
99
100
101
102
103
# File 'lib/old/un.rb', line 94

def ln
  setup("sf") do |argv, options|
    cmd = "ln"
    cmd += "_s" if options.delete :s
    options[:force] = true if options.delete :f
    dest = argv.pop
    argv = argv[0] if argv.size == 1
    FileUtils.send cmd, argv, dest, options
  end
end

#mkdirObject

Create the DIR, if they do not already exist.

ruby -run -e mkdir -- [OPTION] DIR

-p    no error if existing, make parent directories as needed
-v    verbose


149
150
151
152
153
154
155
# File 'lib/old/un.rb', line 149

def mkdir
  setup("p") do |argv, options|
    cmd = "mkdir"
    cmd += "_p" if options.delete :p
    FileUtils.send cmd, argv, options
  end
end

#mvObject

Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

ruby -run -e mv -- [OPTION] SOURCE DEST

-v    verbose


113
114
115
116
117
118
119
# File 'lib/old/un.rb', line 113

def mv
  setup do |argv, options|
    dest = argv.pop
    argv = argv[0] if argv.size == 1
    FileUtils.mv argv, dest, options
  end
end

#rmObject

Remove the FILE

ruby -run -e rm -- [OPTION] FILE

-f    ignore nonexistent files
-r    remove the contents of directories recursively
-v    verbose


131
132
133
134
135
136
137
138
# File 'lib/old/un.rb', line 131

def rm
  setup("fr") do |argv, options|
    cmd = "rm"
    cmd += "_r" if options.delete :r
    options[:force] = true if options.delete :f
    FileUtils.send cmd, argv, options
  end
end

#rmdirObject

Remove the DIR.

ruby -run -e rmdir -- [OPTION] DIR

-v    verbose


165
166
167
168
169
# File 'lib/old/un.rb', line 165

def rmdir
  setup do |argv, options|
    FileUtils.rmdir argv, options
  end
end

#setup(options = "") {|ARGV, opt_hash| ... } ⇒ Object

Yields:

  • (ARGV, opt_hash)


37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/old/un.rb', line 37

def setup(options = "")
  ARGV.map! do |x|
    case x
    when /^-/
      x.delete "^-#{options}v"
    when /[*?\[{]/
      Dir[x]
    else
      x
    end
  end
  ARGV.flatten!
  ARGV.delete_if{|x| x == "-"}
  opt_hash = {}
  OptionParser.new do |o|
    options.scan(/.:?/) do |s|
      o.on("-" + s.tr(":", " ")) do |val|
        opt_hash[s.delete(":").intern] = val
      end
    end
    o.on("-v") do opt_hash[:verbose] = true end
    o.parse!
  end
  yield ARGV, opt_hash
end

#touchObject

Update the access and modification times of each FILE to the current time.

ruby -run -e touch -- [OPTION] FILE

-v    verbose


215
216
217
218
219
# File 'lib/old/un.rb', line 215

def touch
  setup do |argv, options|
    FileUtils.touch argv, options
  end
end