| 1 | ! ============================================================================== |
| 2 | ! Version Module for Fortran Shell |
| 3 | ! ============================================================================== |
| 4 | ! Update FORTSH_VERSION on each release |
| 5 | module version |
| 6 | implicit none |
| 7 | private |
| 8 | public :: FORTSH_VERSION, print_version, print_help |
| 9 | |
| 10 | character(len=*), parameter :: FORTSH_VERSION = "1.7.0" |
| 11 | |
| 12 | contains |
| 13 | |
| 14 | subroutine print_version() |
| 15 | use iso_fortran_env, only: output_unit |
| 16 | write(output_unit, '(a)') 'fortsh ' // FORTSH_VERSION |
| 17 | end subroutine print_version |
| 18 | |
| 19 | subroutine print_help() |
| 20 | use iso_fortran_env, only: output_unit |
| 21 | write(output_unit, '(a)') 'fortsh - Fortran Shell ' // FORTSH_VERSION |
| 22 | write(output_unit, '(a)') '' |
| 23 | write(output_unit, '(a)') 'Usage: fortsh [OPTIONS] [SCRIPT [ARGS...]]' |
| 24 | write(output_unit, '(a)') ' fortsh [OPTIONS] -c COMMAND [ARGS...]' |
| 25 | write(output_unit, '(a)') '' |
| 26 | write(output_unit, '(a)') 'Options:' |
| 27 | write(output_unit, '(a)') ' -c COMMAND Execute COMMAND and exit' |
| 28 | write(output_unit, '(a)') ' -l, --login Start as a login shell' |
| 29 | write(output_unit, '(a)') ' -n Check syntax only, do not execute' |
| 30 | write(output_unit, '(a)') ' -v, --version Print version information and exit' |
| 31 | write(output_unit, '(a)') ' -h, --help Print this help message and exit' |
| 32 | write(output_unit, '(a)') '' |
| 33 | write(output_unit, '(a)') 'If SCRIPT is provided, fortsh executes it. Otherwise, fortsh runs' |
| 34 | write(output_unit, '(a)') 'interactively, reading commands from standard input.' |
| 35 | write(output_unit, '(a)') '' |
| 36 | write(output_unit, '(a)') 'fortsh is a POSIX-compliant shell written in Fortran 2018 with' |
| 37 | write(output_unit, '(a)') 'bash compatibility features including:' |
| 38 | write(output_unit, '(a)') ' - Syntax highlighting and autosuggestions' |
| 39 | write(output_unit, '(a)') ' - Tab completion for commands, files, and variables' |
| 40 | write(output_unit, '(a)') ' - History search with Ctrl-R' |
| 41 | write(output_unit, '(a)') ' - Vi and Emacs editing modes' |
| 42 | write(output_unit, '(a)') ' - Native text selection (Shift+Arrow) with system clipboard' |
| 43 | write(output_unit, '(a)') ' - Job control (fg, bg, jobs)' |
| 44 | write(output_unit, '(a)') ' - Shell functions and aliases' |
| 45 | write(output_unit, '(a)') ' - Pipes, process substitution, and coprocesses' |
| 46 | write(output_unit, '(a)') ' - Brace, parameter, and arithmetic expansion' |
| 47 | write(output_unit, '(a)') ' - fzf integration (Ctrl+F files, Ctrl+R history, Alt+j dirs)' |
| 48 | write(output_unit, '(a)') '' |
| 49 | write(output_unit, '(a)') 'Report bugs at: https://github.com/FortranGoingOnForty/fortsh/issues' |
| 50 | end subroutine print_help |
| 51 | |
| 52 | end module version |
| 53 |