atli 0.1.11 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/atli.gemspec +11 -1
- data/lib/thor/version.rb +2 -2
- data/support/completion/complete.inc.bash.erb +159 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58210dece21bb6f5e41acd1ad1ace1230b856687
|
4
|
+
data.tar.gz: 600873fc0d393528eeca7ecac5ad9359a2b88af6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 641a5a3c2283c1c70e68b71291bfebb1e118bba9bf3c0678aaffcd74606c604dd052aa6ff79b393cfdea606a4a8312013d629a04039a1dd9db9d8c93b5855f9a
|
7
|
+
data.tar.gz: 7c21174463863a9463dcfb1bb945c76866cbc3576c85a7b5c9d6389ec56a255117b196fccf75e449d705aee84e00076bdd5887427ec220d97596609dbb645e37
|
data/atli.gemspec
CHANGED
@@ -9,7 +9,17 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.description = "Atli is a fork of Thor that's better or worse."
|
10
10
|
spec.email = "neil@atli.nrser.com"
|
11
11
|
spec.executables = %w(thor)
|
12
|
-
|
12
|
+
|
13
|
+
spec.files = [
|
14
|
+
'.yardopts',
|
15
|
+
'atli.gemspec',
|
16
|
+
'support/completion/complete.inc.bash.erb',
|
17
|
+
] + Dir[
|
18
|
+
"*.md",
|
19
|
+
"bin/*",
|
20
|
+
"lib/**/*.rb",
|
21
|
+
]
|
22
|
+
|
13
23
|
spec.homepage = "https://github.com/nrser/atli"
|
14
24
|
spec.licenses = %w(MIT)
|
15
25
|
spec.name = "atli"
|
data/lib/thor/version.rb
CHANGED
@@ -14,7 +14,7 @@ class Thor
|
|
14
14
|
#
|
15
15
|
# @return [String]
|
16
16
|
#
|
17
|
-
VERSION = '0.1.
|
17
|
+
VERSION = '0.1.12'
|
18
18
|
|
19
19
|
|
20
20
|
# The version of Thor that Atli is up to date with.
|
@@ -27,7 +27,7 @@ class Thor
|
|
27
27
|
#
|
28
28
|
# @return [String]
|
29
29
|
#
|
30
|
-
THOR_VERSION = '0.1.
|
30
|
+
THOR_VERSION = '0.1.12'
|
31
31
|
|
32
32
|
|
33
33
|
# Are we running from the source code (vesus from a Gem install)?
|
@@ -0,0 +1,159 @@
|
|
1
|
+
##
|
2
|
+
# Bash completion adapter for `locd`
|
3
|
+
#
|
4
|
+
# `source` me!
|
5
|
+
#
|
6
|
+
# @note
|
7
|
+
# I had through about trying to use $BASHPID to perhaps keep state on a
|
8
|
+
# completion server of some type, but it changes with every invocation...
|
9
|
+
# would need to reach the parent process' PID somehow, assuming that's even
|
10
|
+
# how completion works.
|
11
|
+
#
|
12
|
+
# @note
|
13
|
+
# It looks like `complete` (the Bash builtin that facilitates completion)
|
14
|
+
# can take a command to execute instead of a function.
|
15
|
+
#
|
16
|
+
# Since we're going to have to shell-out in some way, that might be better
|
17
|
+
# so we can write the logic in Ruby (or at least not bash). Assuming it
|
18
|
+
# sets the completion ENV vars and you work from there, so we would lose
|
19
|
+
# the `_init_completion` functionality from `bash-completion` (v2).
|
20
|
+
#
|
21
|
+
##
|
22
|
+
|
23
|
+
# Functions
|
24
|
+
# ============================================================================
|
25
|
+
|
26
|
+
# Append a message to $LOCD_BASH_COMP_DEBUG_FILE if the var is not empty.
|
27
|
+
#
|
28
|
+
__<%= name %>_debug() {
|
29
|
+
if [[ -n ${LOCD_BASH_COMP_DEBUG_FILE} ]]; then
|
30
|
+
echo "$*" >> "${LOCD_BASH_COMP_DEBUG_FILE}"
|
31
|
+
fi
|
32
|
+
}
|
33
|
+
|
34
|
+
|
35
|
+
# Entry point for bash completion.
|
36
|
+
#
|
37
|
+
__<%= name %>_complete() {
|
38
|
+
# Timing is commented out 'cause depends on a ms-resolution bin I built
|
39
|
+
# at some point and don't want to figure that out...
|
40
|
+
# local start_time="$(ms)"
|
41
|
+
|
42
|
+
__<%= name %>_debug "${FUNCNAME[0]}: STARTing the show...."
|
43
|
+
|
44
|
+
local cur prev words cword split
|
45
|
+
|
46
|
+
_init_completion -s || return
|
47
|
+
|
48
|
+
__<%= name %>_debug "${FUNCNAME[0]}: initialized" \
|
49
|
+
"cur='$cur'" \
|
50
|
+
"prev='$prev'" \
|
51
|
+
"words='${words[@]}'" \
|
52
|
+
"cword='$cword'" \
|
53
|
+
"split='${split}'"
|
54
|
+
|
55
|
+
__<%= name %>_debug "${FUNCNAME[0]}: Getting respond from app bin at ${words[0]}"
|
56
|
+
|
57
|
+
local response="$(${words[0]} bash-complete complete -- "$cur" "$prev" "${cword}" "${split}" "${words[@]}")"
|
58
|
+
|
59
|
+
# We need to figure out if we're about to complete a `--flag=` word, in
|
60
|
+
# which case we want to turn `nospace` on, do the compelte, then
|
61
|
+
# turn it back off so we don't add an annoying space after the `=`.
|
62
|
+
#
|
63
|
+
# We'll need these variables for the logic:
|
64
|
+
#
|
65
|
+
local nospace
|
66
|
+
local response_array=( $response )
|
67
|
+
local response_array_length="${#response_array[@]}"
|
68
|
+
local response_length="${#response}"
|
69
|
+
|
70
|
+
__<%= name %>_debug "${FUNCNAME[0]}: Got response;" \
|
71
|
+
"response='$response'" \
|
72
|
+
"response_length='${response_length}'" \
|
73
|
+
"response_array='${response[@]}'" \
|
74
|
+
"response_array_length='${response_array_length}'"
|
75
|
+
|
76
|
+
# We're going to flip `nospace` off if ALL of:
|
77
|
+
#
|
78
|
+
# 1. There is only one "word" element in the response.
|
79
|
+
#
|
80
|
+
# 2. The response length (in characters) is greater than zero
|
81
|
+
# (this might be redundant, was here before (1)).
|
82
|
+
#
|
83
|
+
# 3. The last character of the single word is `=`.
|
84
|
+
#
|
85
|
+
# If all of those are true, then `nospace` var should be set to "true".
|
86
|
+
#
|
87
|
+
# This probably isn't the most bullet-proof logic, but it's a start...
|
88
|
+
#
|
89
|
+
if (( response_array_length == 1 && response_length > 0 )); then
|
90
|
+
local index=$response_length
|
91
|
+
((index--))
|
92
|
+
local last_char="${response:$index:1}"
|
93
|
+
[ $last_char == "=" ] && nospace=true
|
94
|
+
fi
|
95
|
+
|
96
|
+
# If we indeed set `nospace` then flip `nospace` off
|
97
|
+
if [[ -n "$nospace" ]]; then
|
98
|
+
compopt +o nospace
|
99
|
+
fi
|
100
|
+
|
101
|
+
COMPREPLY=( $(compgen -W "$response" -- "$cur" ) )
|
102
|
+
|
103
|
+
# If we had turned `nospace` off, turn it back on
|
104
|
+
if [[ -n "$nospace" ]]; then
|
105
|
+
compopt -o nospace
|
106
|
+
unset nospace
|
107
|
+
fi
|
108
|
+
|
109
|
+
# See comment up top about `ms` bin...
|
110
|
+
# local end_time="$(ms)"
|
111
|
+
# local delta_s="$((end_time-start_time))"
|
112
|
+
# __<%= name %>_debug "${FUNCNAME[0]}: We're DONE here ($delta_s ms)."
|
113
|
+
|
114
|
+
__<%= name %>_debug "${FUNCNAME[0]}: We're DONE here."
|
115
|
+
__<%= name %>_debug
|
116
|
+
|
117
|
+
return 0
|
118
|
+
}
|
119
|
+
|
120
|
+
|
121
|
+
# Binding
|
122
|
+
# ============================================================================
|
123
|
+
|
124
|
+
# Hook in the `__locd_debug` function to `complete`
|
125
|
+
#
|
126
|
+
# @see https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion-Builtins.html
|
127
|
+
#
|
128
|
+
if [[ $(type -t compopt) = "builtin" ]]; then
|
129
|
+
# -o default (option `default`)
|
130
|
+
# Use Readline’s default filename completion if the compspec generates
|
131
|
+
# no matches.
|
132
|
+
#
|
133
|
+
# -F __locd_complete
|
134
|
+
# Tell `complete` to execute the `__locd_complete` function in the current
|
135
|
+
# shell environemnt.
|
136
|
+
#
|
137
|
+
complete -o default -F __<%= name %>_complete <%= bin %>
|
138
|
+
# complete -o default -C 'locd complete-cmd' locd
|
139
|
+
else
|
140
|
+
# UNTESTED! `compopt` is builtin for me.
|
141
|
+
#
|
142
|
+
# -o default (option `default`)
|
143
|
+
# Use Readline’s default filename completion if the compspec generates
|
144
|
+
# no matches.
|
145
|
+
#
|
146
|
+
# -o nospace (option `nospace`)
|
147
|
+
# "Tell Readline not to append a space (the default) to words completed at
|
148
|
+
# the end of the line." (via docs, see above).
|
149
|
+
#
|
150
|
+
# Not sure why this is here, guessing if `compopt` is *not* a `builtin`
|
151
|
+
# then maybe that detects and older version? My `bash@4.4.23` has
|
152
|
+
# `compopt` as a `builtin`, so have not taken this branch.
|
153
|
+
#
|
154
|
+
# -F __locd_complete
|
155
|
+
# Tell `complete` to execute the `__locd_complete` function in the current
|
156
|
+
# shell environemnt.
|
157
|
+
#
|
158
|
+
complete -o default -o nospace -F __<%= name %>_complete <%= bin %>
|
159
|
+
fi
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: atli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neil Souza (Atli)
|
@@ -141,6 +141,7 @@ files:
|
|
141
141
|
- lib/thor/shell/html.rb
|
142
142
|
- lib/thor/util.rb
|
143
143
|
- lib/thor/version.rb
|
144
|
+
- support/completion/complete.inc.bash.erb
|
144
145
|
homepage: https://github.com/nrser/atli
|
145
146
|
licenses:
|
146
147
|
- MIT
|