fylla 0.1.0 → 0.2.0
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/fylla.gemspec +2 -5
- data/lib/fylla/completion_generator.rb +32 -11
- data/lib/fylla/erb_templates/bash/command.erb +5 -0
- data/lib/fylla/erb_templates/bash/help.erb +0 -0
- data/lib/fylla/erb_templates/bash/subcommand.erb +36 -0
- data/lib/fylla/erb_templates/zsh/command.erb +1 -1
- data/lib/fylla/erb_templates/zsh/help.erb +1 -1
- data/lib/fylla/erb_templates/zsh/subcommand.erb +2 -2
- data/lib/fylla/version.rb +1 -1
- data/lib/fylla.rb +17 -0
- metadata +20 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9146ead4c4c7a8a7d72096188734b6f439ffff2
|
4
|
+
data.tar.gz: 5533724b62e9c629c99d62f68eb7cf2c55b4dadd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca9a24cb0a6829f9b0c814892c80684eed43a31c9d5d6c64b9d15b031aaa27850a8a53a0143b6da439f4d49b4a18cb6a9e7512272c088fa352a49659fb55a912
|
7
|
+
data.tar.gz: 737af6d0958eb919b9a8e9d2ec6dfb6e57fea009d337bd66853dee3f7aadbd18365222a4c56a0e93111f8bb5fd99845d22e54a1c95c6d88d0b34ef54892e2a60
|
data/fylla.gemspec
CHANGED
@@ -10,14 +10,11 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ['tyler.b.thrailkill@gmail.com']
|
11
11
|
|
12
12
|
spec.summary = 'Adds functions for generating autocomplete scripts for Thor applications'
|
13
|
-
spec.description = '
|
14
|
-
Fylla generates zsh and bash autocomplete scripts for Thor CLI applications.
|
15
|
-
'
|
13
|
+
spec.description = 'Fylla generates zsh and bash autocomplete scripts for Thor CLI applications.'
|
16
14
|
spec.homepage = 'https://github.com/snowe2010/fylla'
|
17
15
|
spec.license = 'MIT'
|
18
16
|
|
19
17
|
spec.metadata['yard.run'] = 'yri' # use "yard" to build full HTML docs.
|
20
|
-
# spec.metadata['changelog_uri'] = "TODO: Put your gem's CHANGELOG.md URL here."
|
21
18
|
|
22
19
|
# Specify which files should be added to the gem when it is released.
|
23
20
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -32,10 +29,10 @@ Gem::Specification.new do |spec|
|
|
32
29
|
spec.require_paths = ['lib']
|
33
30
|
|
34
31
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
32
|
+
spec.add_development_dependency 'codecov', '~> 0.1.14'
|
35
33
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
36
34
|
spec.add_development_dependency 'minitest-hooks', '~> 1.5.0'
|
37
35
|
spec.add_development_dependency 'rake', '~> 10.0'
|
38
|
-
# spec.add_development_dependency 'thor', '~> 0.20.3'
|
39
36
|
spec.add_dependency 'thor', '>= 0.19.0'
|
40
37
|
end
|
41
38
|
# rubocop:enable BlockLength
|
@@ -22,16 +22,36 @@ module Fylla
|
|
22
22
|
# @param executable_name [String]
|
23
23
|
# the name of the executable to generate the script for
|
24
24
|
def zsh_completion(executable_name)
|
25
|
+
@executable_name = executable_name
|
25
26
|
command = create_command_map commands, subcommand_classes
|
26
27
|
|
27
28
|
help = create_completion_string(read_template(:zsh, :help), binding)
|
28
|
-
builder = map_to_completion_string [command]
|
29
|
+
builder = map_to_completion_string [command]
|
29
30
|
completion = "#compdef _#{executable_name} #{executable_name}\n"
|
30
31
|
completion += builder
|
31
32
|
completion += help
|
32
33
|
completion
|
33
34
|
end
|
34
35
|
|
36
|
+
#
|
37
|
+
# Generates a bash _[executable_name] completion
|
38
|
+
# script for the entire Thor application
|
39
|
+
#
|
40
|
+
# @param executable_name [String]
|
41
|
+
# the name of the executable to generate the script for
|
42
|
+
def bash_completion(executable_name)
|
43
|
+
@executable_name = executable_name
|
44
|
+
command = create_command_map commands, subcommand_classes
|
45
|
+
|
46
|
+
help = create_completion_string(read_template(:bash, :help), binding)
|
47
|
+
builder = map_to_completion_string [command], style: :bash
|
48
|
+
completion = ''
|
49
|
+
completion += builder
|
50
|
+
completion += help
|
51
|
+
completion += "complete -F _#{executable_name} #{executable_name}\n"
|
52
|
+
completion
|
53
|
+
end
|
54
|
+
|
35
55
|
private
|
36
56
|
|
37
57
|
# Takes a list of [ParsedCommand]s and [ParsedSubcommand]s
|
@@ -49,17 +69,14 @@ module Fylla
|
|
49
69
|
# "_sub1_sub2_sub3"
|
50
70
|
# @param class_options [List<Thor::Option>]
|
51
71
|
# a list of global or class level options for the current context
|
52
|
-
# @param executable_name [String] the executable name, for use in
|
53
|
-
# method calls and to name the completion script.
|
54
72
|
def map_to_completion_string(commands,
|
55
|
-
context
|
56
|
-
class_options
|
57
|
-
|
58
|
-
style = :zsh)
|
73
|
+
context: '',
|
74
|
+
class_options: [],
|
75
|
+
style: :zsh)
|
59
76
|
builder = ''
|
60
77
|
commands.each do |command|
|
61
78
|
context_name = generate_context_name(context, command)
|
62
|
-
result = generate_completion_string(command, class_options, context_name,
|
79
|
+
result = generate_completion_string(command, class_options, context_name, style)
|
63
80
|
builder += result
|
64
81
|
end
|
65
82
|
builder
|
@@ -80,11 +97,15 @@ module Fylla
|
|
80
97
|
"#{context}#{command_name}"
|
81
98
|
end
|
82
99
|
|
83
|
-
def generate_completion_string(command, class_options, context_name,
|
100
|
+
def generate_completion_string(command, class_options, context_name, style)
|
84
101
|
builder = ''
|
85
102
|
if command.is_a? ParsedSubcommand
|
86
103
|
class_options = (class_options + command.class_options).uniq
|
87
|
-
builder += map_to_completion_string(command.commands,
|
104
|
+
builder += map_to_completion_string(command.commands,
|
105
|
+
context: context_name,
|
106
|
+
class_options: class_options,
|
107
|
+
style: style)
|
108
|
+
|
88
109
|
builder += create_completion_string(read_template(style, :subcommand), binding)
|
89
110
|
else
|
90
111
|
builder += create_completion_string(read_template(style, :command), binding)
|
@@ -125,7 +146,7 @@ module Fylla
|
|
125
146
|
# (see #recursively_find_commands) for more documentation
|
126
147
|
def create_command_map(command_map, subcommand_map)
|
127
148
|
command_map = recursively_find_commands command_map, subcommand_map
|
128
|
-
ParsedSubcommand.new(nil, '', command_map,
|
149
|
+
ParsedSubcommand.new(nil, '', command_map, class_options.values)
|
129
150
|
end
|
130
151
|
|
131
152
|
# Helper method to load an [ERB] template
|
File without changes
|
@@ -0,0 +1,36 @@
|
|
1
|
+
_<%= @executable_name %><%= context_name %>() {
|
2
|
+
local i=1 subcommand_index
|
3
|
+
|
4
|
+
# find the subcommand
|
5
|
+
while [[ $i -lt $COMP_CWORD ]]; do
|
6
|
+
local s="${COMP_WORDS[i]}"
|
7
|
+
case "$s" in
|
8
|
+
<%= command.name || @executable_name %>)<%# if command.name is empty, then we're at the top level command. therefore we need to use the @executable_name %>
|
9
|
+
subcommand_index=$i
|
10
|
+
break
|
11
|
+
;;
|
12
|
+
esac
|
13
|
+
(( i++ ))
|
14
|
+
done
|
15
|
+
|
16
|
+
while [[ $subcommand_index -lt $COMP_CWORD ]]; do
|
17
|
+
local s="${COMP_WORDS[subcommand_index]}"
|
18
|
+
case "$s" in
|
19
|
+
<%- unless command.commands.empty? -%>
|
20
|
+
<%- command.commands.each do |command| -%>
|
21
|
+
<%= command.name %>)
|
22
|
+
_<%= @executable_name %><%= context_name %>_<%= command.name %>
|
23
|
+
return ;;
|
24
|
+
<%- end -%>
|
25
|
+
<%- end -%>
|
26
|
+
help)
|
27
|
+
COMPREPLY=""
|
28
|
+
return
|
29
|
+
;;
|
30
|
+
esac
|
31
|
+
(( subcommand_index++ ))
|
32
|
+
done
|
33
|
+
|
34
|
+
local cur="${COMP_WORDS[COMP_CWORD]}"
|
35
|
+
COMPREPLY=($(compgen -W "<%= command.commands.map(&:name).join(" ") %> <%= command.class_options.map(&:switch_name).join(" ") %>" -- "$cur"))
|
36
|
+
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
function _<%= executable_name %><%= context_name %> {
|
1
|
+
function _<%= @executable_name %><%= context_name %> {
|
2
2
|
local line
|
3
3
|
<%- unless command.commands.empty? %>
|
4
4
|
function _commands {
|
@@ -28,7 +28,7 @@ function _<%= executable_name %><%= context_name %> {
|
|
28
28
|
case $line[1] in
|
29
29
|
<%- command.commands.each do |command| -%>
|
30
30
|
<%= command.name %>)
|
31
|
-
_<%= executable_name %><%= context_name %>_<%= command.name %>
|
31
|
+
_<%= @executable_name %><%= context_name %>_<%= command.name %>
|
32
32
|
;;
|
33
33
|
<%- end -%>
|
34
34
|
esac
|
data/lib/fylla/version.rb
CHANGED
data/lib/fylla.rb
CHANGED
@@ -9,12 +9,29 @@ require 'thor'
|
|
9
9
|
# Contains one method for initializing Fylla
|
10
10
|
#
|
11
11
|
module Fylla
|
12
|
+
#
|
13
|
+
# this method initializes [Fylla]
|
14
|
+
# Call this _before_ #Thor.start is called.
|
12
15
|
def self.load(executable_name = nil)
|
13
16
|
@executable_name = executable_name || nil
|
14
17
|
::Thor.prepend Fylla::Thor::CompletionGenerator
|
15
18
|
end
|
16
19
|
|
20
|
+
#
|
21
|
+
# @param binding [Binding] _must always be self_
|
22
|
+
# @param executable_name [String] name of your thor executable,
|
23
|
+
# must either be provided through #self.load or here.
|
24
|
+
# @return [String] containing the entire zsh completion script.
|
17
25
|
def self.zsh_completion(binding, executable_name = @executable_name)
|
18
26
|
binding.class.zsh_completion(executable_name)
|
19
27
|
end
|
28
|
+
|
29
|
+
#
|
30
|
+
# @param binding [Binding] _must always be self_
|
31
|
+
# @param executable_name [String] name of your thor executable,
|
32
|
+
# must either be provided through #self.load or here.
|
33
|
+
# @return [String] containing the entire bash completion script.
|
34
|
+
def self.bash_completion(binding, executable_name = @executable_name)
|
35
|
+
binding.class.bash_completion(executable_name)
|
36
|
+
end
|
20
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fylla
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Thrailkill
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: codecov
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.1.14
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.1.14
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: minitest
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,8 +94,7 @@ dependencies:
|
|
80
94
|
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: 0.19.0
|
83
|
-
description:
|
84
|
-
\ "
|
97
|
+
description: Fylla generates zsh and bash autocomplete scripts for Thor CLI applications.
|
85
98
|
email:
|
86
99
|
- tyler.b.thrailkill@gmail.com
|
87
100
|
executables:
|
@@ -98,6 +111,9 @@ files:
|
|
98
111
|
- fylla.gemspec
|
99
112
|
- lib/fylla.rb
|
100
113
|
- lib/fylla/completion_generator.rb
|
114
|
+
- lib/fylla/erb_templates/bash/command.erb
|
115
|
+
- lib/fylla/erb_templates/bash/help.erb
|
116
|
+
- lib/fylla/erb_templates/bash/subcommand.erb
|
101
117
|
- lib/fylla/erb_templates/zsh/command.erb
|
102
118
|
- lib/fylla/erb_templates/zsh/help.erb
|
103
119
|
- lib/fylla/erb_templates/zsh/subcommand.erb
|