markdown_exec 1.2.0 → 1.3.1
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 +6 -1
- data/.rubocop.yml +21 -0
- data/CHANGELOG.md +87 -3
- data/Gemfile +5 -0
- data/Gemfile.lock +15 -13
- data/README.md +81 -4
- data/Rakefile +571 -18
- data/bin/tab_completion.sh +29 -39
- data/bin/tab_completion.sh.erb +23 -0
- data/lib/cli.rb +19 -0
- data/lib/environment_opt_parse.rb +200 -0
- data/lib/globfiles.rb +40 -0
- data/lib/markdown_exec/version.rb +3 -1
- data/lib/markdown_exec.rb +427 -618
- data/lib/menu.yml +364 -0
- data/lib/object_present.rb +40 -0
- data/lib/shared.rb +20 -10
- data/lib/tap.rb +78 -17
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e0c996cc59c02f9cfff6948467f4714bfb7e010ec61f886b9508b4af1a80dbc6
|
4
|
+
data.tar.gz: 9cd5bbe3d4b59c5d272ae42bd58ef228132a4af6471ee7d31867a69742c8b9ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2a005d3d3d4550644d470ea734902fb3ba796de73d115a041dccbcdee85a675956427ee20e8a6fb68df91c8a5b96cc820458f61120e71ab64f568563145689a
|
7
|
+
data.tar.gz: 3eadd9f350b5138f808b7ce986f2b6a5b8f747c650788c36b7d46b1ed17eccde6b018862c1334e1277fe29a27f617fe08d44b45e2bed6f182888713df813c04f
|
data/.reek
CHANGED
@@ -11,7 +11,7 @@ detectors:
|
|
11
11
|
ControlParameter:
|
12
12
|
enabled: true
|
13
13
|
DuplicateMethodCall:
|
14
|
-
enabled:
|
14
|
+
enabled: false # too strict
|
15
15
|
FeatureEnvy:
|
16
16
|
enabled: false # too strict
|
17
17
|
InstanceVariableAssumption:
|
@@ -22,3 +22,8 @@ detectors:
|
|
22
22
|
enabled: true
|
23
23
|
LongYieldList:
|
24
24
|
enabled: true
|
25
|
+
TooManyStatements:
|
26
|
+
enabled: false # too strict
|
27
|
+
|
28
|
+
exclude_paths:
|
29
|
+
- vendor/
|
data/.rubocop.yml
CHANGED
@@ -6,6 +6,12 @@ AllCops:
|
|
6
6
|
NewCops: enable
|
7
7
|
TargetRubyVersion: 2.6
|
8
8
|
|
9
|
+
Layout/LeadingCommentSpace:
|
10
|
+
Enabled: false
|
11
|
+
|
12
|
+
Lint/SafeNavigationChain:
|
13
|
+
Enabled: false
|
14
|
+
|
9
15
|
Metrics/AbcSize:
|
10
16
|
Enabled: false
|
11
17
|
|
@@ -30,9 +36,24 @@ Metrics/MethodLength:
|
|
30
36
|
Metrics/PerceivedComplexity:
|
31
37
|
Enabled: false
|
32
38
|
|
39
|
+
Minitest/MultipleAssertions:
|
40
|
+
Enabled: false
|
41
|
+
|
42
|
+
Security/YAMLLoad:
|
43
|
+
Enabled: false
|
44
|
+
|
45
|
+
Style/CommentedKeyword:
|
46
|
+
Enabled: false
|
47
|
+
|
48
|
+
Style/DoubleNegation:
|
49
|
+
Enabled: false
|
50
|
+
|
33
51
|
Style/GlobalVars:
|
34
52
|
Enabled: false
|
35
53
|
|
54
|
+
Style/MixinUsage:
|
55
|
+
Enabled: false
|
56
|
+
|
36
57
|
Style/MultilineBlockChain:
|
37
58
|
Enabled: false
|
38
59
|
|
data/CHANGELOG.md
CHANGED
@@ -7,8 +7,6 @@
|
|
7
7
|
- hidden w , w/o () in names
|
8
8
|
- fix regexp in pathnames
|
9
9
|
|
10
|
-
- [ ] read file once to allow for tempdoc stream
|
11
|
-
|
12
10
|
- tree display
|
13
11
|
|
14
12
|
- [ ] mde options, user prompt, in md file or included file
|
@@ -39,6 +37,92 @@
|
|
39
37
|
- [ ] ren logged_stdout_filename_prefix to saved_stdout_filename_prefix
|
40
38
|
- [ ] ignore '#' in fenced code blocks
|
41
39
|
|
40
|
+
- [ ] write named block, can be included
|
41
|
+
- [ ] file type per block type
|
42
|
+
- [ ] file name per block name or specified in quotes ("")
|
43
|
+
- [ ] overwrite-rules for writing blocks
|
44
|
+
- [ ] erase-rules for written blocks
|
45
|
+
- [ ] files to create named at top of script to execute; written prior to start of script
|
46
|
+
|
47
|
+
- [ ] tab completion example ascii demo
|
48
|
+
|
49
|
+
- [ ] parameters or (env vars) in menu
|
50
|
+
- [ ] config menu or read env vars
|
51
|
+
- [ ] enable/disable script, output saving per file
|
52
|
+
- [ ] keep values between runs so same env vars are not prompted
|
53
|
+
|
54
|
+
- [ ] option to list full menu
|
55
|
+
|
56
|
+
- [ ] task confirmation block option or bash template, env names
|
57
|
+
|
58
|
+
- [ ] configuration block `mde_config` anywhere in file
|
59
|
+
- [ ] configuration block `mde_config` anywhere in folder config file
|
60
|
+
```yaml :(mde_config)```
|
61
|
+
- [x] fix execution stdin, stdout to allow for ask function
|
62
|
+
- [ ] fix execution stdin, stdout to allow for tty-prompt
|
63
|
+
- [ ] accept stdin as filename `-`
|
64
|
+
- [ ] fix
|
65
|
+
$ bin/mde
|
66
|
+
Choose a file: * Exit
|
67
|
+
No blocks found.
|
68
|
+
Choose a block: * Exit
|
69
|
+
|
70
|
+
- [ ] accept `!` shell execute command at prompt
|
71
|
+
- [ ] menu response: re-exec last saved script (like mde --select-recent-script)
|
72
|
+
|
73
|
+
- [ ] process shebang in markdown
|
74
|
+
- [ ] ignore shebang in markdown in rest of processing
|
75
|
+
- [! ] search for document in path
|
76
|
+
- [! ] search for document in custom path
|
77
|
+
- [ ] doc use of `#!/usr/bin/env mde`
|
78
|
+
- [ ] command to export each command to file, menu for list
|
79
|
+
- [ ] list of fenced code blocks to ignore, eg ```expect or ```mermaid
|
80
|
+
|
81
|
+
## [1.3.1] - 2022-10-29
|
82
|
+
|
83
|
+
### Added
|
84
|
+
|
85
|
+
- Delay to allow all command output to be received
|
86
|
+
- Display an error message when the specified document file is missing
|
87
|
+
- Options to display, format and colorize menu dividers and demarcations
|
88
|
+
- Tab completion for short option names
|
89
|
+
|
90
|
+
### Changed
|
91
|
+
|
92
|
+
- Fix handling of document supplied by process substitution
|
93
|
+
|
94
|
+
## [1.3.0] - 2022-07-16
|
95
|
+
|
96
|
+
### Added
|
97
|
+
|
98
|
+
- Short name `-p` for `--user-must-approve` option
|
99
|
+
Enable/disable pause for user to review and approve script
|
100
|
+
- Automatic wrapping for data in blocks of yaml data eg ` ```yaml `
|
101
|
+
Data is written to the file named in the fenced block heading
|
102
|
+
- Data transformations are embedded in the script at every invocation
|
103
|
+
with arguments to the transformation as stdin and stdout for the `yq` process
|
104
|
+
eg `export fruit_summary=$(yq e '[.fruit.name,.fruit.price]' fruit.yml)`
|
105
|
+
for invocation `%(summarize_fruits <fruit.yml >fruit_summary)`
|
106
|
+
and transformation `[.fruit.name,.fruit.price]`
|
107
|
+
- Option to extract document text and display it as disabled items in-line with the blocks in the selection menu.
|
108
|
+
Add options for constants used in parsing.
|
109
|
+
- [x] yaml processing
|
110
|
+
- ```yaml :(make_fruit_file) >fruit.yml```
|
111
|
+
write to: fruit.yml
|
112
|
+
- ```yq [summarize_fruits] +(make_fruit_file) <fruit.yml =color_price```
|
113
|
+
not included in linear script
|
114
|
+
read from: fruit.yml
|
115
|
+
result into var: color_price instead of stdout
|
116
|
+
- ```bash :show_fruit_yml +(summarize_fruits)```
|
117
|
+
include summarize_fruits
|
118
|
+
output value of var color_price
|
119
|
+
|
120
|
+
### Changed
|
121
|
+
|
122
|
+
- Refactoring
|
123
|
+
- Run-time menu in YAML file.
|
124
|
+
- Tap module initialization
|
125
|
+
|
42
126
|
## [1.2.0] - 2022-06-11
|
43
127
|
|
44
128
|
### Added
|
@@ -180,7 +264,7 @@ e.g. `MDE_OUTPUT_VIEWER_OPTIONS="-a '/Applications/Sublime Text.app'" mde --sele
|
|
180
264
|
|
181
265
|
| YAML Name | Environment Variable | Default |
|
182
266
|
| :--- | :--- | :--- |
|
183
|
-
|
|
267
|
+
| block_name_hidden_match | MDE_BLOCK_NAME_HIDDEN_MATCH | `^\(.+\)$` |
|
184
268
|
| block_name_match | MDE_BLOCK_NAME_MATCH | `:(?<title>\S+)( \|$)` |
|
185
269
|
| block_required_scan | MDE_BLOCK_REQUIRED_SCAN | `\+\S+` |
|
186
270
|
| fenced_start_and_end_match | MDE_FENCED_START_AND_END_MATCH | ``^`{3,}`` |
|
data/Gemfile
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# echo "gem: --no-document" >> ~/.gemrc
|
4
|
+
# bundle install --path vendor/bundle
|
5
|
+
|
3
6
|
source 'https://rubygems.org'
|
4
7
|
|
5
8
|
gemspec
|
@@ -8,9 +11,11 @@ gem 'erb'
|
|
8
11
|
gem 'minitest', '~> 5.0'
|
9
12
|
gem 'rake', '~> 13.0'
|
10
13
|
gem 'reek'
|
14
|
+
# gem 'rspec'
|
11
15
|
gem 'rubocop', '~> 1.21'
|
12
16
|
gem 'rubocop-minitest', require: false
|
13
17
|
gem 'rubocop-rake', require: false
|
18
|
+
# gem 'rubocop-rspec', require: false
|
14
19
|
gem 'shellwords'
|
15
20
|
gem 'uri'
|
16
21
|
gem 'yaml'
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
markdown_exec (1.
|
4
|
+
markdown_exec (1.3.1)
|
5
5
|
clipboard (~> 1.3.6)
|
6
6
|
open3 (~> 0.1.1)
|
7
7
|
optparse (~> 0.1.1)
|
@@ -12,16 +12,17 @@ GEM
|
|
12
12
|
remote: https://rubygems.org/
|
13
13
|
specs:
|
14
14
|
ast (2.4.2)
|
15
|
-
cgi (0.3.
|
15
|
+
cgi (0.3.3)
|
16
16
|
clipboard (1.3.6)
|
17
17
|
erb (2.2.3)
|
18
18
|
cgi
|
19
|
+
json (2.6.2)
|
19
20
|
kwalify (0.7.2)
|
20
|
-
minitest (5.
|
21
|
+
minitest (5.16.3)
|
21
22
|
open3 (0.1.1)
|
22
23
|
optparse (0.1.1)
|
23
|
-
parallel (1.
|
24
|
-
parser (3.1.1
|
24
|
+
parallel (1.22.1)
|
25
|
+
parser (3.1.2.1)
|
25
26
|
ast (~> 2.4.1)
|
26
27
|
pastel (0.8.0)
|
27
28
|
tty-color (~> 0.5)
|
@@ -31,20 +32,21 @@ GEM
|
|
31
32
|
kwalify (~> 0.7.0)
|
32
33
|
parser (~> 3.1.0)
|
33
34
|
rainbow (>= 2.0, < 4.0)
|
34
|
-
regexp_parser (2.
|
35
|
+
regexp_parser (2.6.0)
|
35
36
|
rexml (3.2.5)
|
36
|
-
rubocop (1.
|
37
|
+
rubocop (1.37.1)
|
38
|
+
json (~> 2.3)
|
37
39
|
parallel (~> 1.10)
|
38
|
-
parser (>= 3.1.
|
40
|
+
parser (>= 3.1.2.1)
|
39
41
|
rainbow (>= 2.2.2, < 4.0)
|
40
42
|
regexp_parser (>= 1.8, < 3.0)
|
41
|
-
rexml
|
42
|
-
rubocop-ast (>= 1.
|
43
|
+
rexml (>= 3.2.5, < 4.0)
|
44
|
+
rubocop-ast (>= 1.23.0, < 2.0)
|
43
45
|
ruby-progressbar (~> 1.7)
|
44
46
|
unicode-display_width (>= 1.4.0, < 3.0)
|
45
|
-
rubocop-ast (1.
|
47
|
+
rubocop-ast (1.23.0)
|
46
48
|
parser (>= 3.1.1.0)
|
47
|
-
rubocop-minitest (0.
|
49
|
+
rubocop-minitest (0.22.2)
|
48
50
|
rubocop (>= 0.90, < 2.0)
|
49
51
|
rubocop-rake (0.6.0)
|
50
52
|
rubocop (~> 1.0)
|
@@ -60,7 +62,7 @@ GEM
|
|
60
62
|
tty-screen (~> 0.8)
|
61
63
|
wisper (~> 2.0)
|
62
64
|
tty-screen (0.8.1)
|
63
|
-
unicode-display_width (2.
|
65
|
+
unicode-display_width (2.3.0)
|
64
66
|
uri (0.11.0)
|
65
67
|
wisper (2.0.1)
|
66
68
|
yaml (0.2.0)
|
data/README.md
CHANGED
@@ -49,7 +49,7 @@ Displays help information.
|
|
49
49
|
|
50
50
|
#### `mde`
|
51
51
|
|
52
|
-
Process `README.md` file in the current folder. Displays all the blocks in the file and allows you to select using [up], [down], and [return].
|
52
|
+
Process `README.md` file in the current folder. Displays all the blocks in the file and allows you to select using [up], [down], and [return].
|
53
53
|
|
54
54
|
#### `mde my.md` or `mde -f my.md`
|
55
55
|
|
@@ -159,7 +159,7 @@ echo "source $(mde --pwd)/bin/tab_completion.sh" >> ~/.bash_profile
|
|
159
159
|
### Behavior
|
160
160
|
|
161
161
|
Press tab for completions appropriate to the current input.
|
162
|
-
`mde <...> <prior word> <current word>`
|
162
|
+
`mde <...> <prior word> <current word><TAB>`
|
163
163
|
|
164
164
|
Completions are calculated based on the current word and the prior word.
|
165
165
|
1. If the current word starts with `-`, present matching options, eg `--version` for the current word `--v`.
|
@@ -171,7 +171,7 @@ Completions are calculated based on the current word and the prior word.
|
|
171
171
|
|
172
172
|
In the table below, tab is indicated by `!`
|
173
173
|
| Input | Completions |
|
174
|
-
|
|
174
|
+
| :--- | :--- |
|
175
175
|
| `mde !` | local files and folders |
|
176
176
|
| `mde -!` | all options |
|
177
177
|
| `mde --!` | all options |
|
@@ -213,4 +213,81 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
213
213
|
|
214
214
|
# Code of Conduct
|
215
215
|
|
216
|
-
Everyone interacting in the MarkdownExec project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
216
|
+
Everyone interacting in the MarkdownExec project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/fareedst/markdown_exec/blob/master/CODE_OF_CONDUCT.md).
|
217
|
+
|
218
|
+
|
219
|
+
``` :test_vars +(echo_vars)
|
220
|
+
vars1=$(
|
221
|
+
echo '1'
|
222
|
+
whoami
|
223
|
+
echo '2'
|
224
|
+
pwd
|
225
|
+
echo '3'
|
226
|
+
stat README.md
|
227
|
+
echo '4'
|
228
|
+
/bin/ls
|
229
|
+
echo '5'
|
230
|
+
whoami
|
231
|
+
echo '6'
|
232
|
+
)
|
233
|
+
```
|
234
|
+
|
235
|
+
``` :(echo_vars)
|
236
|
+
echo "vars1: ${vars1:-missing}"
|
237
|
+
```
|
238
|
+
|
239
|
+
```bash :test_quick
|
240
|
+
cat README.md
|
241
|
+
```
|
242
|
+
|
243
|
+
- `echo "gem: --no-document" >> ~/.gemrc`
|
244
|
+
|
245
|
+
- `bundle install --path vendor/bundle`
|
246
|
+
|
247
|
+
```
|
248
|
+
bundle exec rake test
|
249
|
+
bundle exec rake rubocopminitest
|
250
|
+
# bundle exec rake reek
|
251
|
+
reek --config .reek .
|
252
|
+
```
|
253
|
+
|
254
|
+
```
|
255
|
+
bundle exec rake build
|
256
|
+
```
|
257
|
+
includes Rake::Task['update_menu_yml'].execute
|
258
|
+
Rake::Task['update_tab_completion'].execute
|
259
|
+
|
260
|
+
```
|
261
|
+
bundle exec rake uninstall
|
262
|
+
```
|
263
|
+
|
264
|
+
```
|
265
|
+
bundle exec rake install
|
266
|
+
```
|
267
|
+
|
268
|
+
```
|
269
|
+
bundle exec rake publish
|
270
|
+
```
|
271
|
+
|
272
|
+
```
|
273
|
+
bundle exec rake --tasks
|
274
|
+
```
|
275
|
+
```expect
|
276
|
+
rake build # Build markdown_exec-1.3.0.9.gem into the pkg directory / gem build
|
277
|
+
rake clean # Remove any temporary products / gem build clean
|
278
|
+
rake clobber # Remove any generated files
|
279
|
+
rake install # Build and install markdown_exec-1.3.0.9.gem into system gems / gem install
|
280
|
+
rake install:local # Build and install markdown_exec-1.3.0.9.gem into system gems without network access
|
281
|
+
rake publish # gem publish
|
282
|
+
rake reek # reek
|
283
|
+
rake release[remote] # Create tag v1.3.0.9 and build and push markdown_exec-1.3.0.9.gem to rubygems.org
|
284
|
+
rake rubocop # Run RuboCop
|
285
|
+
rake rubocop:autocorrect # Autocorrect RuboCop offenses (only when it's safe)
|
286
|
+
rake rubocop:autocorrect_all # Autocorrect RuboCop offenses (safe and unsafe)
|
287
|
+
rake rubocopminitest # named task because minitest not included in rubocop tests
|
288
|
+
rake test # Run tests
|
289
|
+
rake uninstall # gem uninstall
|
290
|
+
rake update_installed_tab_completion # update installed tab_completion.sh
|
291
|
+
rake update_menu_yml # update menu.yml
|
292
|
+
rake update_tab_completion # update tab_completion.sh
|
293
|
+
```
|