markdown_exec 0.0.6 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8c89f954d1fc114cb22e9222ebc2c7d0575848d597899e1385edbf7b5963f08b
4
- data.tar.gz: f14d0e24a3c348c303e96014b68a477d560ed1c3c707ac486173ffe19513df1d
3
+ metadata.gz: d9bea3a54afa348fb845a58f5878a0ffaa7c1054c3ddcb3444d67a8ab82f3f33
4
+ data.tar.gz: 3c305eb76fc06e013f38978144d668d864a67903d2be9a9de8eaa1e0f221c448
5
5
  SHA512:
6
- metadata.gz: b78cd2cfbef3c47acd318c173fa953891f83c29ea2ac59b062dafc2e2ce8573c4f862f2e681cacb6ebd827dc77b10b984dd8a33a1349849357e9c64ab564932d
7
- data.tar.gz: 8f8282f7a5a171dee4c83f9fce9974f48b7ee55b43d25651bfebaec0f46b97028c1ed58bd23ea85a796f949cd1eeae923d6899a5efb448879de96aa37287915d
6
+ metadata.gz: 3ba10e7a6a74ad1d13c08c3f19ec7ccde273df98a15194022fd803088bfa5c11a880a1f2b094b9b9e9f8979a998b480afd133252bf7b5e960bd2a7f856f26c2f
7
+ data.tar.gz: 3e031e16cf98a6301677d05caf09da89c227a32139c62f2844567e73acb5404171aa204a0bbf823844afab4e29a54894161f12a585d57e5223e304e587f96e2b
data/Gemfile.lock CHANGED
@@ -1,14 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- markdown_exec (0.0.3)
4
+ markdown_exec (0.1.1)
5
+ open3 (~> 0.1.1)
6
+ optparse (~> 0.1.1)
5
7
  tty-prompt (~> 0.23.1)
8
+ yaml (~> 0.2.0)
6
9
 
7
10
  GEM
8
11
  remote: https://rubygems.org/
9
12
  specs:
10
13
  ast (2.4.2)
11
14
  minitest (5.15.0)
15
+ open3 (0.1.1)
16
+ optparse (0.1.1)
12
17
  parallel (1.21.0)
13
18
  parser (3.1.1.0)
14
19
  ast (~> 2.4.1)
@@ -42,6 +47,7 @@ GEM
42
47
  tty-screen (0.8.1)
43
48
  unicode-display_width (2.1.0)
44
49
  wisper (2.0.1)
50
+ yaml (0.2.0)
45
51
 
46
52
  PLATFORMS
47
53
  arm64-darwin-21
data/README.md CHANGED
@@ -1,38 +1,38 @@
1
1
  # MarkdownExec
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/markdown_exec`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ This gem allows you to run code blocks in markdown files.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ * Code blocks can be named.
6
6
 
7
- ## Installation
8
-
9
- Add this line to your application's Gemfile:
10
-
11
- ```ruby
12
- gem 'markdown_exec'
13
- ```
7
+ * Named blocks can be required by other blocks.
14
8
 
15
- And then execute:
9
+ * The selected code block, and all required blocks, are collected in the order they appear in the markdown file.
16
10
 
17
- $ bundle install
11
+ ## Installation
18
12
 
19
- Or install it yourself as:
13
+ Install:
20
14
 
21
15
  $ gem install markdown_exec
22
16
 
23
17
  ## Usage
24
18
 
25
- TODO: Write usage instructions here
19
+ `mde --help`
20
+ Displays help information.
26
21
 
27
- ## Development
22
+ `mde`
23
+ Process `README.md` file in the current directory. Displays all the blocks in the file and allows you to select using [up], [down], and [return]. Press [ctrl]-c to abort selection.
28
24
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
25
+ `mde -f my.md`
26
+ Process `my.md` file in the current directory.
30
27
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
28
+ `mde -p child`
29
+ Process markdown files in the `child` directory.
32
30
 
33
- ## Contributing
31
+ `mde --list-blocks`
32
+ List all blocks in the selected files.
34
33
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/markdown_exec. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/markdown_exec/blob/master/CODE_OF_CONDUCT.md).
34
+ `mde --list-docs`
35
+ List all markdown documents in the selected folder.
36
36
 
37
37
  ## License
38
38
 
@@ -41,24 +41,3 @@ The gem is available as open source under the terms of the [MIT License](https:/
41
41
  ## Code of Conduct
42
42
 
43
43
  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/[USERNAME]/markdown_exec/blob/master/CODE_OF_CONDUCT.md).
44
-
45
- # 2022-03-06
46
- ```
47
- gem build markdown_exec.gemspec
48
- ```
49
- ```expect
50
- Successfully built RubyGem
51
- Name: markdown_exec
52
- Version: 0.0.1
53
- File: markdown_exec-0.0.1.gem
54
- ```
55
- ```
56
- gem install ./markdown_exec-0.0.1.gem
57
- ```
58
- ```
59
- gem list | grep exec
60
- ```
61
- ```
62
- gem uninstall markdown_exec
63
- ```
64
- pusher api key: rubygems_8c4b38ef685484719858c53c3161a124c15d7a9bec6cb65a
data/Rakefile CHANGED
@@ -13,27 +13,26 @@ require 'rubocop/rake_task'
13
13
 
14
14
  RuboCop::RakeTask.new
15
15
 
16
- task default: %i[test rubocop]
16
+ require_relative 'lib/markdown_exec/version'
17
17
 
18
- GEM_NAME = 'markdown_exec'
19
- GEM_VERSION = '0.0.6'
18
+ task default: %i[test rubocop]
20
19
 
21
20
  # task :default => :build
22
21
 
23
22
  task :build do
24
- system "gem build #{GEM_NAME}.gemspec"
23
+ system "gem build #{MarkdownExec::GEM_NAME}.gemspec"
25
24
  end
26
25
 
27
26
  task install: :build do
28
- system "gem install #{GEM_NAME}-#{GEM_VERSION}.gem"
27
+ system "gem install #{MarkdownExec::GEM_NAME}-#{MarkdownExec::VERSION}.gem"
29
28
  end
30
29
 
31
30
  task publish: :build do
32
- system "gem push #{GEM_NAME}-#{GEM_VERSION}.gem"
31
+ system "gem push #{MarkdownExec::GEM_NAME}-#{MarkdownExec::VERSION}.gem"
33
32
  end
34
33
 
35
34
  task uninstall: :build do
36
- system "gem uninstall #{GEM_NAME}"
35
+ system "gem uninstall #{MarkdownExec::GEM_NAME}"
37
36
  end
38
37
 
39
38
  task :clean do
data/bin/mde CHANGED
@@ -3,8 +3,6 @@
3
3
 
4
4
  # encoding=utf-8
5
5
 
6
- require 'markdown_exec'
6
+ require_relative '../lib/markdown_exec'
7
7
 
8
- mp = MarkdownExec::MarkParse.new
9
- mp.fout Time.now
10
- # mp.run
8
+ MarkdownExec::MarkParse.new.run
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MarkdownExec
4
- VERSION = '0.0.6'
4
+ APP_NAME = 'MDE'
5
+ APP_DESC = 'Markdown block executor'
6
+ GEM_NAME = 'markdown_exec'
7
+ VERSION = '0.1.2'
5
8
  end
data/lib/markdown_exec.rb CHANGED
@@ -1,38 +1,17 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'markdown_exec/version'
4
-
5
1
  #!/usr/bin/env ruby
6
2
  # frozen_string_literal: true
7
3
 
8
4
  # encoding=utf-8
9
- # rubocop:disable Style/GlobalVars
10
-
11
- env_debug = ENV['MARKDOWN_EXEC_DEBUG']
12
- $pdebug = !(env_debug || '').empty?
13
5
 
14
- # APP_NAME = 'MDExec'
15
- # APP_DESC = 'Markdown block executor'
16
- # VERSION = '0.0.6'
17
-
18
- # require 'markdown_exec'
19
- # # puts MarkdownExec::MarkParse.echo(ARGV[0])
6
+ # rubocop:disable Style/GlobalVars
7
+ $pdebug = !(ENV['MARKDOWN_EXEC_DEBUG'] || '').empty?
20
8
 
9
+ require 'open3'
21
10
  require 'optparse'
22
- require 'pathname'
11
+ # require 'pathname'
23
12
  require 'tty-prompt'
24
13
  require 'yaml'
25
-
26
- # require_relative 'mdlib'
27
- # #!/usr/bin/env ruby
28
- # # frozen_string_literal: true
29
- # # encoding=utf-8
30
-
31
- # env_debug = ENV['MARKDOWN_EXEC_DEBUG']
32
- # $pdebug = !(env_debug || '').empty?
33
-
34
- require 'open3'
35
- # require 'tty-prompt'
14
+ require_relative 'markdown_exec/version'
36
15
 
37
16
  BLOCK_SIZE = 1024
38
17
  SELECT_PAGE_HEIGHT = 12
@@ -40,12 +19,6 @@ SELECT_PAGE_HEIGHT = 12
40
19
  module MarkdownExec
41
20
  class Error < StandardError; end
42
21
 
43
- # Markdown Exec
44
- # class MarkParse
45
- # def self.echo(str = '')
46
- # "#{str}#{str}"
47
- # end
48
- # end
49
22
  ##
50
23
  #
51
24
  class MarkParse
@@ -183,7 +156,7 @@ module MarkdownExec
183
156
  end
184
157
  end
185
158
  blocks.tap { |ret| puts "get_blocks() ret: #{ret.inspect}" if $pdebug }
186
- end
159
+ end # get_blocks
187
160
 
188
161
  def make_block_label(block, call_options = {})
189
162
  opts = options.merge(call_options)
@@ -303,7 +276,7 @@ module MarkdownExec
303
276
  end
304
277
 
305
278
  selected[:name]
306
- end
279
+ end # select_block
307
280
 
308
281
  def select_md_file
309
282
  opts = options
@@ -387,150 +360,160 @@ module MarkdownExec
387
360
  end
388
361
  all.tap { |ret| puts "unroll() ret: #{ret.inspect}" if $pdebug }
389
362
  end
390
- end
391
363
 
392
- # $stderr.sync = true
393
- # $stdout.sync = true
364
+ # $stderr.sync = true
365
+ # $stdout.sync = true
394
366
 
395
- def fout(str)
396
- puts str # to stdout
397
- end
398
-
399
- ## configuration file
400
- #
401
- def read_configuration!(options, configuration_path)
402
- if Pathname.new(configuration_path).exist?
403
- # rubocop:disable Security/YAMLLoad
404
- options.merge!((YAML.load(File.open(configuration_path)) || {})
405
- .transform_keys(&:to_sym))
406
- # rubocop:enable Security/YAMLLoad
367
+ ## configuration file
368
+ #
369
+ def read_configuration!(options, configuration_path)
370
+ if File.exist?(configuration_path)
371
+ # rubocop:disable Security/YAMLLoad
372
+ options.merge!((YAML.load(File.open(configuration_path)) || {})
373
+ .transform_keys(&:to_sym))
374
+ # rubocop:enable Security/YAMLLoad
375
+ end
376
+ options
407
377
  end
408
- options
409
- end
410
378
 
411
- def run
412
- ## default configuration
413
- #
414
- options = {
415
- mdheadings: true,
416
- list_blocks: false,
417
- list_docs: false,
418
- mdfilename: 'README.md',
419
- mdfolder: '.'
420
- }
379
+ def run
380
+ ## default configuration
381
+ #
382
+ options = {
383
+ mdheadings: true,
384
+ list_blocks: false,
385
+ list_docs: false,
386
+ mdfilename: 'README.md',
387
+ mdfolder: '.'
388
+ }
421
389
 
422
- def options_finalize!(options); end
390
+ def options_finalize!(options); end
423
391
 
424
- # read local configuration file
425
- #
426
- read_configuration! options, ".#{APP_NAME.downcase}.yml"
392
+ # puts "MDE run() ARGV: #{ARGV.inspect}"
427
393
 
428
- ## read current details for aws resources from app_data_file
429
- #
430
- # load_resources! options
431
- # puts "q31 options: #{options.to_yaml}" if $pdebug
432
-
433
- # rubocop:disable Metrics/BlockLength
434
- option_parser = OptionParser.new do |opts|
435
- executable_name = File.basename($PROGRAM_NAME)
436
- opts.banner = [
437
- "#{APP_NAME} - #{APP_DESC} (#{VERSION})".freeze,
438
- "Usage: #{executable_name} [options]"
439
- ].join("\n")
440
-
441
- ## menu top: on_head appear in reverse order added
394
+ # read local configuration file
442
395
  #
443
- opts.on('--config PATH', 'Read configuration file') do |value|
444
- read_configuration! options, value
445
- end
396
+ read_configuration! options, ".#{MarkdownExec::APP_NAME.downcase}.yml"
446
397
 
447
- ## menu body: items appear in order added
398
+ ## read current details for aws resources from app_data_file
448
399
  #
449
- opts.on('-f RELATIVE', '--mdfilename', 'Name of document') do |value|
450
- options[:mdfilename] = value
451
- end
452
-
453
- opts.on('-p PATH', '--mdfolder', 'Path to documents') do |value|
454
- options[:mdfolder] = value
455
- end
400
+ # load_resources! options
401
+ # puts "q31 options: #{options.to_yaml}" if $pdebug
402
+
403
+ # rubocop:disable Metrics/BlockLength
404
+ option_parser = OptionParser.new do |opts|
405
+ executable_name = File.basename($PROGRAM_NAME)
406
+ opts.banner = [
407
+ "#{MarkdownExec::APP_NAME} - #{MarkdownExec::APP_DESC} (#{MarkdownExec::VERSION})",
408
+ "Usage: #{executable_name} [options]"
409
+ ].join("\n")
410
+
411
+ ## menu top: on_head appear in reverse order added
412
+ #
413
+ opts.on('--config PATH', 'Read configuration file') do |value|
414
+ read_configuration! options, value
415
+ end
456
416
 
457
- opts.on('--list-blocks', 'List blocks') do |_value|
458
- options[:list_blocks] = true
459
- end
417
+ ## menu body: items appear in order added
418
+ #
419
+ opts.on('-f RELATIVE', '--mdfilename', 'Name of document') do |value|
420
+ options[:mdfilename] = value
421
+ end
460
422
 
461
- opts.on('--list-docs', 'List docs in current folder') do |_value|
462
- options[:list_docs] = true
463
- end
423
+ opts.on('-p PATH', '--mdfolder', 'Path to documents') do |value|
424
+ options[:mdfolder] = value
425
+ end
464
426
 
465
- ## menu bottom: items appear in order added
466
- #
467
- opts.on_tail('-h', '--help', 'App help') do |_value|
468
- puts option_parser.help
469
- exit
470
- end
427
+ opts.on('--list-blocks', 'List blocks') do |_value|
428
+ options[:list_blocks] = true
429
+ end
471
430
 
472
- opts.on_tail('-v', '--version', 'App version') do |_value|
473
- puts VERSION
474
- exit
475
- end
431
+ opts.on('--list-docs', 'List docs in current folder') do |_value|
432
+ options[:list_docs] = true
433
+ end
476
434
 
477
- opts.on_tail('-x', '--exit', 'Exit app') do |_value|
478
- exit
479
- end
435
+ ## menu bottom: items appear in order added
436
+ #
437
+ opts.on_tail('-h', '--help', 'App help') do |_value|
438
+ puts option_parser.help
439
+ exit
440
+ end
480
441
 
481
- opts.on_tail('-0', 'Show configuration') do |_v|
482
- options_finalize! options
483
- puts options.to_yaml
484
- end
485
- end
486
- # rubocop:enable Metrics/BlockLength
442
+ opts.on_tail('-v', '--version', 'App version') do |_value|
443
+ puts MarkdownExec::VERSION
444
+ exit
445
+ end
487
446
 
488
- option_parser.load # filename defaults to basename of the program without suffix in a directory ~/.options
489
- option_parser.environment # env defaults to the basename of the program.
490
- option_parser.parse! # (into: options)
491
- options_finalize! options
447
+ opts.on_tail('-x', '--exit', 'Exit app') do |_value|
448
+ exit
449
+ end
492
450
 
493
- ## process
494
- #
495
- # rubocop:disable Metrics/BlockLength
496
- loop do # once
497
- mp = MarkParse.new options
498
- options.merge!(
499
- {
500
- approve: true,
501
- bash: true,
502
- display: true,
503
- exclude_expect_blocks: true,
504
- execute: true,
505
- prompt: 'Execute',
506
- struct: true
507
- }
508
- )
509
-
510
- ## show
511
- #
512
- if options[:list_docs]
513
- fout mp.find_files
514
- break
515
- end
451
+ opts.on_tail('-0', 'Show configuration') do |_v|
452
+ options_finalize! options
453
+ puts options.to_yaml
454
+ end
455
+ end # OptionParser
456
+ # rubocop:enable Metrics/BlockLength
516
457
 
517
- if options[:list_blocks]
518
- fout (mp.find_files.map do |file|
519
- mp.make_block_labels(mdfilename: file, struct: true)
520
- end).flatten(1).to_yaml
521
- break
522
- end
458
+ option_parser.load # filename defaults to basename of the program without suffix in a directory ~/.options
459
+ option_parser.environment # env defaults to the basename of the program.
460
+ option_parser.parse! # (into: options)
461
+ options_finalize! options
523
462
 
524
463
  ## process
525
464
  #
526
- mp.select_block(bash: true, struct: true) if options[:mdfilename]
465
+ # rubocop:disable Metrics/BlockLength
466
+ loop do # once
467
+ mp = MarkParse.new options
468
+ options.merge!(
469
+ {
470
+ approve: true,
471
+ bash: true,
472
+ display: true,
473
+ exclude_expect_blocks: true,
474
+ execute: true,
475
+ prompt: 'Execute',
476
+ struct: true
477
+ }
478
+ )
479
+
480
+ ## show
481
+ #
482
+ if options[:list_docs]
483
+ fout mp.find_files
484
+ break
485
+ end
527
486
 
528
- # rubocop:disable Style/BlockComments
529
- # rubocop:enable Style/BlockComments
487
+ if options[:list_blocks]
488
+ fout (mp.find_files.map do |file|
489
+ mp.make_block_labels(mdfilename: file, struct: true)
490
+ end).flatten(1).to_yaml
491
+ break
492
+ end
493
+
494
+ ## process
495
+ #
496
+ mp.select_block(bash: true, struct: true) if options[:mdfilename]
497
+
498
+ # rubocop:disable Style/BlockComments
499
+ =begin
500
+ # rescue ArgumentError => e
501
+ # puts "User abort: #{e}"
502
+
503
+ # rescue StandardError => e
504
+ # puts "ERROR: #{e}"
505
+ # raise StandardError, e
506
+
507
+ # ensure
508
+ # exit
509
+ =end
510
+ # rubocop:enable Style/BlockComments
511
+
512
+ break unless false # rubocop:disable Lint/LiteralAsCondition
513
+ end # loop
514
+ end # run
515
+ end # class MarkParse
530
516
 
531
- break unless false # rubocop:disable Lint/LiteralAsCondition
532
- end
533
- end
534
517
  # rubocop:enable Metrics/BlockLength
535
518
  # rubocop:enable Style/GlobalVars
536
- end
519
+ end # module MarkdownExec
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: 0.0.6
4
+ version: 0.1.2
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-03-11 00:00:00.000000000 Z
11
+ date: 2022-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: open3
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.1.1
41
- - !ruby/object:Gem::Dependency
42
- name: pathname
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 0.1.0
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 0.1.0
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: tty-prompt
57
43
  requirement: !ruby/object:Gem::Requirement