Skip to content

Commit

Permalink
Added the ronin-repos completion command (closes #22).
Browse files Browse the repository at this point in the history
  • Loading branch information
postmodern committed Jan 4, 2024
1 parent ec70baa commit b9860c5
Show file tree
Hide file tree
Showing 6 changed files with 142 additions and 5 deletions.
6 changes: 3 additions & 3 deletions Gemfile
Expand Up @@ -9,10 +9,10 @@ platform :jruby do
end

# Ronin dependencies:
# gem 'ronin-core', '~> 0.1', github: "ronin-rb/ronin-core",
# branch: 'main'
gem 'ronin-core', '~> 0.2', github: 'ronin-rb/ronin-core',
branch: '0.2.0'

# gem 'command_kit', '~> 0.4', github: 'postmodern/command_kit.rb',
# gem 'command_kit', '~> 0.5', github: 'postmodern/command_kit.rb',
# branch: 'main'

group :development do
Expand Down
3 changes: 2 additions & 1 deletion README.md
Expand Up @@ -40,6 +40,7 @@ Arguments:
[ARGS ...] Additional arguments for the command
Commands:
completion
help
install
list, ls
Expand Down Expand Up @@ -112,7 +113,7 @@ Rnnin::Repos.glob("wordlists/*.txt")
## Requirements

* [Ruby] >= 3.0.0
* [ronin-core] ~> 0.1
* [ronin-core] ~> 0.2

## Install

Expand Down
1 change: 1 addition & 0 deletions gemspec.yml
Expand Up @@ -20,6 +20,7 @@ metadata:
generated_files:
- data/completions/ronin-repos
- man/ronin-repos.1
- man/ronin-repos-completion.1
- man/ronin-repos-install.1
- man/ronin-repos-list.1
- man/ronin-repos-new.1
Expand Down
57 changes: 57 additions & 0 deletions lib/ronin/repos/cli/commands/completion.rb
@@ -0,0 +1,57 @@
# frozen_string_literal: true
#
# Copyright (c) 2021-2023 Hal Brodigan (postmodern.mod3 at gmail.com)
#
# ronin-repos is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# ronin-repos is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with ronin-repos. If not, see <https://www.gnu.org/licenses/>.
#

require 'ronin/repos/root'
require 'ronin/core/cli/completion_command'

module Ronin
module Repos
class CLI
module Commands
#
# ## Usage
#
# ronin-repos completion [options]
#
# ## Options
#
# --print Prints the shell completion file
# --install Installs the shell completion file
# --uninstall Uninstalls the shell completion file
# -h, --help Print help information
#
# ## Examples
#
# ronin-repos completion --print
# ronin-repos completion --install
# ronin-repos completion --uninstall
#
# @since 0.2.0
#
class Completion < Core::CLI::CompletionCommand

completion_file File.join(ROOT,'data','completions','ronin-repos')

man_dir File.join(ROOT,'man')
man_page 'ronin-repos-completion.1'

end
end
end
end
end
78 changes: 78 additions & 0 deletions man/ronin-repos-completion.1.md
@@ -0,0 +1,78 @@
# ronin-repos-completion 1 "2024-01-01" Ronin Repos "User Manuals"

## NAME

ronin-repos-completion - Manages shell completion rules for `ronin-repos`

## SYNOPSIS

`ronin-repos completion` [*options*]

## DESCRIPTION

The `ronin-repos completion` command can print, install, or uninstall shell
completion rules for the `ronin-repos` command.

Supports installing completion rules for Bash or Zsh shells.
Completion rules for the Fish shell is currently not supported.

### ZSH SUPPORT

Zsh users will have to add the following lines to their `~/.zshrc` file in
order to enable Zsh's Bash completion compatibility layer:

autoload -Uz +X compinit && compinit
autoload -Uz +X bashcompinit && bashcompinit

## OPTIONS

`--print`
: Prints the shell completion file.

`--install`
: Installs the shell completion file.

`--uninstall`
: Uninstalls the shell completion file.

`-h`, `--help`
: Prints help information.

## ENVIRONMENT

*PREFIX*
: Specifies the root prefix for the file system.

*HOME*
: Specifies the home directory of the user. Ronin will search for the
`~/.cache/ronin-repos` cache directory within the home directory.

*XDG_DATA_HOME*
: Specifies the data directory to use. Defaults to `$HOME/.local/share`.

## FILES

`~/.local/share/bash-completion/completions/`
: The user-local installation directory for Bash completion files.

`/usr/local/share/bash-completion/completions/`
: The system-wide installation directory for Bash completions files.

`/usr/local/share/zsh/site-functions/`
: The installation directory for Zsh completion files.

## EXAMPLES

`ronin-repos completion --print`
: Prints the shell completion rules instead of installing them.

`ronin-repos completion --install`
: Installs the shell completion rules for `ronin-repos`.

`ronin-repos completion --uninstall`
: Uninstalls the shell completion rules for `ronin-repos`.

## AUTHOR

Postmodern <postmodern.mod3@gmail.com>

2 changes: 1 addition & 1 deletion man/ronin-repos.1.md
Expand Up @@ -38,4 +38,4 @@ Postmodern <postmodern.mod3@gmail.com>

## SEE ALSO

[ronin-repos-install](ronin-repos-install.1.md) [ronin-repos-list](ronin-repos-list.1.md) [ronin-repos-remove](ronin-repos-remove.1.md) [ronin-repos-update](ronin-repos-update.1.md) [ronin-repos-purge](ronin-repos-purge.1.md)
[ronin-repos-completion](ronin-repos-completion.1.md) [ronin-repos-install](ronin-repos-install.1.md) [ronin-repos-list](ronin-repos-list.1.md) [ronin-repos-remove](ronin-repos-remove.1.md) [ronin-repos-update](ronin-repos-update.1.md) [ronin-repos-purge](ronin-repos-purge.1.md)

0 comments on commit b9860c5

Please sign in to comment.