issuer 0.2.1 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4fd7532708ed57245a8e2721d299cd2931c24737da8a156bd238cc5977e4691c
4
- data.tar.gz: 7f277c821b7fe8bb7eda03b5e85718202409fe54bd84d8b4e50bb8911fcce337
3
+ metadata.gz: 9b9b8755cfce731755363e16c9499632533330adb62e565b1bafcd4b158c820e
4
+ data.tar.gz: 9372bd2d0245dd42e28143fb11060d173e14ad2bfa2422ef85dc5eb70897528c
5
5
  SHA512:
6
- metadata.gz: 381f003520f2c514445bbea944589839a189fa3afee7126d0567d61d680b1a4b79b407886db97749e1cdf9efcb2bb46679e33002700604ed64fa054ee8bcc245
7
- data.tar.gz: ff486e3bc512907226b7f4fadf454f091cf853dad7c1492f0d5e410b82a3b4584d63a6a817c5fbe6c8d3437770b3ad59ba1b78070cac3cc4559996df6fb75f3a
6
+ metadata.gz: 9e984bb19ef6339cd9b172dccb5108b376ce5e75565669d5eaacb4694f3978e278b152bc16bceb3e613ea6dd2cb161f463521b87970630555cfb3368527a72ba
7
+ data.tar.gz: 46e27411826c5c25a647bd8d7260c0284deffa5413285937e994e76c06f1cc70fe1e47954be085116df2f8162259d1796ce379f953cb4d2d5c09723a13a5612d
data/README.adoc CHANGED
@@ -1,9 +1,9 @@
1
1
  = Issuer: Bulk GitHub Issue Creator
2
2
  :toc: macro
3
3
  :toclevels: 3
4
- :this_prod_vrsn: 0.2.1
5
- :next_prod_vrsn: 0.3.0
6
- :docker_base_command: docker run -it --rm -v $(pwd):/workdir -e ISSUER_API_TOKEN=$GITHUB_TOKEN docopslab/issuer
4
+ :this_prod_vrsn: 0.3.0
5
+ :next_prod_vrsn: 0.4.0
6
+ :docker_base_command: docker run -it --rm --user $(id -u):$(id -g) -v $(pwd):/workdir -e ISSUER_API_TOKEN=$GITHUB_TOKEN docopslab/issuer
7
7
  :append_or_impose: Prepend items with `+` to indicate they should be appended to existing labels. Items without `+` will only be used for issues with no `tags` designated.
8
8
  ifdef::env-github[]
9
9
  :icons: font
@@ -15,6 +15,8 @@ ifdef::env-github[]
15
15
  endif::[]
16
16
 
17
17
 
18
+ // tag::ai-prompt[]
19
+ [[overview]]
18
20
  == Overview
19
21
 
20
22
  _Issuer_ lets you define all your GitHub Issues work tickets in one place as YAML, apply defaults, and post them to GitHub Issues in bulk.
@@ -29,6 +31,8 @@ _Issuer_ lets you define all your GitHub Issues work tickets in one place as YAM
29
31
  * *Issue validation* with helpful error messages
30
32
  * *GitHub API integration*
31
33
 
34
+ // end::ai-prompt[]
35
+
32
36
  Future plans include extending this capability to *Jira* (link:https://github.com/DocOps/issuer/issues/9[#9]), *GitLab* Issues (link:https://github.com/DocOps/issuer/issues/33[#33]), GitHub *Projects*, and other services.
33
37
 
34
38
  toc::[]
@@ -92,15 +96,18 @@ See <<usage>> for more.
92
96
  ==== Alias the Docker Command
93
97
 
94
98
  Optionally alias the base Docker command.
95
- In your shell configuration (usually `~/.bashrc` or `~/.zshrc), add the following:
99
+ In your shell configuration (usually `~/.bashrc` or `~/.zshrc`), add the following:
96
100
 
97
101
  [.prompt,subs=+attributes]
98
102
  alias issuer='{docker_base_command}'
99
103
 
100
104
  Reload your shell configuration for the alias to take effect:
101
105
 
102
- [.prompt]
103
- source ~/.bashrc
106
+ ....
107
+ source ~/.bashrc
108
+ # or
109
+ source ~/.zshrc
110
+ ....
104
111
 
105
112
  === For Ruby Users
106
113
 
@@ -151,6 +158,7 @@ For Ruby Bundler usage, prepend `bundle exec ` and for un-aliased Docker usage,
151
158
  [.prompt]
152
159
  issuer example.yml
153
160
 
161
+ // tag::user-agent-prompt[]
154
162
  [[imyml-format]]
155
163
  === IMYML File Format
156
164
 
@@ -329,8 +337,8 @@ Whether to treat the issue as a stub entry, meaning prepend any `$meta.defaults.
329
337
 
330
338
  A source IMYML file is required and can be specified in two ways:
331
339
 
332
- * *Positional argument* (most common): Place the file path immediately after `issuer`
333
- * *Named option*: Use the `--file` option flag to specify the file path
340
+ * *Positional argument* (most common). Place the file path immediately after `issuer`
341
+ * *Named option.* Use the `--file` option flag to specify the file path
334
342
 
335
343
  Examples:
336
344
 
@@ -367,6 +375,11 @@ Whether to treat all issues as stubs, meaning prepend any `$meta.defaults.head`
367
375
  --dry, --dry-run::
368
376
  Dry-run: print actions but do not post to GitHub.
369
377
 
378
+ --json [_FILE_PATH_]::
379
+ Save GitHub API issue payload as JSON file.
380
+ Use `--dry` if you want to skip posting while generating JSON.
381
+ If no `FILE_PATH` is specified, saves to time-stamped file in `_payloads/` directory.
382
+
370
383
  --auto-versions, --auto-milestones::
371
384
  Automatically create missing milestones/versions without prompting for confirmation.
372
385
 
@@ -382,6 +395,8 @@ Prints the usage screen.
382
395
  --version::
383
396
  Prints the version of `issuer`.
384
397
 
398
+ // end::user-ai-prompt[]
399
+
385
400
  [[authentication]]
386
401
  === Authentication
387
402
 
@@ -423,9 +438,10 @@ Issuer automatically logs all API operations for tracking and potential cleanup.
423
438
 
424
439
  By default, logs are stored in a user-wide directory:
425
440
 
426
- * *Linux/macOS*: `~/.config/issuer/logs/`
427
- * *With XDG Base Directory*: `$XDG_CONFIG_HOME/issuer/logs/`
428
- * *Custom location*: Set `ISSUER_CONFIG_DIR` environment variable
441
+ [horizontal]
442
+ Linux/macOS:: `~/.config/issuer/logs/`
443
+ With XDG Base Directory:: `$XDG_CONFIG_HOME/issuer/logs/`
444
+ Custom location:: Set `ISSUER_CONFIG_DIR` environment variable
429
445
 
430
446
  Example:
431
447
  [source,bash]
@@ -491,6 +507,8 @@ In the end, the only thing that is mainly untouched by me are the rspec tests, w
491
507
  This also explains why the terminal output contains emojis.
492
508
  I will probably make those togglable or configurable in the future.
493
509
 
510
+ // tag::dev-ai-prompt[]
511
+ [[tests]]
494
512
  === Tests
495
513
 
496
514
  The `specs/` directory contains all specifications, requirements, and tests for the Issuer CLI tool.
@@ -535,10 +553,10 @@ bundle exec rspec --pattern "*ops*"
535
553
 
536
554
  The `pr_test` task runs the exact same tests that GitHub Actions runs for pull requests:
537
555
 
538
- * *RSpec Tests*: All unit tests (`bundle exec rake spec`)
539
- * *CLI Tests*: Command-line interface functionality tests
540
- * *YAML Validation*: Validates all example YAML files
541
- * *Documentation Quality*: Vale linting on all documentation files
556
+ RSpec Tests:: All unit tests (`bundle exec rake spec`)
557
+ CLI Tests:: Command-line interface functionality tests
558
+ YAML Validation:: Validates all example YAML files
559
+ Documentation Quality:: Vale linting on all documentation files
542
560
 
543
561
  This ensures you can validate your changes locally before pushing to GitHub.
544
562
 
@@ -597,39 +615,36 @@ The API reference includes:
597
615
 
598
616
  This documentation is automatically updated with each gem release.
599
617
 
600
- === Release History Management
618
+ // end::dev-ai-prompt[]
601
619
 
602
- As of version 0.2.0, the Release Notes and Changelog are generated using the _ReleaseHx_ tool, which is still in pre-release.
603
- You can find the release history assets in the `docs/releasehx/` directory, which contains a configuration file and the 0.2.0 "`RHYML`" file that was auto-modified and then manually edited to produce the GitHub link:https://github.com/DocOps/issuer/releases[release announcement].
604
-
605
- ReleaseHx will be available soon, but for now the following is only usable by DocOps Lab.
620
+ [[release-history-management]]
621
+ === Release History Management
606
622
 
607
- . Add local releasehx gem to `Gemfile`:
608
- +
609
- [source,ruby]
610
- gem 'releasehx', path: '../releasehx'
623
+ As of version 0.2.0, Release Notes and Changelog are generated using the link:https://github.com/DocOps/releasehx[_ReleaseHx_] tool.
624
+ You can find the release history assets in the `docs/releases/` directory, while the ReleaseHx configuration lives at `.config/releasehx.yml`.
625
+ The RHYML files are auto-generated and then manually edited to produce the GitHub link:https://github.com/DocOps/issuer/releases[release announcements].
611
626
 
612
627
  . Draft RHYML draft file from the online GitHub Issues for the given version:
613
628
  +
614
629
  [.prompt,subs=+attributes]
615
- ./releasehx-install.sh && bundle exec rhx {this_prod_vrsn} --yaml docs/releasehx/release-{this_prod_vrsn}.yml --config docs/releasehx/config.yml
616
- +
617
- The `releasehx-install.sh` ensures ReleaseHx is up to date.
630
+ bundle exec rhx {this_prod_vrsn} --yaml docs/releases/{this_prod_vrsn}.yml --config .config/releasehx.yml
618
631
 
619
632
  . Manually edit the RHYML draft file.
620
633
 
621
634
  . Generate the release history as Markdown.
622
635
  +
623
636
  [.prompt,subs=+attributes]
624
- bundle exec rhx docs/releasehx/release-{this_prod_vrsn}.yml --md docs/releasehx/{this_prod_vrsn}.md --config docs/releasehx/config.yml
637
+ bundle exec rhx docs/releases/{this_prod_vrsn}.yml --md docs/releases/{this_prod_vrsn}.md --config .config/releasehx.yml
625
638
 
626
- . Copy and paste the contents of `docs/releasehx/{this_prod_vrsn}.md` into the GitHub release form at https://github.com/DocOps/issuer/releases/new.
639
+ . Copy and paste the contents of `docs/releases/{this_prod_vrsn}.md` into the GitHub release form at https://github.com/DocOps/issuer/releases/new.
627
640
 
628
641
  [[contributing]]
629
642
  === Contributing
630
643
 
631
644
  Bug reports and pull requests are welcome on GitHub at https://github.com/DocOps/issuer.
632
645
 
646
+
647
+ [[legal]]
633
648
  == Legal
634
649
 
635
650
  The gem is available as open source under the terms of the MIT License.
data/issuer.gemspec CHANGED
@@ -31,10 +31,4 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency "octokit", "~> 8.0"
32
32
  spec.add_dependency "thor", "~> 1.0"
33
33
  spec.add_dependency "faraday-retry", "~> 2.0"
34
-
35
- # Development dependencies
36
- spec.add_development_dependency "bundler", "~> 2.0"
37
- spec.add_development_dependency "rake", "~> 13.0"
38
- spec.add_development_dependency "rspec", "~> 3.0"
39
- spec.add_development_dependency "asciidoctor", "~> 2.0"
40
34
  end
@@ -56,7 +56,7 @@ module Issuer
56
56
  params[:assignee] = issue_params[:assignee].strip
57
57
  end
58
58
 
59
- # Handle milestone - only if milestone exists
59
+ # Handle milestone; only if milestone exists
60
60
  if issue_params[:milestone]
61
61
  milestone = find_milestone(repo, issue_params[:milestone])
62
62
  params[:milestone] = milestone.number if milestone
@@ -259,7 +259,7 @@ module Issuer
259
259
  def resolve_label_ids repo, label_names
260
260
  # For now, we'll skip complex label ID resolution
261
261
  # GitHub GraphQL API requires label IDs, but REST API uses names
262
- # This is a simplification - in practice, you'd need to fetch and match labels
262
+ # This is a simplification; in practice, you'd need to fetch and match labels
263
263
  []
264
264
  end
265
265
 
data/lib/issuer/cache.rb CHANGED
@@ -142,7 +142,7 @@ module Issuer
142
142
  elsif summary_section.key?(counter_key)
143
143
  summary_section[counter_key] += 1
144
144
  else
145
- # Fallback - create the key as string
145
+ # Fallback; create the key as string
146
146
  summary_section[counter_key] = 1
147
147
  end
148
148
 
data/lib/issuer/cli.rb CHANGED
@@ -18,6 +18,7 @@ module Issuer
18
18
  class_option :tags, type: :string, desc: 'Comma-separated default or appended (+) labels for all issues'
19
19
  class_option :stub, type: :boolean, desc: 'Enable stub mode for all issues'
20
20
  class_option :dry, type: :boolean, default: false, aliases: ['--dry-run'], desc: 'Print issues, don\'t post'
21
+ class_option :json, type: :string, lazy_default: '', desc: 'Save API payloads as JSON to PATH (defaults to _payloads/). Combine with --dry to skip posting.'
21
22
  class_option :tokenv, type: :string, desc: 'Name of environment variable containing GitHub token'
22
23
 
23
24
  # Resource automation options
@@ -96,8 +97,9 @@ module Issuer
96
97
  defaults['stub'] = options[:stub] if !options[:stub].nil?
97
98
 
98
99
  # Determine target repository
100
+ dry_mode = options[:dry]
99
101
  repo = options[:proj] || meta['proj'] || ENV['ISSUER_REPO'] || ENV['ISSUER_PROJ']
100
- if repo.nil? && !options[:dry]
102
+ if repo.nil? && !dry_mode
101
103
  abort 'No target repo set. Use --proj, $meta.proj, or ENV[ISSUER_REPO].'
102
104
  end
103
105
 
@@ -110,6 +112,9 @@ module Issuer
110
112
  # Apply stub logic with head/tail/body composition
111
113
  issues = Issuer::Ops.apply_stub_logic(issues, defaults)
112
114
 
115
+ json_requested = !options[:json].nil?
116
+ json_path = options[:json]
117
+
113
118
  # Separate valid and invalid issues
114
119
  valid_issues = issues.select(&:valid?)
115
120
  invalid_issues = issues.reject(&:valid?)
@@ -119,8 +124,11 @@ module Issuer
119
124
  puts "Skipping issue ##{find_original_index(issues, issue) + 1}: #{issue.validation_errors.join(', ')}"
120
125
  end
121
126
 
122
- if options[:dry]
123
- perform_dry_run(valid_issues, repo)
127
+ site = nil
128
+
129
+ if dry_mode
130
+ site = build_dry_run_site
131
+ perform_dry_run(valid_issues, repo, site)
124
132
  else
125
133
  # Use Sites architecture for validation and posting
126
134
  site_options = {}
@@ -151,7 +159,9 @@ module Issuer
151
159
  end
152
160
  end
153
161
 
154
- print_summary(valid_issues.length, invalid_issues.length, options[:dry])
162
+ perform_json_output(valid_issues, repo, json_path, site, dry_run: dry_mode) if json_requested
163
+
164
+ print_summary(valid_issues.length, invalid_issues.length, dry_mode)
155
165
  end
156
166
 
157
167
  private
@@ -175,6 +185,7 @@ module Issuer
175
185
 
176
186
  Mode Options:
177
187
  --dry, --dry-run #{self.class_options[:dry].description}
188
+ --json [PATH] #{self.class_options[:json].description}
178
189
  --auto-versions #{self.class_options[:auto_versions].description}
179
190
  --auto-milestones (alias for --auto-versions)
180
191
  --auto-tags #{self.class_options[:auto_tags].description}
@@ -190,6 +201,7 @@ module Issuer
190
201
  issuer issues.yml --proj myorg/myrepo
191
202
  issuer --file issues.yml --proj myorg/myrepo --dry
192
203
  issuer issues.yml --vrsn 1.1.2
204
+ issuer issues.yml --json dry-output.json
193
205
  issuer --version
194
206
  issuer --help
195
207
 
@@ -203,16 +215,11 @@ module Issuer
203
215
  issues_array.find_index(target_issue) || 0
204
216
  end
205
217
 
206
- def perform_dry_run issues, repo
207
- # Create site instance for parameter conversion in dry-run mode
208
- site_options = { token: 'dry-run-token' }
209
- site_options[:token_env_var] = options[:tokenv] if options[:tokenv]
210
- site = Issuer::Sites::Factory.create('github', **site_options)
211
-
218
+ def perform_dry_run issues, repo, site
212
219
  issues.each do |issue|
213
220
  print_issue_summary(issue, repo, site)
214
221
  end
215
-
222
+
216
223
  # Add project summary at the end
217
224
  if repo
218
225
  project_term = site.field_mappings[:project_name] || 'project'
@@ -220,6 +227,64 @@ module Issuer
220
227
  end
221
228
  end
222
229
 
230
+ def perform_json_output issues, repo, json_path, site, dry_run:
231
+ require 'json'
232
+ require 'fileutils'
233
+
234
+ if json_path.empty?
235
+ output_dir = '_payloads'
236
+ timestamp = Time.now.strftime('%Y%m%d_%H%M%S')
237
+ output_path = File.join(output_dir, "issues_#{timestamp}.json")
238
+ else
239
+ output_path = json_path
240
+ output_dir = File.dirname(output_path)
241
+ end
242
+
243
+ FileUtils.mkdir_p(output_dir) unless Dir.exist?(output_dir)
244
+
245
+ # Convert issues to API payloads
246
+ payloads = issues.map do |issue|
247
+ site.convert_issue_to_site_params(issue, repo, dry_run: dry_run)
248
+ end
249
+
250
+ # Create JSON structure
251
+ json_data = {
252
+ metadata: {
253
+ generated_at: Time.now.iso8601,
254
+ repository: repo,
255
+ total_issues: issues.length,
256
+ issuer_version: Issuer::VERSION
257
+ },
258
+ issues: payloads
259
+ }
260
+
261
+ File.write(output_path, JSON.pretty_generate(json_data))
262
+
263
+ puts "Saved #{issues.length} issue payloads to: #{output_path}"
264
+
265
+ puts "\nIssue preview:"
266
+ issues.first(3).each do |issue|
267
+ print_issue_summary(issue, repo, site)
268
+ end
269
+
270
+ if issues.length > 3
271
+ puts "... and #{issues.length - 3} more issues"
272
+ puts "------\n"
273
+ end
274
+
275
+ # Add project summary
276
+ if repo
277
+ project_term = site.field_mappings[:project_name] || 'project'
278
+ puts "JSON contains #{issues.length} issue payloads for #{project_term}: #{repo}"
279
+ end
280
+ end
281
+
282
+ def build_dry_run_site
283
+ site_options = { token: 'dry-run-token' }
284
+ site_options[:token_env_var] = options[:tokenv] if options[:tokenv]
285
+ Issuer::Sites::Factory.create('github', **site_options)
286
+ end
287
+
223
288
  def print_summary valid_count, invalid_count, dry_run
224
289
  if dry_run
225
290
  puts "\nDry run complete (use without --dry to actually post)"
@@ -228,7 +293,7 @@ module Issuer
228
293
  puts "\n✅ Completed: #{valid_count} issues processed, #{invalid_count} skipped"
229
294
  # Note: Run ID is already displayed in the main flow, no need to repeat it here
230
295
  end
231
-
296
+
232
297
  end
233
298
 
234
299
  def print_issue_summary issue, repo, site
data/lib/issuer/issue.rb CHANGED
@@ -78,7 +78,7 @@ module Issuer
78
78
  @type = @raw_data['type'] || defaults['type']
79
79
  @stub = @raw_data.key?('stub') ? @raw_data['stub'] : defaults['stub']
80
80
 
81
- # For tags, we need special handling - combine defaults and issue tags for later processing
81
+ # For tags, we need special handling; combine defaults and issue tags for later processing
82
82
  defaults_tags = Array(defaults['tags'])
83
83
  issue_tags = Array(@raw_data['tags'])
84
84
  @tags = defaults_tags + issue_tags
@@ -401,7 +401,7 @@ module Issuer
401
401
  # Get terminal width, default to 80 if not available
402
402
  terminal_width = ENV['COLUMNS']&.to_i || 80
403
403
 
404
- # Calculate available width for content (terminal width - indentation)
404
+ # Calculate available width for content (terminal width; indentation)
405
405
  available_width = terminal_width - indent_size
406
406
 
407
407
  # If line fits within available width, just return it with indentation
data/lib/issuer/ops.rb CHANGED
@@ -14,7 +14,7 @@ module Issuer
14
14
  # This method converts scalar strings to proper issue hashes and creates Issue objects
15
15
  # with enhanced defaults processing. It handles both string and hash inputs gracefully.
16
16
  #
17
- # @param issues_data [Array<String, Hash>] Raw issue data - can be strings or hashes
17
+ # @param issues_data [Array<String, Hash>] Raw issue data; can be strings or hashes
18
18
  # @param defaults [Hash] Default values to apply to all issues
19
19
  # @return [Array<Issuer::Issue>] Array of processed Issue objects
20
20
  #
@@ -77,7 +77,7 @@ module Issuer
77
77
  params[:assignee] = issue_params[:assignee].strip
78
78
  end
79
79
 
80
- # Handle milestone - only if milestone exists
80
+ # Handle milestone; only if milestone exists
81
81
  if issue_params[:milestone]
82
82
  # If milestone is already a number (from convert_issue_to_site_params), use it directly
83
83
  if issue_params[:milestone].is_a?(Integer)
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: issuer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DocOps Lab
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2025-08-08 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: octokit
@@ -52,62 +51,6 @@ dependencies:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
53
  version: '2.0'
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.0'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '13.0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '13.0'
83
- - !ruby/object:Gem::Dependency
84
- name: rspec
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '3.0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '3.0'
97
- - !ruby/object:Gem::Dependency
98
- name: asciidoctor
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '2.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '2.0'
111
54
  description: CLI tool for creating multiple GitHub issues from a single YAML file
112
55
  (IMYML format). Define all your issues in one place, apply defaults, and post them
113
56
  to GitHub in bulk.
@@ -145,8 +88,7 @@ metadata:
145
88
  homepage_uri: https://github.com/DocOps/issuer
146
89
  source_code_uri: https://github.com/DocOps/issuer
147
90
  changelog_uri: https://github.com/DocOps/issuer/blob/main/CHANGELOG.md
148
- documentation_uri: https://gemdocs.org/gems/issuer/0.2.1
149
- post_install_message:
91
+ documentation_uri: https://gemdocs.org/gems/issuer/0.3.0
150
92
  rdoc_options: []
151
93
  require_paths:
152
94
  - lib
@@ -161,8 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
103
  - !ruby/object:Gem::Version
162
104
  version: '0'
163
105
  requirements: []
164
- rubygems_version: 3.4.19
165
- signing_key:
106
+ rubygems_version: 3.7.2
166
107
  specification_version: 4
167
108
  summary: Bulk GitHub issue creator from YAML definitions
168
109
  test_files: []