markdown_exec 0.2.1 → 0.2.5
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/.rubocop.yml +5 -0
- data/CHANGELOG.md +132 -1
- data/Gemfile +2 -0
- data/Gemfile.lock +7 -1
- data/README.md +117 -31
- data/Rakefile +18 -6
- data/assets/approve_code.png +0 -0
- data/assets/example_blocks.png +0 -0
- data/assets/output_of_execution.png +0 -0
- data/assets/select_a_block.png +0 -0
- data/assets/select_a_file.png +0 -0
- data/fixtures/bash1.md +12 -0
- data/fixtures/bash2.md +15 -0
- data/fixtures/exclude1.md +6 -0
- data/fixtures/exclude2.md +9 -0
- data/fixtures/exec1.md +8 -0
- data/fixtures/heading1.md +19 -0
- data/fixtures/sample1.md +9 -0
- data/fixtures/title1.md +6 -0
- data/lib/markdown_exec/version.rb +2 -2
- data/lib/markdown_exec.rb +613 -268
- metadata +21 -11
- data/assets/approve.png +0 -0
- data/assets/blocks.png +0 -0
- data/assets/executed.png +0 -0
- data/assets/select.png +0 -0
- data/assets/select_file.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95d097cfcf93e09ba3bf487989923d4be03dd9fde0521854ea0660850b157d01
|
4
|
+
data.tar.gz: 22bc0e8bc8cd35d0d1dd52b6275c1609fb4cb95d69bd125064f0ca16f2f931f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 591c09a221c0f5a34f8523d99d8e416bb022219fee38a7a05e3541600b03132e5ae3cc6aee02048eda2170a408d9e86090dedadff7c16f1f79ea98469826c27a
|
7
|
+
data.tar.gz: 74a76b6a6b10b165f8e79e59d25db78bcba173d730fd1a696e73c2012794bcfedd7c1b648cabe6b15d4d0a70995e5303b02c58d0b16c35a03ffbfea0b4efc5f4
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,135 @@
|
|
1
|
-
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## [ToDo]
|
4
|
+
|
5
|
+
- pipe stdin to script
|
6
|
+
- yes/no/write/clipboard/record/edit/history
|
7
|
+
- present timestamp, result of last exec for each command
|
8
|
+
- user settings
|
9
|
+
- hidden w , w/o () in names
|
10
|
+
- fix regexp in pathnames
|
11
|
+
- tab completion from md file
|
12
|
+
- read file once to allow for tempdoc stream
|
13
|
+
- include md or blocks file
|
14
|
+
|
15
|
+
- tree display
|
16
|
+
|
17
|
+
- mde options in md file or included file
|
18
|
+
|
19
|
+
- include blocks from local md file
|
20
|
+
|
21
|
+
- chmod a+x logged script
|
22
|
+
|
23
|
+
- add shebang to saved script
|
24
|
+
|
25
|
+
## [0.2.5] - 2022-04
|
26
|
+
|
27
|
+
### Added
|
28
|
+
|
29
|
+
- Command `--list-default-env` to show default configuration as environment variables.
|
30
|
+
- Command `--list-default-yaml` to show default configuration as YAML.
|
31
|
+
- Option to exit program when selecting files or blocks.
|
32
|
+
|
33
|
+
### Changed
|
34
|
+
|
35
|
+
- Composition of menu to facilitate reports.
|
36
|
+
- List default values in menu help.
|
37
|
+
|
38
|
+
## [0.2.4] - 2022-04-01
|
39
|
+
|
40
|
+
### Added
|
41
|
+
|
42
|
+
- Command `--list-recent-scripts` to list the last *N* saved scripts.
|
43
|
+
- Command `--run-last-script` to re-run the last saved script.
|
44
|
+
- Command `--select-recent-script` to select and execute a recently saved script.
|
45
|
+
|
46
|
+
| YAML Name | Environment Variable | Option Name | Default | Purpose |
|
47
|
+
| :--- | :--- | :--- | :--- | :--- |
|
48
|
+
| list_count | MDE_LIST_COUNT | `--list-count` | `16` | Max. items to return in list |
|
49
|
+
| logged_stdout_filename_prefix | MDE_LOGGED_STDOUT_FILENAME_PREFIX | | `mde` | Name prefix for stdout files |
|
50
|
+
| save_execution_output | MDE_SAVE_EXECUTION_OUTPUT | `--save-execution-output` | False | Save standard output of the executed script |
|
51
|
+
| saved_script_filename_prefix | MDE_SAVED_SCRIPT_FILENAME_PREFIX | | `mde` | Name prefix for saved scripts |
|
52
|
+
| saved_script_folder | MDE_SAVED_SCRIPT_FOLDER | `--saved-script-folder` | `logs` | Saved script folder |
|
53
|
+
| saved_script_glob | MDE_SAVED_SCRIPT_GLOB | | `mde_*.sh` | Glob matching saved scripts |
|
54
|
+
| saved_stdout_folder | MDE_SAVED_STDOUT_FOLDER | `--saved-stdout-folder` | `logs` | Saved stdout folder |
|
55
|
+
|
56
|
+
### Changed
|
57
|
+
|
58
|
+
- Fix saving of executed script.
|
59
|
+
- Sort configuration keys output by `-0` (Show configuration.)
|
60
|
+
|
61
|
+
## [0.2.3] - 2022-03-29
|
62
|
+
|
63
|
+
### Added
|
64
|
+
|
65
|
+
- `rubocop` checks.
|
66
|
+
- Added optional command-line positional arguments:
|
67
|
+
1. document file
|
68
|
+
2. block name
|
69
|
+
|
70
|
+
e.g. `mde doc1 block1` will execute the block named `block1` in file `doc1`.
|
71
|
+
|
72
|
+
### Changed
|
73
|
+
|
74
|
+
- Naming saved script files: The file name contains the time stamp, document name, and block name.
|
75
|
+
- Renamed folder with fixtures.
|
76
|
+
- Command options:
|
77
|
+
|
78
|
+
| YAML Name | Environment Variable | Option Name | Default | Purpose |
|
79
|
+
| :--- | :--- | :--- | :--- | :--- |
|
80
|
+
| debug | MDE_DEBUG | `--debug` | False | Output debugging information (verbose) |
|
81
|
+
| filename | MDE_FILENAME | `--filename` | `README.md`* | File name of document |
|
82
|
+
| output_execution_summary | MDE_OUTPUT_STDOUT_SUMMARY | `--output-execution-summary` | False | Display summary for execution |
|
83
|
+
| output_script | MDE_OUTPUT_SCRIPT | `--output-script` | False | Display script |
|
84
|
+
| output_stdout | MDE_OUTPUT_EXECUTION | `--output-stdout` | True | Display standard output from execution |
|
85
|
+
| path | MDE_PATH | `--path` | `.` | Path to document(s) |
|
86
|
+
| save_executed_script | MDE_SAVE_EXECUTED_SCRIPT | `--save-executed-script` | False | Save executed script |
|
87
|
+
| saved_script_folder | MDE_SAVED_SCRIPT_FOLDER | `--saved-script-folder` | `logs` | Saved script folder |
|
88
|
+
| select_page_height | MDE_SELECT_PAGE_HEIGHT | | `12` | Menu page height (maximum) |
|
89
|
+
| user_must_approve | MDE_USER_MUST_APPROVE | `--user-must-approve` | True | Pause to approve execution |
|
90
|
+
|
91
|
+
- Configuration options:
|
92
|
+
|
93
|
+
| YAML Name | Environment Variable | Default |
|
94
|
+
| :--- | :--- | :--- |
|
95
|
+
| block_name_excluded_match | MDE_BLOCK_NAME_EXCLUDED_MATCH | `^\(.+\)$` |
|
96
|
+
| block_name_match | MDE_BLOCK_NAME_MATCH | `:(?<title>\S+)( \|$)` |
|
97
|
+
| block_required_scan | MDE_BLOCK_REQUIRED_SCAN | `\+\S+` |
|
98
|
+
| fenced_start_and_end_match | MDE_FENCED_START_AND_END_MATCH | ``^`{3,}`` |
|
99
|
+
| fenced_start_ex_match | MDE_FENCED_START_EX_MATCH | ``^`{3,}(?<shell>[^`\s]*) *(?<name>.*)$`` |
|
100
|
+
| heading1_match | MDE_HEADING1_MATCH | `^# *(?<name>[^#]*?) *$` |
|
101
|
+
| heading2_match | MDE_HEADING2_MATCH | `^## *(?<name>[^#]*?) *$` |
|
102
|
+
| heading3_match | MDE_HEADING3_MATCH | `^### *(?<name>.+?) *$` |
|
103
|
+
| md_filename_glob | MDE_MD_FILENAME_GLOB | `*.[Mm][Dd]` |
|
104
|
+
| md_filename_match | MDE_MD_FILENAME_MATCH | `.+\\.md` |
|
105
|
+
|
106
|
+
Most options can be configured in multiple ways. In order of use (earliest superceded by last):
|
107
|
+
1. environment variables
|
108
|
+
2. the configuration file `.mde.yml` in the current folder
|
109
|
+
3. command line arguments
|
110
|
+
|
111
|
+
#### Representing boolean values
|
112
|
+
|
113
|
+
Boolean values for options are specified as strings and interpreted as:
|
114
|
+
| Value | Boolean |
|
115
|
+
| :---: | :---: |
|
116
|
+
| *empty string* | False |
|
117
|
+
| `0` | False |
|
118
|
+
| `1` | True |
|
119
|
+
| *anything else* | True |
|
120
|
+
|
121
|
+
E.g. `opt1=1` will set option `opt1` to True.
|
122
|
+
|
123
|
+
Boolean options configured with environment variables:
|
124
|
+
- Set to `1` or non-empty value to save executed scripts; empty or `0` to disable saving.
|
125
|
+
e.g. `export MDE_SAVE_EXECUTED_SCRIPT=1`
|
126
|
+
e.g. `export MDE_SAVE_EXECUTED_SCRIPT=`
|
127
|
+
- Specify variable on command line.
|
128
|
+
e.g. `MDE_SAVE_EXECUTED_SCRIPT=1 mde`
|
129
|
+
|
130
|
+
## [0.2.2] - 2022-03-17
|
131
|
+
|
132
|
+
- Update documentation.
|
2
133
|
|
3
134
|
## [0.2.1] - 2022-03-12
|
4
135
|
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
markdown_exec (0.
|
4
|
+
markdown_exec (0.2.5)
|
5
5
|
open3 (~> 0.1.1)
|
6
6
|
optparse (~> 0.1.1)
|
7
7
|
tty-prompt (~> 0.23.1)
|
@@ -34,6 +34,10 @@ GEM
|
|
34
34
|
unicode-display_width (>= 1.4.0, < 3.0)
|
35
35
|
rubocop-ast (1.16.0)
|
36
36
|
parser (>= 3.1.1.0)
|
37
|
+
rubocop-minitest (0.18.0)
|
38
|
+
rubocop (>= 0.90, < 2.0)
|
39
|
+
rubocop-rake (0.6.0)
|
40
|
+
rubocop (~> 1.0)
|
37
41
|
ruby-progressbar (1.11.0)
|
38
42
|
tty-color (0.6.0)
|
39
43
|
tty-cursor (0.7.1)
|
@@ -57,6 +61,8 @@ DEPENDENCIES
|
|
57
61
|
minitest (~> 5.0)
|
58
62
|
rake (~> 13.0)
|
59
63
|
rubocop (~> 1.21)
|
64
|
+
rubocop-minitest
|
65
|
+
rubocop-rake
|
60
66
|
|
61
67
|
BUNDLED WITH
|
62
68
|
2.2.32
|
data/README.md
CHANGED
@@ -1,56 +1,146 @@
|
|
1
1
|
# MarkdownExec
|
2
2
|
|
3
|
-
|
3
|
+
Interactively select and execute fenced code blocks in markdown files. Build complex scripts by naming and requiring blocks. Log resulting scripts and output. Re-run scripts.
|
4
4
|
|
5
|
-
* Code blocks may be named.
|
5
|
+
* Code blocks may be named. Named blocks can be required by other blocks.
|
6
6
|
|
7
|
-
*
|
7
|
+
* The user-selected code block, and all required blocks, are arranged into a script in the order they appear in the markdown file. The script can be presented for approval prior to execution.
|
8
8
|
|
9
|
-
*
|
9
|
+
* Executed scripts can be saved. Saved scripts can be listed, selected, and executed.
|
10
10
|
|
11
|
-
*
|
11
|
+
* Output from executed scripts can be saved.
|
12
|
+
|
13
|
+
## Screenshots
|
14
|
+
|
15
|
+
### Select a file
|
16
|
+
|
17
|
+

|
18
|
+
|
19
|
+
### Select a block
|
20
|
+
|
21
|
+

|
22
|
+
|
23
|
+
### Approve code
|
24
|
+
|
25
|
+

|
26
|
+
|
27
|
+
### Output
|
28
|
+
|
29
|
+

|
30
|
+
|
31
|
+
### Example blocks
|
32
|
+
|
33
|
+

|
12
34
|
|
13
35
|
## Installation
|
14
36
|
|
15
37
|
Install:
|
16
|
-
|
17
38
|
$ gem install markdown_exec
|
18
39
|
|
19
40
|
## Usage
|
20
41
|
|
21
|
-
|
42
|
+
### Help
|
43
|
+
|
44
|
+
#### `mde --help`
|
45
|
+
|
22
46
|
Displays help information.
|
23
47
|
|
24
|
-
|
48
|
+
### Basic
|
49
|
+
|
50
|
+
#### `mde`
|
51
|
+
|
25
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]. Press [ctrl]-c to abort selection.
|
26
53
|
|
27
|
-
`mde -f my.md`
|
28
|
-
|
54
|
+
#### `mde my.md` or `mde -f my.md`
|
55
|
+
|
29
56
|
Select a block to execute from `my.md`.
|
30
57
|
|
31
|
-
`mde -p .`
|
32
|
-
|
58
|
+
#### `mde .` or `mde -p .`
|
59
|
+
|
33
60
|
Select a markdown file in the current folder. Select a block to execute from that file.
|
34
61
|
|
35
|
-
|
62
|
+
### Report documents and blocks
|
63
|
+
|
64
|
+
#### `mde --list-blocks`
|
65
|
+
|
36
66
|
List all blocks in the all the markdown documents in the current folder.
|
37
67
|
|
38
|
-
`mde --list-docs`
|
68
|
+
#### `mde --list-docs`
|
69
|
+
|
39
70
|
List all markdown documents in the current folder.
|
40
71
|
|
72
|
+
### Configuration
|
73
|
+
|
74
|
+
#### `mde --list-default-env` or `mde --list-default-yaml`
|
75
|
+
|
76
|
+
List default values that can be set in configuration file, environment, and command line.
|
77
|
+
|
78
|
+
#### `mde -0`
|
79
|
+
|
80
|
+
Show current configuation values that will be applied to the current run. Does not interrupt processing.
|
81
|
+
|
82
|
+
### Save scripts
|
83
|
+
|
84
|
+
#### `mde --save-executed-script 1`
|
85
|
+
|
86
|
+
Save executed script in saved script folder.
|
87
|
+
|
88
|
+
#### `mde --list-recent-scripts`
|
89
|
+
|
90
|
+
List recent saved scripts in saved script folder.
|
91
|
+
|
92
|
+
#### `mde --select-recent-script`
|
93
|
+
|
94
|
+
Select and execute a recently saved script in saved script folder.
|
95
|
+
|
96
|
+
### Save output
|
97
|
+
|
98
|
+
#### `mde --save-execution-output 1`
|
99
|
+
|
100
|
+
Save execution output in saved output folder.
|
101
|
+
|
41
102
|
## Behavior
|
103
|
+
|
42
104
|
* If no file and no folder are specified, blocks within `./README.md` are presented.
|
43
105
|
* If a file is specified, its blocks are presented.
|
44
106
|
* If a folder is specified, its files are presented. When a file is selected, its blocks are presented.
|
45
107
|
|
46
108
|
## Configuration
|
47
109
|
|
48
|
-
|
110
|
+
### Environment Variables
|
49
111
|
|
50
|
-
|
112
|
+
When executed, `mde` reads the current environment.
|
113
|
+
* Configuration in current and children shells, e.g. `export MDE_SAVE_EXECUTED_SCRIPT=1`.
|
114
|
+
* Configuration for the current command, e.g. `MDE_SAVE_EXECUTED_SCRIPT=1 mde`.
|
51
115
|
|
52
|
-
|
53
|
-
|
116
|
+
### Configuration Files
|
117
|
+
|
118
|
+
* Configuration in all shells, e.g. environment variables set in your user's `~/.bashrc` or `~/.bash_profile` files.
|
119
|
+
* Configuration in the optional file `.mde.yml` in the current folder. .e.g. `save_executed_script: true`
|
120
|
+
* Configuration in a YAML file and read while parsing the inputs, e.g. `--config my_path/my_file.yml`
|
121
|
+
|
122
|
+
### Program Arguments
|
123
|
+
|
124
|
+
* Configuration in command options, e.g. `mde --save-executed-script 1`
|
125
|
+
|
126
|
+
## Representing boolean values
|
127
|
+
|
128
|
+
Boolean values expressed as strings are interpreted as:
|
129
|
+
| String | Boolean |
|
130
|
+
| :---: | :---: |
|
131
|
+
| *empty string* | False |
|
132
|
+
| `0` | False |
|
133
|
+
| `1` | True |
|
134
|
+
| *anything else* | True |
|
135
|
+
|
136
|
+
E.g. `opt1=1` will set option `opt1` to True.
|
137
|
+
|
138
|
+
Boolean options configured with environment variables:
|
139
|
+
- Set to `1` or non-empty value to save executed scripts; empty or `0` to disable saving.
|
140
|
+
e.g. `export MDE_SAVE_EXECUTED_SCRIPT=1`
|
141
|
+
e.g. `export MDE_SAVE_EXECUTED_SCRIPT=`
|
142
|
+
- Specify variable on command line.
|
143
|
+
e.g. `MDE_SAVE_EXECUTED_SCRIPT=1 mde`
|
54
144
|
|
55
145
|
# Example blocks
|
56
146
|
|
@@ -76,20 +166,16 @@ export ACTIVITY=asleep
|
|
76
166
|
echo "$TIME -> $ACTIVITY"
|
77
167
|
```
|
78
168
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
## Selecting a file
|
83
|
-

|
84
|
-
|
85
|
-
## Selecting a block
|
86
|
-

|
87
|
-
|
88
|
-
## Approving code
|
89
|
-

|
169
|
+
``` :missing_command
|
170
|
+
fail
|
171
|
+
```
|
90
172
|
|
91
|
-
|
92
|
-
|
173
|
+
``` :exit_value
|
174
|
+
echo "a"
|
175
|
+
echo "b"
|
176
|
+
echo "c" >>/dev/stderr
|
177
|
+
grep nx Gemfile
|
178
|
+
```
|
93
179
|
|
94
180
|
# License
|
95
181
|
|
data/Rakefile
CHANGED
@@ -3,38 +3,50 @@
|
|
3
3
|
require 'bundler/gem_tasks'
|
4
4
|
require 'rake/testtask'
|
5
5
|
|
6
|
-
Rake::TestTask.new(:test) do |
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
Rake::TestTask.new(:test) do |task|
|
7
|
+
task.libs << 'test'
|
8
|
+
task.libs << 'lib'
|
9
|
+
task.test_files = FileList['test/**/*_test.rb']
|
10
10
|
end
|
11
11
|
|
12
12
|
require 'rubocop/rake_task'
|
13
13
|
|
14
|
-
RuboCop::RakeTask.new
|
14
|
+
RuboCop::RakeTask.new do |task|
|
15
|
+
# task.requires << 'rubocop-minitest'
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'named task because minitest not included in rubocop tests'
|
19
|
+
task :rubocopminitest do
|
20
|
+
`rubocop --require rubocop-minitest`
|
21
|
+
end
|
15
22
|
|
16
23
|
require_relative 'lib/markdown_exec/version'
|
17
24
|
|
18
|
-
task default: %i[test rubocop]
|
25
|
+
task default: %i[test rubocop rubocopminitest]
|
19
26
|
|
20
27
|
# task :default => :build
|
21
28
|
|
29
|
+
desc 'gem build'
|
22
30
|
task :build do
|
23
31
|
system "gem build #{MarkdownExec::GEM_NAME}.gemspec"
|
24
32
|
end
|
25
33
|
|
34
|
+
desc 'gem install'
|
26
35
|
task install: :build do
|
27
36
|
system "gem install #{MarkdownExec::GEM_NAME}-#{MarkdownExec::VERSION}.gem"
|
28
37
|
end
|
29
38
|
|
39
|
+
desc 'gem publish'
|
30
40
|
task publish: :build do
|
31
41
|
system "gem push #{MarkdownExec::GEM_NAME}-#{MarkdownExec::VERSION}.gem"
|
32
42
|
end
|
33
43
|
|
44
|
+
desc 'gem uninstall'
|
34
45
|
task uninstall: :build do
|
35
46
|
system "gem uninstall #{MarkdownExec::GEM_NAME}"
|
36
47
|
end
|
37
48
|
|
49
|
+
desc 'gem build clean'
|
38
50
|
task :clean do
|
39
51
|
system 'rm *.gem'
|
40
52
|
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/fixtures/bash1.md
ADDED
data/fixtures/bash2.md
ADDED
data/fixtures/exec1.md
ADDED
data/fixtures/sample1.md
ADDED
data/fixtures/title1.md
ADDED