markdown_exec 1.2.0 → 1.3.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/.reek +3 -1
- data/.rubocop.yml +18 -0
- data/CHANGELOG.md +61 -0
- data/Gemfile.lock +1 -1
- data/README.md +25 -4
- data/Rakefile +450 -16
- data/bin/tab_completion.sh +13 -41
- data/lib/globfiles.rb +40 -0
- data/lib/markdown_exec/version.rb +3 -1
- data/lib/markdown_exec.rb +255 -529
- data/lib/menu.yml +293 -0
- data/lib/shared.rb +21 -0
- data/lib/tap.rb +13 -7
- metadata +4 -2
data/lib/menu.yml
ADDED
@@ -0,0 +1,293 @@
|
|
1
|
+
# MDE - Markdown Executor (1.3.0)
|
2
|
+
---
|
3
|
+
- :arg_name: NAME
|
4
|
+
:compreply: false
|
5
|
+
:description: Name of block
|
6
|
+
:env_var: MDE_BLOCK_NAME
|
7
|
+
:long_name: block-name
|
8
|
+
:opt_name: block_name
|
9
|
+
:short_name: b
|
10
|
+
:proc1: val_as_str
|
11
|
+
- :arg_name: PATH
|
12
|
+
:default: "."
|
13
|
+
:description: Read configuration file
|
14
|
+
:long_name: config
|
15
|
+
:proc1: path
|
16
|
+
- :arg_name: BOOL
|
17
|
+
:default: false
|
18
|
+
:description: Debug output
|
19
|
+
:env_var: MDE_DEBUG
|
20
|
+
:long_name: debug
|
21
|
+
:short_name: d
|
22
|
+
:proc1: debug
|
23
|
+
- :arg_name: RELATIVE_PATH
|
24
|
+
:compreply: "."
|
25
|
+
:description: Name of document
|
26
|
+
:env_var: MDE_FILENAME
|
27
|
+
:long_name: filename
|
28
|
+
:opt_name: filename
|
29
|
+
:short_name: f
|
30
|
+
:proc1: val_as_str
|
31
|
+
- :description: App help
|
32
|
+
:long_name: help
|
33
|
+
:short_name: h
|
34
|
+
:proc1: help
|
35
|
+
- :arg_name: RELATIVE_PATH
|
36
|
+
:default: "."
|
37
|
+
:description: Path to documents
|
38
|
+
:env_var: MDE_PATH
|
39
|
+
:long_name: path
|
40
|
+
:opt_name: path
|
41
|
+
:short_name: p
|
42
|
+
:proc1: val_as_str
|
43
|
+
- :arg_name: BOOL
|
44
|
+
:default: true
|
45
|
+
:description: Pause for user to approve script
|
46
|
+
:env_var: MDE_USER_MUST_APPROVE
|
47
|
+
:long_name: user-must-approve
|
48
|
+
:opt_name: user_must_approve
|
49
|
+
:short_name: q
|
50
|
+
:proc1: val_as_bool
|
51
|
+
- :description: Print the gem's version
|
52
|
+
:long_name: version
|
53
|
+
:short_name: v
|
54
|
+
:proc1: version
|
55
|
+
- :description: Exit app
|
56
|
+
:long_name: exit
|
57
|
+
:short_name: x
|
58
|
+
:proc1: exit
|
59
|
+
- :description: Show current configuration values
|
60
|
+
:short_name: '0'
|
61
|
+
:proc1: show_config
|
62
|
+
- :description: List blocks
|
63
|
+
:long_name: list-blocks
|
64
|
+
:opt_name: list_blocks
|
65
|
+
:proc1: val_as_bool
|
66
|
+
- :description: List default configuration as environment variables
|
67
|
+
:long_name: list-default-env
|
68
|
+
:opt_name: list_default_env
|
69
|
+
- :description: List default configuration as YAML
|
70
|
+
:long_name: list-default-yaml
|
71
|
+
:opt_name: list_default_yaml
|
72
|
+
- :description: List docs in current folder
|
73
|
+
:long_name: list-docs
|
74
|
+
:opt_name: list_docs
|
75
|
+
:proc1: val_as_bool
|
76
|
+
- :description: List recent saved output
|
77
|
+
:long_name: list-recent-output
|
78
|
+
:opt_name: list_recent_output
|
79
|
+
:proc1: val_as_bool
|
80
|
+
- :description: List recent saved scripts
|
81
|
+
:long_name: list-recent-scripts
|
82
|
+
:opt_name: list_recent_scripts
|
83
|
+
:proc1: val_as_bool
|
84
|
+
- :description: Select and execute a recently saved output
|
85
|
+
:long_name: select-recent-output
|
86
|
+
:opt_name: select_recent_output
|
87
|
+
:proc1: val_as_bool
|
88
|
+
- :description: Select and execute a recently saved script
|
89
|
+
:long_name: select-recent-script
|
90
|
+
:opt_name: select_recent_script
|
91
|
+
:proc1: val_as_bool
|
92
|
+
- :description: List tab completions
|
93
|
+
:long_name: tab-completions
|
94
|
+
:opt_name: tab_completions
|
95
|
+
:proc1: val_as_bool
|
96
|
+
- :description: Run most recently saved script
|
97
|
+
:long_name: run-last-script
|
98
|
+
:opt_name: run_last_script
|
99
|
+
:proc1: val_as_bool
|
100
|
+
- :description: Gem home folder
|
101
|
+
:long_name: pwd
|
102
|
+
:opt_name: pwd
|
103
|
+
:proc1: val_as_bool
|
104
|
+
- :arg_name: INT.0-2
|
105
|
+
:default: 1
|
106
|
+
:description: Output display level (0 to 2 [data, +context, +info])
|
107
|
+
:env_var: MDE_DISPLAY_LEVEL
|
108
|
+
:long_name: display-level
|
109
|
+
:opt_name: display_level
|
110
|
+
:proc1: val_as_int
|
111
|
+
- :arg_name: INT.1-
|
112
|
+
:default: 32
|
113
|
+
:description: Max. items to return in list
|
114
|
+
:env_var: MDE_LIST_COUNT
|
115
|
+
:long_name: list-count
|
116
|
+
:opt_name: list_count
|
117
|
+
:proc1: val_as_int
|
118
|
+
- :arg_name: PREFIX
|
119
|
+
:default: mde
|
120
|
+
:description: Name prefix for stdout files
|
121
|
+
:env_var: MDE_LOGGED_STDOUT_FILENAME_PREFIX
|
122
|
+
:opt_name: logged_stdout_filename_prefix
|
123
|
+
:proc1: val_as_str
|
124
|
+
- :arg_name: BOOL
|
125
|
+
:default: false
|
126
|
+
:description: Display document name in block selection menu
|
127
|
+
:env_var: MDE_MENU_BLOCKS_WITH_DOCNAME
|
128
|
+
:opt_name: menu_blocks_with_docname
|
129
|
+
:proc1: val_as_bool
|
130
|
+
- :arg_name: BOOL
|
131
|
+
:default: false
|
132
|
+
:description: Display headings (levels 1,2,3) in block selection menu
|
133
|
+
:env_var: MDE_MENU_BLOCKS_WITH_HEADINGS
|
134
|
+
:opt_name: menu_blocks_with_headings
|
135
|
+
:proc1: val_as_bool
|
136
|
+
- :arg_name: BOOL
|
137
|
+
:default: false
|
138
|
+
:description: Display summary for execution
|
139
|
+
:env_var: MDE_OUTPUT_EXECUTION_SUMMARY
|
140
|
+
:long_name: output-execution-summary
|
141
|
+
:opt_name: output_execution_summary
|
142
|
+
:proc1: val_as_bool
|
143
|
+
- :arg_name: BOOL
|
144
|
+
:default: false
|
145
|
+
:description: Display script prior to execution
|
146
|
+
:env_var: MDE_OUTPUT_SCRIPT
|
147
|
+
:long_name: output-script
|
148
|
+
:opt_name: output_script
|
149
|
+
:proc1: val_as_bool
|
150
|
+
- :arg_name: BOOL
|
151
|
+
:default: true
|
152
|
+
:description: Display standard output from execution
|
153
|
+
:env_var: MDE_OUTPUT_STDOUT
|
154
|
+
:long_name: output-stdout
|
155
|
+
:opt_name: output_stdout
|
156
|
+
:proc1: val_as_bool
|
157
|
+
- :arg_name: BOOL
|
158
|
+
:default: false
|
159
|
+
:description: Save executed script
|
160
|
+
:env_var: MDE_SAVE_EXECUTED_SCRIPT
|
161
|
+
:long_name: save-executed-script
|
162
|
+
:opt_name: save_executed_script
|
163
|
+
:proc1: val_as_bool
|
164
|
+
- :arg_name: BOOL
|
165
|
+
:default: false
|
166
|
+
:description: Save standard output of the executed script
|
167
|
+
:env_var: MDE_SAVE_EXECUTION_OUTPUT
|
168
|
+
:long_name: save-execution-output
|
169
|
+
:opt_name: save_execution_output
|
170
|
+
:proc1: val_as_bool
|
171
|
+
- :arg_name: INT
|
172
|
+
:default: 493
|
173
|
+
:description: chmod for saved scripts
|
174
|
+
:env_var: MDE_SAVED_SCRIPT_CHMOD
|
175
|
+
:opt_name: saved_script_chmod
|
176
|
+
:proc1: val_as_int
|
177
|
+
- :arg_name: PREFIX
|
178
|
+
:default: mde
|
179
|
+
:description: Name prefix for saved scripts
|
180
|
+
:env_var: MDE_SAVED_SCRIPT_FILENAME_PREFIX
|
181
|
+
:opt_name: saved_script_filename_prefix
|
182
|
+
:proc1: val_as_str
|
183
|
+
- :arg_name: RELATIVE_PATH
|
184
|
+
:default: logs
|
185
|
+
:description: Saved script folder
|
186
|
+
:env_var: MDE_SAVED_SCRIPT_FOLDER
|
187
|
+
:long_name: saved-script-folder
|
188
|
+
:opt_name: saved_script_folder
|
189
|
+
:proc1: val_as_str
|
190
|
+
- :arg_name: GLOB
|
191
|
+
:default: mde_*.sh
|
192
|
+
:description: Glob matching saved scripts
|
193
|
+
:env_var: MDE_SAVED_SCRIPT_GLOB
|
194
|
+
:opt_name: saved_script_glob
|
195
|
+
:proc1: val_as_str
|
196
|
+
- :arg_name: RELATIVE_PATH
|
197
|
+
:default: logs
|
198
|
+
:description: Saved stdout folder
|
199
|
+
:env_var: MDE_SAVED_STDOUT_FOLDER
|
200
|
+
:long_name: saved-stdout-folder
|
201
|
+
:opt_name: saved_stdout_folder
|
202
|
+
:proc1: val_as_str
|
203
|
+
- :arg_name: GLOB
|
204
|
+
:default: mde_*.out.txt
|
205
|
+
:description: Glob matching saved outputs
|
206
|
+
:env_var: MDE_SAVED_STDOUT_GLOB
|
207
|
+
:opt_name: saved_stdout_glob
|
208
|
+
:proc1: val_as_str
|
209
|
+
- :default: "^[\\(\\[].*[\\)\\]]$"
|
210
|
+
:description: Pattern for blocks to hide from user-selection
|
211
|
+
:env_var: MDE_BLOCK_NAME_EXCLUDED_MATCH
|
212
|
+
:opt_name: block_name_excluded_match
|
213
|
+
:proc1: val_as_str
|
214
|
+
- :default: ":(?<title>\\S+)( |$)"
|
215
|
+
:env_var: MDE_BLOCK_NAME_MATCH
|
216
|
+
:opt_name: block_name_match
|
217
|
+
:proc1: val_as_str
|
218
|
+
- :default: "%\\([^\\)]+\\)"
|
219
|
+
:env_var: MDE_BLOCK_CALLS_SCAN
|
220
|
+
:opt_name: block_calls_scan
|
221
|
+
:proc1: val_as_str
|
222
|
+
- :default: "\\+\\S+"
|
223
|
+
:env_var: MDE_BLOCK_REQUIRED_SCAN
|
224
|
+
:opt_name: block_required_scan
|
225
|
+
:proc1: val_as_str
|
226
|
+
- :default: "<(?<full>(?<type>\\$)?(?<name>[A-Za-z]\\S*))"
|
227
|
+
:env_var: MDE_BLOCK_STDIN_SCAN
|
228
|
+
:opt_name: block_stdin_scan
|
229
|
+
:proc1: val_as_str
|
230
|
+
- :default: ">(?<full>(?<type>\\$)?(?<name>[A-Za-z]\\S*))"
|
231
|
+
:env_var: MDE_BLOCK_STDOUT_SCAN
|
232
|
+
:opt_name: block_stdout_scan
|
233
|
+
:proc1: val_as_str
|
234
|
+
- :default: "> "
|
235
|
+
:env_var: MDE_DISPLAY_LEVEL_XBASE_PREFIX
|
236
|
+
:opt_name: display_level_xbase_prefix
|
237
|
+
:proc1: val_as_str
|
238
|
+
- :default: "^`{3,}"
|
239
|
+
:env_var: MDE_FENCED_START_AND_END_MATCH
|
240
|
+
:opt_name: fenced_start_and_end_match
|
241
|
+
:proc1: val_as_str
|
242
|
+
- :default: "^`{3,}(?<shell>[^`\\s]*) *(?<name>.*)$"
|
243
|
+
:env_var: MDE_FENCED_START_EX_MATCH
|
244
|
+
:opt_name: fenced_start_ex_match
|
245
|
+
:proc1: val_as_str
|
246
|
+
- :default: "^# *(?<name>[^#]*?) *$"
|
247
|
+
:env_var: MDE_HEADING1_MATCH
|
248
|
+
:opt_name: heading1_match
|
249
|
+
:proc1: val_as_str
|
250
|
+
- :default: "^## *(?<name>[^#]*?) *$"
|
251
|
+
:env_var: MDE_HEADING2_MATCH
|
252
|
+
:opt_name: heading2_match
|
253
|
+
:proc1: val_as_str
|
254
|
+
- :default: "^### *(?<name>.+?) *$"
|
255
|
+
:env_var: MDE_HEADING3_MATCH
|
256
|
+
:opt_name: heading3_match
|
257
|
+
:proc1: val_as_str
|
258
|
+
- :default: "*.[Mm][Dd]"
|
259
|
+
:env_var: MDE_MD_FILENAME_GLOB
|
260
|
+
:opt_name: md_filename_glob
|
261
|
+
:proc1: val_as_str
|
262
|
+
- :default: ".+\\.md"
|
263
|
+
:env_var: MDE_MD_FILENAME_MATCH
|
264
|
+
:opt_name: md_filename_match
|
265
|
+
:proc1: val_as_str
|
266
|
+
- :default: "^::: +(?<name>.+?)$"
|
267
|
+
:description: Pattern for topics/dividers in block selection menu
|
268
|
+
:env_var: MDE_MENU_DIVIDER_MATCH
|
269
|
+
:opt_name: menu_divider_match
|
270
|
+
:proc1: val_as_str
|
271
|
+
- :description: Options for viewing saved output file
|
272
|
+
:env_var: MDE_OUTPUT_VIEWER_OPTIONS
|
273
|
+
:opt_name: output_viewer_options
|
274
|
+
:proc1: val_as_str
|
275
|
+
- :default: 24
|
276
|
+
:description: 'Maximum # of rows in select list'
|
277
|
+
:env_var: MDE_SELECT_PAGE_HEIGHT
|
278
|
+
:opt_name: select_page_height
|
279
|
+
:proc1: val_as_int
|
280
|
+
- :default: "#!/usr/bin/env"
|
281
|
+
:description: Shebang for saved scripts
|
282
|
+
:env_var: MDE_SHEBANG
|
283
|
+
:opt_name: shebang
|
284
|
+
:proc1: val_as_str
|
285
|
+
- :default: bash
|
286
|
+
:description: Shell for launched scripts
|
287
|
+
:env_var: MDE_SHELL
|
288
|
+
:opt_name: shell
|
289
|
+
:proc1: val_as_str
|
290
|
+
- :default: "- - %s - -"
|
291
|
+
:env_var: MDE_MENU_DIVIDER_FORMAT
|
292
|
+
:opt_name: menu_divider_format
|
293
|
+
:proc1: val_as_str
|
data/lib/shared.rb
CHANGED
@@ -6,6 +6,27 @@ require 'shellwords'
|
|
6
6
|
|
7
7
|
public
|
8
8
|
|
9
|
+
BF = 'bin'
|
10
|
+
|
11
|
+
# display_level values
|
12
|
+
DISPLAY_LEVEL_BASE = 0 # required output
|
13
|
+
DISPLAY_LEVEL_ADMIN = 1
|
14
|
+
DISPLAY_LEVEL_DEBUG = 2
|
15
|
+
DISPLAY_LEVEL_DEFAULT = DISPLAY_LEVEL_ADMIN
|
16
|
+
DISPLAY_LEVEL_MAX = DISPLAY_LEVEL_DEBUG
|
17
|
+
|
18
|
+
# @execute_files[ind] = @execute_files[ind] + [block]
|
19
|
+
EF_STDOUT = 0
|
20
|
+
EF_STDERR = 1
|
21
|
+
EF_STDIN = 2
|
22
|
+
|
23
|
+
LOCAL_YML = 'menu.yml'
|
24
|
+
MENU_YML = "lib/#{LOCAL_YML}"
|
25
|
+
|
26
|
+
def menu_from_yaml
|
27
|
+
YAML.load File.open(File.join(File.expand_path(__dir__), LOCAL_YML))
|
28
|
+
end
|
29
|
+
|
9
30
|
# skip :reek:UtilityFunction
|
10
31
|
def value_for_cli(value)
|
11
32
|
case value.class.to_s
|
data/lib/tap.rb
CHANGED
@@ -6,19 +6,25 @@ require 'json'
|
|
6
6
|
require 'yaml'
|
7
7
|
|
8
8
|
require_relative 'env'
|
9
|
-
include Env
|
9
|
+
include Env
|
10
10
|
|
11
|
-
|
11
|
+
## application-level debug control
|
12
12
|
#
|
13
13
|
module Tap
|
14
|
-
$
|
15
|
-
|
16
|
-
def tap_config(enable)
|
17
|
-
$
|
14
|
+
$tap_enable = env_bool 'TAP_DEBUG'
|
15
|
+
|
16
|
+
def tap_config(enable: nil, envvar: nil, value: nil)
|
17
|
+
$tap_enable = if envvar
|
18
|
+
env_bool envvar
|
19
|
+
elsif value
|
20
|
+
value.to_i != 0
|
21
|
+
elsif enable
|
22
|
+
enable
|
23
|
+
end
|
18
24
|
end
|
19
25
|
|
20
26
|
def tap_inspect(format: nil, name: 'return')
|
21
|
-
return self unless $
|
27
|
+
return self unless $tap_enable
|
22
28
|
|
23
29
|
cvt = {
|
24
30
|
json: :to_json,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: markdown_exec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fareed Stevenson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clipboard
|
@@ -112,8 +112,10 @@ files:
|
|
112
112
|
- bin/tab_completion.sh.erb
|
113
113
|
- lib/colorize.rb
|
114
114
|
- lib/env.rb
|
115
|
+
- lib/globfiles.rb
|
115
116
|
- lib/markdown_exec.rb
|
116
117
|
- lib/markdown_exec/version.rb
|
118
|
+
- lib/menu.yml
|
117
119
|
- lib/shared.rb
|
118
120
|
- lib/tap.rb
|
119
121
|
homepage: https://rubygems.org/gems/markdown_exec
|