Giter VIP home page Giter VIP logo

fsh's Introduction

Typing SVG

I currently work as the Lead Security Engineer at Flux Federation in Wellington, Aotearoa / New Zealand. My pronouns are He/Him.

Most of my projects are game attempts or game-adjacent tools, utility functions, a few sample/reference projects, and things I've forked to keep a copy of. I mainly code in Rust, but past favourite languages have included F# and Go. Enjoy, and if you have any questions of any nature, feel free to reach out. My personal email address is [email protected].

I'm a big fan of the TryHackMe infosec learning platform. Find me on there as Aquinas.

Like my stuff and want to encourage me to do more of it? Buy me a coffee!

ko-fi

My GitHub stats

fsh's People

Contributors

chrispritchard avatar nojaf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fsh's Issues

[Windows] Crashes when window is resized to be smaller and accessing history

To reproduce:

  1. Type echo 0123456789ABCDEF into the shell
  2. Resize the window to be a very small width
  3. Try to recall the previous line by pressing the up arrow, crashing the program

Screenshot of shell after reproduction step 1

Screenshot of shell after reproduction step 2

Screenshot of shell after reproduction step 3

System.ArgumentOutOfRangeException
  HResult=0x80131502
  Message=The value must be greater than or equal to zero and less than the console's buffer size in that dimension.
Parameter name: left
Actual value was 30.
  Source=System.Console
  StackTrace:
   at System.ConsolePal.SetCursorPosition(Int32 left, Int32 top) in E:\A\_work\297\s\corefx\src\System.Console\src\System\ConsolePal.Windows.cs:line 794
   at System.Console.SetCursorPosition(Int32 left, Int32 top) in E:\A\_work\297\s\corefx\src\System.Console\src\System\Console.cs:line 329
   at System.Console.set_CursorLeft(Int32 value) in E:\A\_work\297\s\corefx\src\System.Console\src\System\Console.cs:line 265
   at [email protected](Int32 priorIndex, String soFar, Int32 pos) in C:\Users\Akeeton\dev\FSH\src\LineReader.fs:line 86
   at LineReader.readLine(FSharpList`1 prior) in C:\Users\Akeeton\dev\FSH\src\LineReader.fs:line 172
   at [email protected](FSharpList`1 prior) in C:\Users\Akeeton\dev\FSH\src\Program.fs:line 164
   at Program.main(String[] _arg1) in C:\Users\Akeeton\dev\FSH\src\Program.fs:line 171

No release links which mentioned on the README.md

Additionally, there are precompiled releases available. These were pre-built using dotnet publish for win-x64, linux-x64 and osx-x64, and should run without needing the framework installed. Access these from the releases link.

But there is no release links

Support loading RC files

A .rc file, a run command file, is a file that is loaded and run on startup. FSH could support these for loading precommands: e.g., you could define 'grep' as (fun args -> ...) then this would be compiled and interpreted as possibly a built-in on load

Rework console buffer approach

This would help solve issues #10 and #15 I believe.

Instead of a string array and caps on length based on line position, find something a little more abstract - perhaps typed lines and history can be stored and processed in a way agnostic of the UI? This would allow better flexibility based on the state of the terminal.

For example, cmd on windows when resized does a word wrap on written text - this isn't possible in the current state of fsh. It might result in unreadable F# (typed in) but is better than the issue from #15 where we just crash. Alternatively, powershell doesn't wrap but also permits horizontal scrolling. Text is never 'capped'. This would also solve #15, and maybe #10 too, and would be better for code.

External process output is occasionally swallowed

For example, running git clone https://github.com/chrispritchard/fsh will render nothing to the screen. However git pull from a git dir will output as normal (up to 'date with master', etc). Note, even though the former instruction renders no output, it still works fine.

My theory is that external processes that manipulate the outstream, e.g. by rendering a progress bar, are not being connected properly by the process launcher function.

Performance on linux/osx

Performance of printing is atrocious on unix systems. Suspect this due to known problems using cursor top.

Add pre-compiled releases for various platforms

This might make it easier to use FSH, if users don't need to have .net core installed and build expertise in order to get going. On the other hand, the project is a bit educational re F#/dotnet core... so... but better to be egalitarian anyway.

Add version info on startup

Right now, FSH has a simple title on startup. Support adding a version number? Possibly from a git command or extract?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.