From aec45eebd44d5b63cdcaec1eb79e9476a3210c01 Mon Sep 17 00:00:00 2001 From: Glenn Date: Mon, 15 Jan 2024 09:08:36 +0100 Subject: [PATCH 01/17] fix: replace vault by mapping As the software object has evolved along the way, and the handling of vaults has become generic FUSE filesystems mapping management, we need to correct all the places that still mention vaults. --- src/file_system_manager.cr | 2 +- src/models/concerns/base.cr | 2 +- src/parsers/config_parser.cr | 2 +- src/parsers/mapping_parser.cr | 20 ++++++++++++-------- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/file_system_manager.cr b/src/file_system_manager.cr index 91dc1a8..5c78da6 100644 --- a/src/file_system_manager.cr +++ b/src/file_system_manager.cr @@ -120,7 +120,7 @@ module GX puts ">> #{selected_filesystem.name}".colorize(:yellow) if !selected_filesystem - STDERR.puts "Vault not found: #{selected_filesystem}.".colorize(:red) + STDERR.puts "Mapping not found: #{selected_filesystem}.".colorize(:red) return end return selected_filesystem diff --git a/src/models/concerns/base.cr b/src/models/concerns/base.cr index 90254de..223e155 100644 --- a/src/models/concerns/base.cr +++ b/src/models/concerns/base.cr @@ -46,7 +46,7 @@ module GX::Models::Concerns if result_status.success? puts "Models #{name} is now available on #{mount_point_safe}".colorize(:green) else - puts "Error mounting the vault".colorize(:red) + puts "Error mounting the mapping".colorize(:red) return end end diff --git a/src/parsers/config_parser.cr b/src/parsers/config_parser.cr index b902cd5..f1dfa3f 100644 --- a/src/parsers/config_parser.cr +++ b/src/parsers/config_parser.cr @@ -23,7 +23,7 @@ module GX::Parsers parser.banner = Utils.usage_line(breadcrumbs + "init", "Create initial mfm configuration") parser.separator("\nInit options") - parser.on("-p", "--path", "Set vault encrypted path") do |path| + parser.on("-p", "--path", "Set mapping encrypted path") do |path| config.config_init_options.try do |opts| opts.path = path end diff --git a/src/parsers/mapping_parser.cr b/src/parsers/mapping_parser.cr index fc972a9..5249ade 100644 --- a/src/parsers/mapping_parser.cr +++ b/src/parsers/mapping_parser.cr @@ -23,33 +23,37 @@ module GX::Parsers parser.on("create", "Create mapping") do config.mode = Types::Mode::MappingCreate - - pp parser + # pp parser parser.banner = Utils.usage_line(breadcrumbs + "create", "Create mapping", true) parser.separator("\nCreate options") - parser.on("-n", "--name", "Set vault name") do |name| + parser.on("-t", "--type TYPE", "Set filesystem type") do |type| + add_args = add_args.merge({type: type}) + end + + parser.on("-n", "--name", "Set mapping name") do |name| add_args = add_args.merge({name: name}) end - parser.on("-p", "--path", "Set vault encrypted path") do |path| + + parser.on("-p", "--path", "Set mapping encrypted path") do |path| add_args = add_args.merge({path: path}) end parser.separator(Utils.help_line(breadcrumbs + "create")) end - parser.on("edit", "Edit configuration") do |flag| + parser.on("edit", "Edit configuration") do |_| config.mode = Types::Mode::MappingEdit parser.separator(Utils.help_line(breadcrumbs + "edit")) # abort("FIXME: Not implemented") end - parser.on("mount", "Mount mapping") do |flag| + parser.on("mount", "Mount mapping") do |_| config.mode = Types::Mode::MappingMount parser.separator(Utils.help_line(breadcrumbs + "mount")) # abort("FIXME: Not implemented") end - parser.on("umount", "Umount mapping") do |flag| + parser.on("umount", "Umount mapping") do |_| config.mode = Types::Mode::MappingUmount parser.separator(Utils.help_line(breadcrumbs + "umount")) # abort("FIXME: Not implemented") @@ -61,7 +65,7 @@ module GX::Parsers parser.banner = Utils.usage_line(breadcrumbs + "delete", "Delete mapping", true) parser.separator("\nDelete options") - parser.on("-n", "--name", "Set vault name") do |name| + parser.on("-n", "--name", "Set mapping name") do |name| delete_args = delete_args.merge({name: name}) end parser.separator(Utils.help_line(breadcrumbs + "delete")) -- 2.45.3 From 29ab85a61fd90c473cda4d1cf697c4ecc97be163 Mon Sep 17 00:00:00 2001 From: Glenn Date: Tue, 23 Jan 2024 23:48:28 +0100 Subject: [PATCH 02/17] fix: run ameba --fix on config_init.cr --- src/commands/config_init.cr | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/commands/config_init.cr b/src/commands/config_init.cr index b9407d3..2171d39 100644 --- a/src/commands/config_init.cr +++ b/src/commands/config_init.cr @@ -6,6 +6,9 @@ module GX::Commands end def execute + puts "FIXME: detect if config is present" + puts "FIXME: compute config path (either default, or from command line)" + puts "FIXME: create config file from default if needed" end def self.handles_mode -- 2.45.3 From 8f1862eb4301c841eb630c5fbcfc94e7c9e19bd4 Mon Sep 17 00:00:00 2001 From: Glenn Date: Tue, 23 Jan 2024 23:48:28 +0100 Subject: [PATCH 03/17] fix: run ameba --fix on global_completion.cr --- src/commands/global_completion.cr | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/commands/global_completion.cr b/src/commands/global_completion.cr index d1be696..4549818 100644 --- a/src/commands/global_completion.cr +++ b/src/commands/global_completion.cr @@ -6,10 +6,12 @@ module GX::Commands end def execute + puts "FIXME: detect option (either zsh or bash)" + puts "FIXME: output the right file from embedded data" end def self.handles_mode - GX::Types::Mode::GlobalConfig + GX::Types::Mode::GlobalCompletion end end end -- 2.45.3 From 275f66d19d73b774e26510ecfc233b3968cb6f91 Mon Sep 17 00:00:00 2001 From: Glenn Date: Tue, 23 Jan 2024 23:48:28 +0100 Subject: [PATCH 04/17] fix: run ameba --fix on file_system_manager.cr --- src/file_system_manager.cr | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/file_system_manager.cr b/src/file_system_manager.cr index 5c78da6..9dc003c 100644 --- a/src/file_system_manager.cr +++ b/src/file_system_manager.cr @@ -89,7 +89,9 @@ module GX end def choose_filesystem - names_display = {} of String => NamedTuple(filesystem: Models::AbstractFilesystemConfig, ansi_name: String) + names_display = {} of String => NamedTuple( + filesystem: Models::AbstractFilesystemConfig, + ansi_name: String) config_root = @config.root return if config_root.nil? @@ -114,7 +116,7 @@ module GX end # # FIXME: feat: allow to sort by name or by filesystem - sorted_values = names_display.values.sort_by { |item| item[:filesystem].name } + sorted_values = names_display.values.sort_by!(&.[:filesystem].name) result_filesystem_name = Utils::Fzf.run(sorted_values.map(&.[:ansi_name])).strip selected_filesystem = names_display[result_filesystem_name][:filesystem] puts ">> #{selected_filesystem.name}".colorize(:yellow) @@ -123,7 +125,7 @@ module GX STDERR.puts "Mapping not found: #{selected_filesystem}.".colorize(:red) return end - return selected_filesystem + selected_filesystem end private def generate_display_name(filesystem : Models::AbstractFilesystemConfig) : String @@ -136,7 +138,7 @@ module GX if ENV["DISPLAY"]? || ENV["WAYLAND_DISPLAY"]? return true end - return false + false end end end -- 2.45.3 From 16bb660fc287f9ec4589a40b4057897c18bf5bd4 Mon Sep 17 00:00:00 2001 From: Glenn Date: Tue, 23 Jan 2024 23:48:28 +0100 Subject: [PATCH 05/17] fix: run ameba --fix on base.cr --- src/models/concerns/base.cr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/models/concerns/base.cr b/src/models/concerns/base.cr index 223e155..219a456 100644 --- a/src/models/concerns/base.cr +++ b/src/models/concerns/base.cr @@ -31,7 +31,7 @@ module GX::Models::Concerns end end - def _mount_wrapper(&block) : Nil + def _mount_wrapper(&) : Nil mount_point_safe = mount_point return if mount_point_safe.nil? -- 2.45.3 From 531cba0dc7175efb8a25e0a8518440e514b1b9d5 Mon Sep 17 00:00:00 2001 From: Glenn Date: Tue, 23 Jan 2024 23:48:28 +0100 Subject: [PATCH 06/17] fix: run ameba --fix on gocryptfs_config.cr --- src/models/gocryptfs_config.cr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/models/gocryptfs_config.cr b/src/models/gocryptfs_config.cr index 9013bdf..f6ea5b0 100644 --- a/src/models/gocryptfs_config.cr +++ b/src/models/gocryptfs_config.cr @@ -32,7 +32,7 @@ module GX::Models output: STDOUT, error: STDERR ) - return process.wait + process.wait end end end -- 2.45.3 From f5d28671a2ed46861557aa786924ef8f4c202c59 Mon Sep 17 00:00:00 2001 From: Glenn Date: Tue, 23 Jan 2024 23:48:29 +0100 Subject: [PATCH 07/17] fix: run ameba --fix on httpdirfs_config.cr --- src/models/httpdirfs_config.cr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/models/httpdirfs_config.cr b/src/models/httpdirfs_config.cr index 30db9eb..bcf0227 100644 --- a/src/models/httpdirfs_config.cr +++ b/src/models/httpdirfs_config.cr @@ -32,7 +32,7 @@ module GX::Models output: STDOUT, error: STDERR ) - return process.wait + process.wait end end end -- 2.45.3 From b59f1011ac3317ccd2b82191c941bd53ad909b62 Mon Sep 17 00:00:00 2001 From: Glenn Date: Tue, 23 Jan 2024 23:48:29 +0100 Subject: [PATCH 08/17] fix: run ameba --fix on sshfs_config.cr --- src/models/sshfs_config.cr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/models/sshfs_config.cr b/src/models/sshfs_config.cr index 99da441..82b3538 100644 --- a/src/models/sshfs_config.cr +++ b/src/models/sshfs_config.cr @@ -39,7 +39,7 @@ module GX::Models output: STDOUT, error: STDERR ) - return process.wait + process.wait end end end -- 2.45.3 From ed2cf5227f8597eb19b77418fff941aab73d88c4 Mon Sep 17 00:00:00 2001 From: Glenn Date: Tue, 23 Jan 2024 23:48:29 +0100 Subject: [PATCH 09/17] fix: run ameba --fix on completion_parser.cr --- src/parsers/completion_parser.cr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/parsers/completion_parser.cr b/src/parsers/completion_parser.cr index 1cdc4cc..3a068f9 100644 --- a/src/parsers/completion_parser.cr +++ b/src/parsers/completion_parser.cr @@ -12,11 +12,11 @@ module GX::Parsers ) parser.separator("\nCompletion commands:") - parser.on("--bash", "Generate bash completion") do |flag| + parser.on("--bash", "Generate bash completion") do |_| Log.info { "Set bash completion" } end - parser.on("--zsh", "Generate zsh completion") do |flag| + parser.on("--zsh", "Generate zsh completion") do |_| Log.info { "Set zsh completion" } end -- 2.45.3 From dbb0a42e91cfb86ef2947e7aeb7818189b3e0d07 Mon Sep 17 00:00:00 2001 From: Glenn Date: Tue, 23 Jan 2024 23:48:29 +0100 Subject: [PATCH 10/17] fix: run ameba --fix on mapping_parser.cr --- src/parsers/mapping_parser.cr | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/parsers/mapping_parser.cr b/src/parsers/mapping_parser.cr index 5249ade..60b2d7a 100644 --- a/src/parsers/mapping_parser.cr +++ b/src/parsers/mapping_parser.cr @@ -30,19 +30,35 @@ module GX::Parsers parser.on("-t", "--type TYPE", "Set filesystem type") do |type| add_args = add_args.merge({type: type}) end - parser.on("-n", "--name", "Set mapping name") do |name| add_args = add_args.merge({name: name}) end - - parser.on("-p", "--path", "Set mapping encrypted path") do |path| - add_args = add_args.merge({path: path}) + parser.on("--remote-user USER", "Set SSH user") do |user| + add_args = add_args.merge({remote_user: user}) end + parser.on("--remote-host HOST", "Set SSH host") do |host| + add_args = add_args.merge({remote_host: host}) + end + parser.on("--source-path PATH", "Set remote path") do |path| + add_args = add_args.merge({remote_path: path}) + end + parser.separator(Utils.help_line(breadcrumbs + "create")) end parser.on("edit", "Edit configuration") do |_| config.mode = Types::Mode::MappingEdit + + parser.on("--remote-user USER", "Set SSH user") do |user| + add_args = add_args.merge({remote_user: user}) + end + parser.on("--remote-host HOST", "Set SSH host") do |host| + add_args = add_args.merge({remote_host: host}) + end + parser.on("--source-path PATH", "Set remote path") do |path| + add_args = add_args.merge({remote_path: path}) + end + parser.separator(Utils.help_line(breadcrumbs + "edit")) # abort("FIXME: Not implemented") end -- 2.45.3 From 8f145189c0bc7bd6860f45ddce2d176042710b2a Mon Sep 17 00:00:00 2001 From: Glenn Date: Tue, 23 Jan 2024 23:48:29 +0100 Subject: [PATCH 11/17] fix: run ameba --fix on root_parser.cr --- src/parsers/root_parser.cr | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/parsers/root_parser.cr b/src/parsers/root_parser.cr index 70ac5a5..c3895dd 100644 --- a/src/parsers/root_parser.cr +++ b/src/parsers/root_parser.cr @@ -21,24 +21,24 @@ module GX::Parsers config.path = path end - parser.on("-v", "--verbose", "Set more verbosity") do |flag| + parser.on("-v", "--verbose", "Set more verbosity") do |_| Log.info { "Verbosity enabled" } config.verbose = true end - parser.on("-o", "--open", "Automatically open directory after mount") do |flag| + parser.on("-o", "--open", "Automatically open directory after mount") do |_| Log.info { "Auto-open enabled" } config.auto_open = true end - parser.on("--version", "Show version") do |flag| + parser.on("--version", "Show version") do |_| config.mode = Types::Mode::GlobalVersion end - parser.on("-h", "--help", "Show this help") do |flag| + parser.on("-h", "--help", "Show this help") do |_| config.mode = Types::Mode::GlobalHelp config.help_options = Parsers::Options::HelpOptions.new - config.help_options.try { |opts| opts.parser_snapshot = parser.dup } + config.help_options.try(&.parser_snapshot=(parser.dup)) end parser.separator("\nGlobal commands:") @@ -46,7 +46,7 @@ module GX::Parsers parser.on("config", "Manage configuration file") do config.mode = Types::Mode::GlobalHelp config.help_options = Parsers::Options::HelpOptions.new - config.help_options.try { |opts| opts.parser_snapshot = parser.dup } + config.help_options.try(&.parser_snapshot=(parser.dup)) # config.command = Commands::Config.new(config) Parsers::ConfigParser.new.build(parser, breadcrumbs, config) @@ -59,7 +59,7 @@ module GX::Parsers parser.on("mapping", "Manage mappings") do config.mode = Types::Mode::GlobalHelp config.help_options = Parsers::Options::HelpOptions.new - config.help_options.try { |opts| opts.parser_snapshot = parser.dup } + config.help_options.try(&.parser_snapshot=(parser.dup)) Parsers::MappingParser.new.build(parser, breadcrumbs, config) end -- 2.45.3 From be8980b74caf86078a21e06b28c1d8014dd55869 Mon Sep 17 00:00:00 2001 From: Glenn Date: Tue, 23 Jan 2024 23:48:29 +0100 Subject: [PATCH 12/17] fix: run ameba --fix on parser_lines.cr --- src/utils/parser_lines.cr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/parser_lines.cr b/src/utils/parser_lines.cr index dacd71f..4d9039e 100644 --- a/src/utils/parser_lines.cr +++ b/src/utils/parser_lines.cr @@ -3,7 +3,7 @@ require "./breadcrumbs" module GX::Utils def self.usage_line(breadcrumbs : BreadCrumbs, description : String, has_commands : Bool = false) [ - "Usage: #{breadcrumbs.to_s}#{has_commands ? " [commands]" : ""} [options]", + "Usage: #{breadcrumbs}#{has_commands ? " [commands]" : ""} [options]", "", description, "", @@ -12,6 +12,6 @@ module GX::Utils end def self.help_line(breadcrumbs : BreadCrumbs) - "\nRun '#{breadcrumbs.to_s} COMMAND --help' for more information on a command." + "\nRun '#{breadcrumbs} COMMAND --help' for more information on a command." end end -- 2.45.3 From 1a5c2cd223785ee7f0d120d23e92066fd43b5c98 Mon Sep 17 00:00:00 2001 From: Glenn Date: Wed, 24 Jan 2024 00:06:28 +0100 Subject: [PATCH 13/17] feat: prepare (empty) files for completion and sample config --- static/completion.zsh | 0 static/sample.mfm.yaml | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 static/completion.zsh create mode 100644 static/sample.mfm.yaml diff --git a/static/completion.zsh b/static/completion.zsh new file mode 100644 index 0000000..e69de29 diff --git a/static/sample.mfm.yaml b/static/sample.mfm.yaml new file mode 100644 index 0000000..8eaa2b5 --- /dev/null +++ b/static/sample.mfm.yaml @@ -0,0 +1,32 @@ +--- +version: 1 + +global: + mount_point_base: "{{env.HOME}}/mnt" + +filesystems: + ## + ## Sample configuration for encrypted vault (gocryptfs) + ## + # - type: gocryptfs + # name: "Credential Vault" + # encrypted_path: "{{env.HOME}}/Documents/Credential.Vault" + # + ## + ## Sample configuration remote SSH directory (sshfs) + ## + # - type: sshfs + # name: "Remote SSH server" + # remote_host: ssh.example.com + # remote_user: "{{env.USER}}" + # remote_path: "/home/{{env.USER}}" + # remote_port: 443 + # + ## + ## Sample configuration for remote HTTP directory (httpdirfs) + ## + - type: httpdirfs + name: "Debian Repository" + url: "http://ftp.debian.org/debian/" + # mount_point: "{{env.HOME}}/another.dir" +# -- 2.45.3 From bb5941a86aea34a01dc52996fe7344ffab3416a5 Mon Sep 17 00:00:00 2001 From: Glenn Date: Wed, 24 Jan 2024 00:06:52 +0100 Subject: [PATCH 14/17] fix: remove useless FIXME comments --- src/commands/global_config.cr | 2 +- src/commands/global_help.cr | 2 +- src/commands/mapping_mount.cr | 2 +- src/commands/mapping_umount.cr | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/commands/global_config.cr b/src/commands/global_config.cr index c369556..b3ff036 100644 --- a/src/commands/global_config.cr +++ b/src/commands/global_config.cr @@ -2,7 +2,7 @@ require "./abstract_command" module GX::Commands class GlobalConfig < AbstractCommand - def initialize(config : GX::Config) # FIXME + def initialize(config : GX::Config) end def execute diff --git a/src/commands/global_help.cr b/src/commands/global_help.cr index 78f1616..794ec2e 100644 --- a/src/commands/global_help.cr +++ b/src/commands/global_help.cr @@ -2,7 +2,7 @@ require "./abstract_command" module GX::Commands class GlobalHelp < AbstractCommand - def initialize(@config : GX::Config) # FIXME + def initialize(@config : GX::Config) end def execute diff --git a/src/commands/mapping_mount.cr b/src/commands/mapping_mount.cr index db81351..a750c7a 100644 --- a/src/commands/mapping_mount.cr +++ b/src/commands/mapping_mount.cr @@ -5,7 +5,7 @@ module GX::Commands class MappingMount < AbstractCommand @file_system_manager : FileSystemManager - def initialize(@config : GX::Config) # FIXME + def initialize(@config : GX::Config) @config.load_from_env @config.load_from_file @file_system_manager = FileSystemManager.new(@config) diff --git a/src/commands/mapping_umount.cr b/src/commands/mapping_umount.cr index dc61f1d..11dd92c 100644 --- a/src/commands/mapping_umount.cr +++ b/src/commands/mapping_umount.cr @@ -5,7 +5,7 @@ module GX::Commands class MappingUmount < AbstractCommand @file_system_manager : FileSystemManager - def initialize(@config : GX::Config) # FIXME + def initialize(@config : GX::Config) @config.load_from_env @config.load_from_file @file_system_manager = FileSystemManager.new(@config) -- 2.45.3 From 91f2e7a5548c086e01ec8823a4b3750a5691251c Mon Sep 17 00:00:00 2001 From: Glenn Date: Wed, 24 Jan 2024 00:07:29 +0100 Subject: [PATCH 15/17] fix: update code_preloader ignore list --- .code_preloader.yml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/.code_preloader.yml b/.code_preloader.yml index 97920cc..3e94732 100644 --- a/.code_preloader.yml +++ b/.code_preloader.yml @@ -8,15 +8,20 @@ # List of patterns to ignore during preloading ignore_list: - - ^\.git/ - - ^lib.* - - ^doc/ - ^bin/ + - ^\.code_preloader.yml + - ^doc/ + - ^\.drone.yml + - ^\.git/ + - ^\.gitattributes + - ^\.gitignore + - ^lib.* + - ^LICENSES/ - ^_prompts/ - ^\.reuse/ - - ^LICENSES/ - - ^\.vagrant/ - ^scripts/ + - ^\.tool-versions + - ^\.vagrant/ # Path to the output file (if null, output to STDOUT) output_path: null -- 2.45.3 From cb99019be5d12124c2e15fb33d0292f5df1a36ab Mon Sep 17 00:00:00 2001 From: Glenn Date: Wed, 24 Jan 2024 00:20:28 +0100 Subject: [PATCH 16/17] fix: add missing cli options for mapping command --- src/parsers/mapping_parser.cr | 59 +++++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/src/parsers/mapping_parser.cr b/src/parsers/mapping_parser.cr index 60b2d7a..77b25f3 100644 --- a/src/parsers/mapping_parser.cr +++ b/src/parsers/mapping_parser.cr @@ -5,8 +5,10 @@ module GX::Parsers class MappingParser < AbstractParser def build(parser, ancestors, config) breadcrumbs = ancestors + "mapping" - add_args = {name: "", path: ""} + create_args = {name: "", path: ""} delete_args = {name: ""} + mount_args = {name: ""} + umount_args = {name: ""} parser.banner = Utils.usage_line( breadcrumbs, @@ -28,19 +30,30 @@ module GX::Parsers parser.separator("\nCreate options") parser.on("-t", "--type TYPE", "Set filesystem type") do |type| - add_args = add_args.merge({type: type}) + create_args = create_args.merge({type: type}) end parser.on("-n", "--name", "Set mapping name") do |name| - add_args = add_args.merge({name: name}) + create_args = create_args.merge({name: name}) end - parser.on("--remote-user USER", "Set SSH user") do |user| - add_args = add_args.merge({remote_user: user}) + + # Filesystem specific + parser.on("--encrypted-path PATH", "Set encrypted path (for gocryptfs)") do |path| + encrypted_path = path end - parser.on("--remote-host HOST", "Set SSH host") do |host| - add_args = add_args.merge({remote_host: host}) + parser.on("--remote-user USER", "Set SSH user (for sshfs)") do |user| + create_args = create_args.merge({remote_user: user}) end - parser.on("--source-path PATH", "Set remote path") do |path| - add_args = add_args.merge({remote_path: path}) + parser.on("--remote-host HOST", "Set SSH host (for sshfs)") do |host| + create_args = create_args.merge({remote_host: host}) + end + parser.on("--source-path PATH", "Set remote path (for sshfs)") do |path| + create_args = create_args.merge({remote_path: path}) + end + parser.on("--remote-port PORT", "Set SSH port (for sshfs)") do |port| + create_args = create_args.merge({remote_port: port}) + end + parser.on("--url URL", "Set URL (for httpdirfs)") do |url| + create_args = create_args.merge({url: url}) end parser.separator(Utils.help_line(breadcrumbs + "create")) @@ -50,13 +63,13 @@ module GX::Parsers config.mode = Types::Mode::MappingEdit parser.on("--remote-user USER", "Set SSH user") do |user| - add_args = add_args.merge({remote_user: user}) + create_args = create_args.merge({remote_user: user}) end parser.on("--remote-host HOST", "Set SSH host") do |host| - add_args = add_args.merge({remote_host: host}) + create_args = create_args.merge({remote_host: host}) end parser.on("--source-path PATH", "Set remote path") do |path| - add_args = add_args.merge({remote_path: path}) + create_args = create_args.merge({remote_path: path}) end parser.separator(Utils.help_line(breadcrumbs + "edit")) @@ -65,21 +78,35 @@ module GX::Parsers parser.on("mount", "Mount mapping") do |_| config.mode = Types::Mode::MappingMount + + parser.banner = Utils.usage_line(breadcrumbs + "mount", "mount mapping", true) + parser.separator("\nMount options") + + parser.on("-n", "--name", "Set mapping name") do |name| + mount_args = mount_args.merge({name: name}) + end + parser.separator(Utils.help_line(breadcrumbs + "mount")) - # abort("FIXME: Not implemented") end parser.on("umount", "Umount mapping") do |_| config.mode = Types::Mode::MappingUmount + + parser.banner = Utils.usage_line(breadcrumbs + "umount", "umount mapping", true) + parser.separator("\nUmount options") + + parser.on("-n", "--name", "Set mapping name") do |name| + umount_args = umount_args.merge({name: name}) + end + parser.separator(Utils.help_line(breadcrumbs + "umount")) - # abort("FIXME: Not implemented") end parser.on("delete", "Delete mapping") do config.mode = Types::Mode::MappingDelete - parser.banner = Utils.usage_line(breadcrumbs + "delete", "Delete mapping", true) - parser.separator("\nDelete options") + parser.banner = Utils.usage_line(breadcrumbs + "delete", "delete mapping", true) + parser.separator("\ndelete options") parser.on("-n", "--name", "Set mapping name") do |name| delete_args = delete_args.merge({name: name}) -- 2.45.3 From 1f5a2f33ecac757b43b7a643fcf0fcf3db85c22c Mon Sep 17 00:00:00 2001 From: Glenn Date: Wed, 24 Jan 2024 00:28:46 +0100 Subject: [PATCH 17/17] fix: follow the crystal way for to_s --- src/utils/breadcrumbs.cr | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/utils/breadcrumbs.cr b/src/utils/breadcrumbs.cr index 89c54e9..f12c5f8 100644 --- a/src/utils/breadcrumbs.cr +++ b/src/utils/breadcrumbs.cr @@ -4,12 +4,12 @@ module GX::Utils @ancestors = base end - def +(elem : String) - b = BreadCrumbs.new(@ancestors + [elem]) + def +(other : String) + BreadCrumbs.new(@ancestors + [other]) end - def to_s - @ancestors.join(" ") + def to_s(io : IO) + io << @ancestors.join(" ") end def to_a -- 2.45.3