bashly 1.1.0 → 1.1.2
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/lib/bashly/libraries/config/config.sh +5 -6
- data/lib/bashly/libraries/help/help_command.sh +1 -1
- data/lib/bashly/libraries/ini/ini.sh +1 -1
- data/lib/bashly/libraries/render/mandoc/README.md +18 -0
- data/lib/bashly/libraries/render/mandoc/mandoc.gtx +10 -5
- data/lib/bashly/libraries/test/approvals.bash +9 -1
- data/lib/bashly/library_source.rb +2 -1
- data/lib/bashly/library_source_config.rb +48 -0
- data/lib/bashly/version.rb +1 -1
- data/lib/bashly/views/command/whitelist_filter.gtx +2 -2
- data/lib/bashly.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c90e3d5380ed91982c50ec46ff37c490e6b00785b80b75c60c4ddbb163902099
|
|
4
|
+
data.tar.gz: b1777dac4776226205c27781cf86af045deed8f25a282e0e2a1a8fd3848e0115
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 24c19fb49d0cfe9a1ed96bfd0fa3d77973136ed2dfda747c11aa54244c30d2af17384f6aa4f7604c1a41562e41ffe9e5c1ad2a204a7dd85ac6e2d797c588d65b
|
|
7
|
+
data.tar.gz: b2020a3dcf36073049511f4484d32542a5e54037a464c9e838c7a3ffb2fb48141223ea96ecf334aeb8b4609bedaeca3491d23901d02a481c5fb621354e695936
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
## - Use any of the following functions to access and manipulate the values.
|
|
9
9
|
## - INI sections are optional (i.e., sectionless key=value pairs are allowed).
|
|
10
10
|
##
|
|
11
|
-
|
|
12
11
|
## Show all the key=value pairs from your config file
|
|
13
12
|
config_show() {
|
|
14
13
|
config_load
|
|
@@ -28,8 +27,8 @@ config_show() {
|
|
|
28
27
|
## theme="$(config_get interface.theme)"
|
|
29
28
|
##
|
|
30
29
|
config_get() {
|
|
31
|
-
local key="$1"
|
|
32
|
-
local default_value="$2"
|
|
30
|
+
local key="${1-}"
|
|
31
|
+
local default_value="${2-}"
|
|
33
32
|
|
|
34
33
|
config_load
|
|
35
34
|
echo "${ini["$key"]:-$default_value}"
|
|
@@ -40,7 +39,7 @@ config_get() {
|
|
|
40
39
|
## config_set cloud.provider aws
|
|
41
40
|
##
|
|
42
41
|
config_set() {
|
|
43
|
-
local key="$1"
|
|
42
|
+
local key="${1-}"
|
|
44
43
|
shift
|
|
45
44
|
local value="$*"
|
|
46
45
|
|
|
@@ -54,7 +53,7 @@ config_set() {
|
|
|
54
53
|
## config_del login.email
|
|
55
54
|
##
|
|
56
55
|
config_del() {
|
|
57
|
-
local key="$1"
|
|
56
|
+
local key="${1-}"
|
|
58
57
|
|
|
59
58
|
config_load
|
|
60
59
|
unset "ini[$key]"
|
|
@@ -93,7 +92,7 @@ config_reload() {
|
|
|
93
92
|
## Load an INI file (unless loaded) and populate the associative array
|
|
94
93
|
## NOTE: Normally there is no need to call this function, it is called as needed
|
|
95
94
|
config_load() {
|
|
96
|
-
[[ "$config_loaded" == "true" ]] && return
|
|
95
|
+
[[ "${config_loaded-}" == "true" ]] && return
|
|
97
96
|
|
|
98
97
|
declare -g CONFIG_FILE=${CONFIG_FILE:=config.ini}
|
|
99
98
|
declare -g config_loaded=true
|
|
@@ -25,7 +25,6 @@
|
|
|
25
25
|
## unset ini[section1.key1]
|
|
26
26
|
## ini_save path/to/config.ini
|
|
27
27
|
##
|
|
28
|
-
|
|
29
28
|
## Load an INI file and populate the associative array `ini`.
|
|
30
29
|
ini_load() {
|
|
31
30
|
declare -gA ini
|
|
@@ -47,6 +46,7 @@ ini_load() {
|
|
|
47
46
|
elif [[ $line =~ $key_regex ]]; then
|
|
48
47
|
key="${BASH_REMATCH[1]}"
|
|
49
48
|
value="${BASH_REMATCH[2]}"
|
|
49
|
+
[[ $value == *\$* ]] && eval "value=\"$value\""
|
|
50
50
|
ini["${section}${key}"]="$value"
|
|
51
51
|
fi
|
|
52
52
|
done <"$ini_file"
|
|
@@ -43,3 +43,21 @@ Add an authors string to your man pages.
|
|
|
43
43
|
```yaml
|
|
44
44
|
x_mandoc_authors: Lana Lang
|
|
45
45
|
```
|
|
46
|
+
|
|
47
|
+
### See Also: `x_mandoc_see_also`
|
|
48
|
+
|
|
49
|
+
Adds additional pages to the `SEE ALSO` section, in addition to the
|
|
50
|
+
pages that are added automatically (like the parent command, and
|
|
51
|
+
sub commands).
|
|
52
|
+
|
|
53
|
+
This property should be an array of strings. You can optionally add
|
|
54
|
+
a section number in parentheses. If not provided, `(1)` will be used
|
|
55
|
+
as default.
|
|
56
|
+
|
|
57
|
+
#### Example
|
|
58
|
+
|
|
59
|
+
```yaml
|
|
60
|
+
x_mandoc_see_also:
|
|
61
|
+
- docker
|
|
62
|
+
- docker-compose.yml(5)
|
|
63
|
+
```
|
|
@@ -181,14 +181,19 @@ if examples
|
|
|
181
181
|
>
|
|
182
182
|
end
|
|
183
183
|
|
|
184
|
-
|
|
184
|
+
see_also = []
|
|
185
|
+
see_also << parents.first if parents.any?
|
|
186
|
+
see_also += public_commands.map { |x| x.full_name.to_hyphen } if public_commands.any?
|
|
187
|
+
see_also += x_mandoc_see_also if x_mandoc_see_also && x_mandoc_see_also.is_a?(Array)
|
|
188
|
+
see_also.map! do |item|
|
|
189
|
+
item.match(/(.+)(\(\d\))/) ? "**#{$1}**#{$2}" : "**#{item}**(1)"
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
if see_also.any?
|
|
185
193
|
> SEE ALSO
|
|
186
194
|
> ==================================================
|
|
187
195
|
>
|
|
188
|
-
|
|
189
|
-
> **{{ parents.first }}**(1)
|
|
190
|
-
end
|
|
191
|
-
= public_commands.map { |x| "**#{x.full_name.to_hyphen}**(1)" }.join ', '
|
|
196
|
+
= see_also.join ', '
|
|
192
197
|
>
|
|
193
198
|
end
|
|
194
199
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# approvals.bash v0.
|
|
1
|
+
# approvals.bash v0.4.0
|
|
2
2
|
#
|
|
3
3
|
# Interactive approval testing for Bash.
|
|
4
4
|
# https://github.com/DannyBen/approvals.bash
|
|
@@ -9,6 +9,10 @@ approve() {
|
|
|
9
9
|
cmd=$1
|
|
10
10
|
last_exit_code=0
|
|
11
11
|
actual=$(eval "$cmd" 2>&1) || last_exit_code=$?
|
|
12
|
+
if [[ "$allow_diff_regex" ]]; then
|
|
13
|
+
actual=$(echo "$actual" | sed "s/$allow_diff_regex/*/g")
|
|
14
|
+
unset allow_diff_regex
|
|
15
|
+
fi
|
|
12
16
|
approval=$(printf "%b" "$cmd" | tr -s -c "[:alnum:]" _)
|
|
13
17
|
approval_file="$approvals_dir/${2:-"$approval"}"
|
|
14
18
|
|
|
@@ -35,6 +39,10 @@ approve() {
|
|
|
35
39
|
fi
|
|
36
40
|
}
|
|
37
41
|
|
|
42
|
+
allow_diff() {
|
|
43
|
+
allow_diff_regex="$1"
|
|
44
|
+
}
|
|
45
|
+
|
|
38
46
|
describe() {
|
|
39
47
|
echo
|
|
40
48
|
blue "= $*"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'fileutils'
|
|
2
|
+
require 'tmpdir'
|
|
2
3
|
|
|
3
4
|
module Bashly
|
|
4
5
|
class LibrarySource
|
|
@@ -14,7 +15,7 @@ module Bashly
|
|
|
14
15
|
end
|
|
15
16
|
|
|
16
17
|
def config
|
|
17
|
-
@config ||=
|
|
18
|
+
@config ||= LibrarySourceConfig.new(config_path).validated_data
|
|
18
19
|
end
|
|
19
20
|
|
|
20
21
|
def libraries
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Bashly
|
|
2
|
+
class LibrarySourceConfig
|
|
3
|
+
include ValidationHelpers
|
|
4
|
+
|
|
5
|
+
attr_reader :path
|
|
6
|
+
|
|
7
|
+
def initialize(path)
|
|
8
|
+
@path = path
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def data
|
|
12
|
+
@data ||= YAML.load_file path
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def validated_data
|
|
16
|
+
validate
|
|
17
|
+
data
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def validate
|
|
21
|
+
assert_root path, data
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def assert_root(path, value)
|
|
27
|
+
assert_hash path, value
|
|
28
|
+
data.each { |id, spec| assert_lib "[#{path}] #{id}", spec }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def assert_lib(key, value)
|
|
32
|
+
assert_string "#{key}.help", value['help']
|
|
33
|
+
|
|
34
|
+
assert_optional_string "#{key}.usage", value['usage']
|
|
35
|
+
assert_optional_string "#{key}.handler", value['handler']
|
|
36
|
+
assert_optional_string "#{key}.post_install_message", value['post_install_message']
|
|
37
|
+
|
|
38
|
+
return if value['handler']
|
|
39
|
+
|
|
40
|
+
assert_array "#{key}.files", value['files'], of: :filespec
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def assert_filespec(key, value)
|
|
44
|
+
assert_string "#{key}.source", value['source']
|
|
45
|
+
assert_string "#{key}.target", value['target']
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
data/lib/bashly/version.rb
CHANGED
|
@@ -12,7 +12,7 @@ if whitelisted_args.any? or whitelisted_flags.any?
|
|
|
12
12
|
> done
|
|
13
13
|
|
|
14
14
|
else
|
|
15
|
-
> if [[ -n ${args['{{ arg.name }}']} ]] && [[ ! ${args['{{ arg.name }}']} =~ ^({{ arg.allowed.join '|' }})$ ]]; then
|
|
15
|
+
> if [[ -n ${args['{{ arg.name }}']:-} ]] && [[ ! ${args['{{ arg.name }}']:-} =~ ^({{ arg.allowed.join '|' }})$ ]]; then
|
|
16
16
|
> printf "%s\n" "{{ strings[:disallowed_argument] % { name: arg.name, allowed: arg.allowed.join(', ') } }}" >&2
|
|
17
17
|
> exit 1
|
|
18
18
|
> fi
|
|
@@ -31,7 +31,7 @@ if whitelisted_args.any? or whitelisted_flags.any?
|
|
|
31
31
|
> done
|
|
32
32
|
|
|
33
33
|
else
|
|
34
|
-
> if [[ ${args['{{ flag.name }}']} ]] && [[ ! ${args['{{ flag.name }}']} =~ ^({{ flag.allowed.join '|' }})$ ]]; then
|
|
34
|
+
> if [[ ${args['{{ flag.name }}']:-} ]] && [[ ! ${args['{{ flag.name }}']:-} =~ ^({{ flag.allowed.join '|' }})$ ]]; then
|
|
35
35
|
> printf "%s\n" "{{ strings[:disallowed_flag] % { name: flag.name, allowed: flag.allowed.join(', ') } }}" >&2
|
|
36
36
|
> exit 1
|
|
37
37
|
> fi
|
data/lib/bashly.rb
CHANGED
|
@@ -15,6 +15,7 @@ module Bashly
|
|
|
15
15
|
autoload :ConfigValidator, 'bashly/config_validator'
|
|
16
16
|
autoload :Library, 'bashly/library'
|
|
17
17
|
autoload :LibrarySource, 'bashly/library_source'
|
|
18
|
+
autoload :LibrarySourceConfig, 'bashly/library_source_config'
|
|
18
19
|
autoload :MessageStrings, 'bashly/message_strings'
|
|
19
20
|
autoload :RenderContext, 'bashly/render_context'
|
|
20
21
|
autoload :RenderSource, 'bashly/render_source'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bashly
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Danny Ben Shitrit
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-11-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: colsole
|
|
@@ -207,6 +207,7 @@ files:
|
|
|
207
207
|
- lib/bashly/libraries/yaml/yaml.sh
|
|
208
208
|
- lib/bashly/library.rb
|
|
209
209
|
- lib/bashly/library_source.rb
|
|
210
|
+
- lib/bashly/library_source_config.rb
|
|
210
211
|
- lib/bashly/message_strings.rb
|
|
211
212
|
- lib/bashly/refinements/compose_refinements.rb
|
|
212
213
|
- lib/bashly/render_context.rb
|