ruby-shell 0.25 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rsh +28 -19
  3. metadata +3 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 585443f4d2aa3921ec34a8267e09aab78a12e3f79cdcdb59da6ea8296abb76bf
4
- data.tar.gz: a401d6baf0b938900678e48d0a81dab507f116afa1c60017bfb4657f48a3c84e
3
+ metadata.gz: b401cd958da9d499c8f83e10c0668100c8a37fe2ceada25115643c508ba79153
4
+ data.tar.gz: 14c6c94195fb174413aa92aa9b96a00dd4b7160c0321a5f12906734dbbde96f3
5
5
  SHA512:
6
- metadata.gz: 8e96de7caf23de35f75872a314b056d503576631fb758104fd11f349a18a9563f0b0073be4b346f92aaee24ccc716530ba9006410450ad80f763cefe488f1f3d
7
- data.tar.gz: b176b1a6f61a8f175de4f2509230f713c82d83be6758eb8cebf86847982cb7eb10bfc79a79c09103dc663f10ce599d03471e948098046fe3d0ad4759eda6a945
6
+ metadata.gz: aa7dadcea2331c1d524be7a987e4e6f7ed0a38e3ad8dbef5f5c4152011bb7ea9314ba4f7b73dbfc45e8a18537413e291283bdfe52b68095aeb6c7572176d385d
7
+ data.tar.gz: 160864330f697225deb7c391491266c82b1289b220724ef974609f13095bc8192196779ea99326d49524875d0da53aa2ee14d8db81b9c0308834442b09792426
data/bin/rsh CHANGED
@@ -14,7 +14,7 @@
14
14
  # for any damages resulting from its use. Further, I am under no
15
15
  # obligation to maintain or extend this software. It is provided
16
16
  # on an 'as is' basis without any expressed or implied warranty.
17
- @version = "0.25"
17
+ @version = "1.0"
18
18
 
19
19
  # MODULES, CLASSES AND EXTENSIONS
20
20
  class String # Add coloring to strings (with escaping for Readline)
@@ -270,7 +270,7 @@ def getstr # A custom Readline-like function
270
270
  case chr
271
271
  when 'C-G', 'C-C'
272
272
  @history[0] = ""
273
- return
273
+ @pos = 0
274
274
  when 'C-E' # Ctrl-C exits gracefully but without updating .rshrc
275
275
  print "\n"
276
276
  exit
@@ -357,8 +357,13 @@ def getstr # A custom Readline-like function
357
357
  when 'C-K' # Kill/delete that entry in the history
358
358
  @history.delete_at(@stk)
359
359
  @stk -= 1
360
- @history[0] = @history[@stk].dup
361
- @pos = @history[0].length
360
+ if @stk == 0
361
+ @history[0] = ""
362
+ @pos = 0
363
+ else
364
+ @history[0] = @history[@stk].dup
365
+ @pos = @history[0].length
366
+ end
362
367
  when 'LDEL' # Delete readline (Ctrl-U)
363
368
  @history[0] = ""
364
369
  @pos = 0
@@ -430,7 +435,7 @@ def tab_all(str) # TAB completion for Dirs/files, nicks and commands
430
435
  end
431
436
  def tab_switch(str) # TAB completion for command switches (TAB after "-")
432
437
  begin
433
- hlp = `#{str} --help`
438
+ hlp = `#{str} --help 2>/dev/null`
434
439
  hlp = hlp.split("\n").grep(/^\s*-{1,2}[^-]/)
435
440
  hlp = hlp.map{|h| h.sub(/^\s*/, '').sub(/^--/, ' --')}
436
441
  switch = tabselect(hlp)
@@ -462,7 +467,7 @@ def tabselect(ary, hist=false) # Let user select from the incoming array
462
467
  tl = @tabsearch.length
463
468
  if x == 0
464
469
  @c.clear_line
465
- tabchoice = ary[i].sub(/(.*?)[ ,].*/, '\1')
470
+ tabchoice = ary[i].sub(/^ *(.*?)[ ,].*/, '\1')
466
471
  tabline = "#{@prompt}#{cmd_check(@tabstr)}#{tabchoice.c(@c_tabselect)}#{@tabend}"
467
472
  print tabline # Full command line
468
473
  @c_col = @pos0 + @tabstr.length + tabchoice.length
@@ -506,7 +511,7 @@ def tabselect(ary, hist=false) # Let user select from the incoming array
506
511
  @c.clear_screen_down
507
512
  @c.row(@c_row)
508
513
  @c.col(@c_col)
509
- return ary[i]
514
+ return ary[i].sub(/^ */, '')
510
515
  end
511
516
  def nextline # Handle going to the next line in the terminal
512
517
  row, col = @c.pos
@@ -525,6 +530,8 @@ def cmd_check(str) # Check if each element on the readline matches commands, nic
525
530
  str.gsub(/\S+/) do |el|
526
531
  if @nick.include?(el)
527
532
  el.c(@c_nick)
533
+ elsif el == "r"
534
+ el.c(@c_nick)
528
535
  elsif @gnick.include?(el)
529
536
  el.c(@c_gnick)
530
537
  elsif File.exist?(el.sub(/^~/, "/home/#{@user}"))
@@ -609,7 +616,7 @@ end
609
616
 
610
617
  # INITIAL SETUP
611
618
  begin # Load .rshrc and populate @history
612
- #trap "SIGINT" do print "\n"; exit end
619
+ trap "SIGINT" do end
613
620
  firstrun unless File.exist?(Dir.home+'/.rshrc') # Initial loading - to get history
614
621
  load(Dir.home+'/.rshrc')
615
622
  ENV["SHELL"] = __FILE__
@@ -691,19 +698,21 @@ loop do
691
698
  if @cmd == "f" # fzf integration (https://github.com/junegunn/fzf)
692
699
  res = `fzf`.chomp
693
700
  Dir.chdir(File.dirname(res))
694
- else
695
- if File.exist?(@cmd) and not File.executable?(@cmd)
696
- if File.read(@cmd).force_encoding("UTF-8").valid_encoding?
697
- system("#{ENV['EDITOR']} #{@cmd}") # Try open with user's editor
701
+ elsif File.exist?(@cmd) and not File.executable?(@cmd)
702
+ if File.read(@cmd).force_encoding("UTF-8").valid_encoding?
703
+ system("#{ENV['EDITOR']} #{@cmd}") # Try open with user's editor
704
+ else
705
+ if @runmailcap
706
+ Thread.new { system("run-mailcap #{@cmd} 2>/dev/null") }
698
707
  else
699
- if @runmailcap
700
- Thread.new { system("run-mailcap #{@cmd} 2>/dev/null") }
701
- else
702
- Thread.new { system("xdg-open #{@cmd} 2>/dev/null") }
703
- end
708
+ Thread.new { system("xdg-open #{@cmd} 2>/dev/null") }
704
709
  end
705
- elsif system(@cmd) # Try execute the command
706
- else puts "No such command or nick: #{@cmd}"
710
+ end
711
+ else
712
+ begin
713
+ puts "No such command or nick: #{@cmd}" unless system (@cmd) # Try execute the command
714
+ rescue StandardError => err
715
+ puts "\n#{err}"
707
716
  end
708
717
  end
709
718
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-shell
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.25'
4
+ version: '1.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geir Isene
@@ -11,9 +11,8 @@ cert_chain: []
11
11
  date: 2023-06-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'A shell written in Ruby with extensive tab completions, aliases/nicks,
14
- history, syntax highlighting, theming and more. In continual development. New in
15
- 0.25: Ctrl-C no longer exits rsh, it cancels the current input. Ctrl-e exits without
16
- config save.'
14
+ history, syntax highlighting, theming, auto-cd, auto-opening files and more. In
15
+ continual development. New in 1.0: Several fixes. Celebrating rsh as my sole shell.'
17
16
  email: g@isene.com
18
17
  executables:
19
18
  - rsh