Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
theapache64 committed May 8, 2020
2 parents 668a964 + 7e83f45 commit e0ccc52
Show file tree
Hide file tree
Showing 48 changed files with 750 additions and 191 deletions.
36 changes: 36 additions & 0 deletions .idea/artifacts/gpm_main_jar.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions .idea/gpm.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Manifest-Version: 1.0
Main-Class: com.theapache64.gpm.MainKt

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
| `uninstall` | To uninstall the dependency from `implementation` | ✔️ | Done | v1.0.0-alpha01 |
| `uninstall dev` | To uninstall the dependency from `testImplementation` | ✔️ | Done | v1.0.0-alpha01 |
| `uninstall dev-android` | To uninstall the dependency from `androidTestImplementation` | ✔️ | Done | v1.0.0-alpha01 |
| `docs` | To open the documentation in default browser | | Implementing | v1.0.0-alpha01 |
| `docs` | To open the documentation in default browser | ✔️ | Done | v1.0.0-alpha01 |
| `update` | To update the dependency version to latest || Pending | - |
| `list` | To list all the dependencies || Pending | - |

Expand Down
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ dependencies {
// DaggerMock
testImplementation 'com.github.fabioCollini.daggermock:daggermock:0.8.5'
testImplementation 'com.github.fabioCollini.daggermock:daggermock-kotlin:0.8.5'

// OkHttp:For networking
implementation 'com.squareup.okhttp3:okhttp:4.6.0'
}

compileKotlin {
Expand Down
262 changes: 262 additions & 0 deletions gpm_completion
Original file line number Diff line number Diff line change
@@ -0,0 +1,262 @@
#!/usr/bin/env bash
#
# gpm Bash Completion
# =======================
#
# Bash completion support for the `gpm` command,
# generated by [picocli](http://picocli.info/) version 4.2.0.
#
# Installation
# ------------
#
# 1. Source all completion scripts in your .bash_profile
#
# cd $YOUR_APP_HOME/bin
# for f in $(find . -name "*_completion"); do line=". $(pwd)/$f"; grep "$line" ~/.bash_profile || echo "$line" >> ~/.bash_profile; done
#
# 2. Open a new bash console, and type `gpm [TAB][TAB]`
#
# 1a. Alternatively, if you have [bash-completion](https://github.com/scop/bash-completion) installed:
# Place this file in a `bash-completion.d` folder:
#
# * /etc/bash-completion.d
# * /usr/local/etc/bash-completion.d
# * ~/bash-completion.d
#
# Documentation
# -------------
# The script is called by bash whenever [TAB] or [TAB][TAB] is pressed after
# 'gpm (..)'. By reading entered command line parameters,
# it determines possible bash completions and writes them to the COMPREPLY variable.
# Bash then completes the user input if only one entry is listed in the variable or
# shows the options if more than one is listed in COMPREPLY.
#
# References
# ----------
# [1] http://stackoverflow.com/a/12495480/1440785
# [2] http://tiswww.case.edu/php/chet/bash/FAQ
# [3] https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
# [4] http://zsh.sourceforge.net/Doc/Release/Options.html#index-COMPLETE_005fALIASES
# [5] https://stackoverflow.com/questions/17042057/bash-check-element-in-array-for-elements-in-another-array/17042655#17042655
# [6] https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html#Programmable-Completion
# [7] https://stackoverflow.com/questions/3249432/can-a-bash-tab-completion-script-be-used-in-zsh/27853970#27853970
#

if [ -n "$BASH_VERSION" ]; then
# Enable programmable completion facilities when using bash (see [3])
shopt -s progcomp
elif [ -n "$ZSH_VERSION" ]; then
# Make alias a distinct command for completion purposes when using zsh (see [4])
setopt COMPLETE_ALIASES
alias compopt=complete

# Enable bash completion in zsh (see [7])
autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
fi

# CompWordsContainsArray takes an array and then checks
# if all elements of this array are in the global COMP_WORDS array.
#
# Returns zero (no error) if all elements of the array are in the COMP_WORDS array,
# otherwise returns 1 (error).
function CompWordsContainsArray() {
declare -a localArray
localArray=("$@")
local findme
for findme in "${localArray[@]}"; do
if ElementNotInCompWords "$findme"; then return 1; fi
done
return 0
}
function ElementNotInCompWords() {
local findme="$1"
local element
for element in "${COMP_WORDS[@]}"; do
if [[ "$findme" = "$element" ]]; then return 1; fi
done
return 0
}

# The `currentPositionalIndex` function calculates the index of the current positional parameter.
#
# currentPositionalIndex takes three parameters:
# the command name,
# a space-separated string with the names of options that take a parameter, and
# a space-separated string with the names of boolean options (that don't take any params).
# When done, this function echos the current positional index to std_out.
#
# Example usage:
# local currIndex=$(currentPositionalIndex "mysubcommand" "$ARG_OPTS" "$FLAG_OPTS")
function currentPositionalIndex() {
local commandName="$1"
local optionsWithArgs="$2"
local booleanOptions="$3"
local previousWord
local result=0

for i in $(seq $((COMP_CWORD - 1)) -1 0); do
previousWord=${COMP_WORDS[i]}
if [ "${previousWord}" = "$commandName" ]; then
break
fi
if [[ "${optionsWithArgs}" =~ ${previousWord} ]]; then
((result-=2)) # Arg option and its value not counted as positional param
elif [[ "${booleanOptions}" =~ ${previousWord} ]]; then
((result-=1)) # Flag option itself not counted as positional param
fi
((result++))
done
echo "$result"
}

# Bash completion entry point function.
# _complete_gpm finds which commands and subcommands have been specified
# on the command line and delegates to the appropriate function
# to generate possible options and subcommands for the last specified subcommand.
function _complete_gpm() {
local cmds0=(install)
local cmds1=(i)
local cmds2=(uninstall)
local cmds3=(u)
local cmds4=(docs)
local cmds5=(d)

if CompWordsContainsArray "${cmds5[@]}"; then _picocli_gpm_d; return $?; fi
if CompWordsContainsArray "${cmds4[@]}"; then _picocli_gpm_docs; return $?; fi
if CompWordsContainsArray "${cmds3[@]}"; then _picocli_gpm_u; return $?; fi
if CompWordsContainsArray "${cmds2[@]}"; then _picocli_gpm_uninstall; return $?; fi
if CompWordsContainsArray "${cmds1[@]}"; then _picocli_gpm_i; return $?; fi
if CompWordsContainsArray "${cmds0[@]}"; then _picocli_gpm_install; return $?; fi

# No subcommands were specified; generate completions for the top-level command.
_picocli_gpm; return $?;
}

# Generates completions for the options and subcommands of the `gpm` command.
function _picocli_gpm() {
# Get completion data
local curr_word=${COMP_WORDS[COMP_CWORD]}

local commands="install i uninstall u docs d"
local flag_opts="-h --help -V --version"
local arg_opts=""

if [[ "${curr_word}" == -* ]]; then
COMPREPLY=( $(compgen -W "${flag_opts} ${arg_opts}" -- "${curr_word}") )
else
local positionals=""
COMPREPLY=( $(compgen -W "${commands} ${positionals}" -- "${curr_word}") )
fi
}

# Generates completions for the options and subcommands of the `install` subcommand.
function _picocli_gpm_install() {
# Get completion data
local curr_word=${COMP_WORDS[COMP_CWORD]}

local commands=""
local flag_opts="-S --save -D --save-dev -DA --save-dev-android"
local arg_opts=""

if [[ "${curr_word}" == -* ]]; then
COMPREPLY=( $(compgen -W "${flag_opts} ${arg_opts}" -- "${curr_word}") )
else
local positionals=""
COMPREPLY=( $(compgen -W "${commands} ${positionals}" -- "${curr_word}") )
fi
}

# Generates completions for the options and subcommands of the `i` subcommand.
function _picocli_gpm_i() {
# Get completion data
local curr_word=${COMP_WORDS[COMP_CWORD]}

local commands=""
local flag_opts="-S --save -D --save-dev -DA --save-dev-android"
local arg_opts=""

if [[ "${curr_word}" == -* ]]; then
COMPREPLY=( $(compgen -W "${flag_opts} ${arg_opts}" -- "${curr_word}") )
else
local positionals=""
COMPREPLY=( $(compgen -W "${commands} ${positionals}" -- "${curr_word}") )
fi
}

# Generates completions for the options and subcommands of the `uninstall` subcommand.
function _picocli_gpm_uninstall() {
# Get completion data
local curr_word=${COMP_WORDS[COMP_CWORD]}

local commands=""
local flag_opts="-S --save -D --save-dev -DA --save-dev-android"
local arg_opts=""

if [[ "${curr_word}" == -* ]]; then
COMPREPLY=( $(compgen -W "${flag_opts} ${arg_opts}" -- "${curr_word}") )
else
local positionals=""
COMPREPLY=( $(compgen -W "${commands} ${positionals}" -- "${curr_word}") )
fi
}

# Generates completions for the options and subcommands of the `u` subcommand.
function _picocli_gpm_u() {
# Get completion data
local curr_word=${COMP_WORDS[COMP_CWORD]}

local commands=""
local flag_opts="-S --save -D --save-dev -DA --save-dev-android"
local arg_opts=""

if [[ "${curr_word}" == -* ]]; then
COMPREPLY=( $(compgen -W "${flag_opts} ${arg_opts}" -- "${curr_word}") )
else
local positionals=""
COMPREPLY=( $(compgen -W "${commands} ${positionals}" -- "${curr_word}") )
fi
}

# Generates completions for the options and subcommands of the `docs` subcommand.
function _picocli_gpm_docs() {
# Get completion data
local curr_word=${COMP_WORDS[COMP_CWORD]}

local commands=""
local flag_opts=""
local arg_opts=""

if [[ "${curr_word}" == -* ]]; then
COMPREPLY=( $(compgen -W "${flag_opts} ${arg_opts}" -- "${curr_word}") )
else
local positionals=""
COMPREPLY=( $(compgen -W "${commands} ${positionals}" -- "${curr_word}") )
fi
}

# Generates completions for the options and subcommands of the `d` subcommand.
function _picocli_gpm_d() {
# Get completion data
local curr_word=${COMP_WORDS[COMP_CWORD]}

local commands=""
local flag_opts=""
local arg_opts=""

if [[ "${curr_word}" == -* ]]; then
COMPREPLY=( $(compgen -W "${flag_opts} ${arg_opts}" -- "${curr_word}") )
else
local positionals=""
COMPREPLY=( $(compgen -W "${commands} ${positionals}" -- "${curr_word}") )
fi
}

# Define a completion specification (a compspec) for the
# `gpm`, `gpm.sh`, and `gpm.bash` commands.
# Uses the bash `complete` builtin (see [6]) to specify that shell function
# `_complete_gpm` is responsible for generating possible completions for the
# current word on the command line.
# The `-o default` option means that if the function generated no matches, the
# default Bash completions and the Readline default filename completions are performed.
complete -F _complete_gpm -o default gpm gpm.sh gpm.bash
Empty file added install.sh
Empty file.
12 changes: 11 additions & 1 deletion src/main/kotlin/com/theapache64/gpm/Main.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
package com.theapache64.gpm

fun main(args: Array<String>) {
import com.theapache64.gpm.commands.gpm.Gpm
import picocli.CommandLine
import kotlin.system.exitProcess

fun main(args: Array<String>) {
val cmd = CommandLine(Gpm(false))
if (args.isEmpty()) {
cmd.usage(System.out)
} else {
val exitCode = cmd.execute(*args)
exitProcess(exitCode)
}
}
19 changes: 0 additions & 19 deletions src/main/kotlin/com/theapache64/gpm/commands/Gpm.kt

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.theapache64.gpm.commands.base

import com.theapache64.gpm.utils.GpmConfig
import com.theapache64.gpm.utils.InputUtils
import kotlinx.coroutines.delay
import java.util.concurrent.Callable
Expand All @@ -20,7 +19,7 @@ abstract class BaseCommand<T>(
@Suppress("ConstantConditionIf")
return if (isFromTest) {
delay(1000)
1
0
} else {
InputUtils.getInt("Choose one", 1, items.size) - 1
}
Expand Down
Loading

0 comments on commit e0ccc52

Please sign in to comment.