Fortran · 2717 bytes Raw Blame History
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