gem_hadar 1.23.0 → 1.25.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/Rakefile +1 -0
- data/VERSION +1 -1
- data/gem_hadar.gemspec +6 -5
- data/lib/gem_hadar/prompt_template.rb +54 -0
- data/lib/gem_hadar/utils.rb +18 -0
- data/lib/gem_hadar/version.rb +1 -1
- data/lib/gem_hadar.rb +97 -60
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5277b0542113dc8de861927c702b9a17c0dc30fc000b0aad88f77559177bd562
|
4
|
+
data.tar.gz: 32cfd43ba8dd14a74fd0db9cfba009851866f22bb78decd0dd6cbdd0f3cb9b62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a77a1a309790aac939d7aff2f3973c495baa92a3d36e3443747e7243aa0a6e09781a7162ddde5e36868316b85db3ab58c20bcb3f137b818dc5f458ed3b741fd1
|
7
|
+
data.tar.gz: 8754d4b122caf5a5df4af137097440e84a4841f8c0b83fec7e635716997c59cbba36671e6b6b03230dbe1bceb319e131fbfb9c2734a155c8d5771692bfe31289
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.25.0
|
data/gem_hadar.gemspec
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: gem_hadar 1.
|
2
|
+
# stub: gem_hadar 1.25.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "gem_hadar".freeze
|
6
|
-
s.version = "1.
|
6
|
+
s.version = "1.25.0".freeze
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
@@ -12,8 +12,8 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.description = "This library contains some useful functionality to support the development of Ruby Gems".freeze
|
13
13
|
s.email = "flori@ping.de".freeze
|
14
14
|
s.executables = ["gem_hadar".freeze]
|
15
|
-
s.extra_rdoc_files = ["README.md".freeze, "lib/gem_hadar.rb".freeze, "lib/gem_hadar/github.rb".freeze, "lib/gem_hadar/setup.rb".freeze, "lib/gem_hadar/template_compiler.rb".freeze, "lib/gem_hadar/version.rb".freeze]
|
16
|
-
s.files = [".gitignore".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/gem_hadar".freeze, "gem_hadar.gemspec".freeze, "lib/gem_hadar.rb".freeze, "lib/gem_hadar/github.rb".freeze, "lib/gem_hadar/setup.rb".freeze, "lib/gem_hadar/template_compiler.rb".freeze, "lib/gem_hadar/version.rb".freeze]
|
15
|
+
s.extra_rdoc_files = ["README.md".freeze, "lib/gem_hadar.rb".freeze, "lib/gem_hadar/github.rb".freeze, "lib/gem_hadar/prompt_template.rb".freeze, "lib/gem_hadar/setup.rb".freeze, "lib/gem_hadar/template_compiler.rb".freeze, "lib/gem_hadar/utils.rb".freeze, "lib/gem_hadar/version.rb".freeze]
|
16
|
+
s.files = [".gitignore".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/gem_hadar".freeze, "gem_hadar.gemspec".freeze, "lib/gem_hadar.rb".freeze, "lib/gem_hadar/github.rb".freeze, "lib/gem_hadar/prompt_template.rb".freeze, "lib/gem_hadar/setup.rb".freeze, "lib/gem_hadar/template_compiler.rb".freeze, "lib/gem_hadar/utils.rb".freeze, "lib/gem_hadar/version.rb".freeze]
|
17
17
|
s.homepage = "https://github.com/flori/gem_hadar".freeze
|
18
18
|
s.licenses = ["MIT".freeze]
|
19
19
|
s.rdoc_options = ["--title".freeze, "GemHadar - Library for the development of Ruby Gems".freeze, "--main".freeze, "README.md".freeze]
|
@@ -22,10 +22,11 @@ Gem::Specification.new do |s|
|
|
22
22
|
|
23
23
|
s.specification_version = 4
|
24
24
|
|
25
|
-
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.
|
25
|
+
s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.24".freeze])
|
26
26
|
s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.0".freeze])
|
27
27
|
s.add_runtime_dependency(%q<term-ansicolor>.freeze, ["~> 1.0".freeze])
|
28
28
|
s.add_runtime_dependency(%q<ollama-ruby>.freeze, ["~> 1.0".freeze])
|
29
|
+
s.add_runtime_dependency(%q<mize>.freeze, [">= 0".freeze])
|
29
30
|
s.add_runtime_dependency(%q<rake>.freeze, [">= 0".freeze])
|
30
31
|
s.add_runtime_dependency(%q<yard>.freeze, [">= 0".freeze])
|
31
32
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module GemHadar::PromptTemplate
|
2
|
+
def default_git_release_system_prompt
|
3
|
+
<<~EOT
|
4
|
+
You are a Ruby programmer generating changelog messages in markdown
|
5
|
+
format for new releases, so users can see what has changed. Remember you
|
6
|
+
are not a chatbot of any kind.
|
7
|
+
EOT
|
8
|
+
end
|
9
|
+
|
10
|
+
def default_git_release_prompt
|
11
|
+
<<~EOT
|
12
|
+
Output the content of a changelog for the new release of %{name} %{version}
|
13
|
+
|
14
|
+
**Strictly** follow these guidelines:
|
15
|
+
|
16
|
+
- Use bullet points in markdown format (`-`) to list significant changes.
|
17
|
+
- Exclude trivial updates such as:
|
18
|
+
* Version number increments
|
19
|
+
* Dependency version bumps (unless they resolve critical issues)
|
20
|
+
* Minor code style adjustments
|
21
|
+
* Internal documentation tweaks
|
22
|
+
- Include only verified and substantial changes that impact
|
23
|
+
functionality, performance, or user experience.
|
24
|
+
- If unsure about a change's significance, omit it from the output.
|
25
|
+
- Avoid adding any comments or notes; keep the output purely factual.
|
26
|
+
|
27
|
+
These are the log messages including patches for the new release:
|
28
|
+
|
29
|
+
%{log_diff}
|
30
|
+
EOT
|
31
|
+
end
|
32
|
+
|
33
|
+
def default_version_bump_system_prompt
|
34
|
+
<<~EOT
|
35
|
+
You are an expert at semantic versioning. Analyze the provided changes
|
36
|
+
and suggest whether to bump major, minor, or build version according to
|
37
|
+
Semantic Versioning. Provide a brief explanation of your reasoning,
|
38
|
+
followed by a single line containing only one word: 'major', 'minor', or
|
39
|
+
'build'.
|
40
|
+
EOT
|
41
|
+
end
|
42
|
+
|
43
|
+
def default_version_bump_prompt
|
44
|
+
<<~EOT
|
45
|
+
Given the current version %{version} and the following changes:
|
46
|
+
|
47
|
+
%{log_diff}
|
48
|
+
|
49
|
+
Please explain your reasoning for suggesting a version bump and then end
|
50
|
+
with a single line containing only one word: 'major', 'minor', or
|
51
|
+
'build'.
|
52
|
+
EOT
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module GemHadar::Utils
|
2
|
+
def xdg_config_filename(name)
|
3
|
+
if xdg = ENV['XDG_CONFIG_HOME'].full?
|
4
|
+
File.join(xdg, name)
|
5
|
+
else
|
6
|
+
File.join(ENV.fetch('HOME'), '.config', name)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
memoize method:
|
11
|
+
def xdg_config(name, default)
|
12
|
+
if File.exist?(xdg_config_filename(name))
|
13
|
+
File.read(xdg_config_filename(name))
|
14
|
+
else
|
15
|
+
default
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/gem_hadar/version.rb
CHANGED
data/lib/gem_hadar.rb
CHANGED
@@ -25,12 +25,16 @@ require_maybe 'rspec/core/rake_task'
|
|
25
25
|
class GemHadar
|
26
26
|
end
|
27
27
|
require 'gem_hadar/version'
|
28
|
+
require 'gem_hadar/utils'
|
28
29
|
require 'gem_hadar/setup'
|
29
30
|
require 'gem_hadar/template_compiler'
|
30
31
|
require 'gem_hadar/github'
|
32
|
+
require 'gem_hadar/prompt_template'
|
31
33
|
|
32
34
|
class GemHadar
|
33
35
|
include Term::ANSIColor
|
36
|
+
include GemHadar::Utils
|
37
|
+
include GemHadar::PromptTemplate
|
34
38
|
|
35
39
|
if defined?(::RbConfig)
|
36
40
|
include ::RbConfig
|
@@ -338,10 +342,7 @@ class GemHadar
|
|
338
342
|
|
339
343
|
desc "Displaying the diff from env var VERSION to the next version or HEAD"
|
340
344
|
task :diff do
|
341
|
-
|
342
|
-
found_version_tag = version_tags.index(version_tag(version))
|
343
|
-
found_version_tag.nil? and fail "cannot find version tag #{version_tag(version)}"
|
344
|
-
start_version, end_version = version_tags[found_version_tag, 2]
|
345
|
+
start_version, end_version = determine_version_range
|
345
346
|
puts color(172) { "Showing diff from version %s to %s:" % [ start_version, end_version ] }
|
346
347
|
puts `git diff --color=always #{start_version}..#{end_version}`
|
347
348
|
end
|
@@ -459,23 +460,40 @@ class GemHadar
|
|
459
460
|
namespace :bump do
|
460
461
|
desc 'Bump major version'
|
461
462
|
task :major do
|
462
|
-
|
463
|
-
version.bump(:major)
|
464
|
-
secure_write('VERSION') { |v| v.puts version }
|
463
|
+
version_bump_to(:major)
|
465
464
|
end
|
466
465
|
|
467
466
|
desc 'Bump minor version'
|
468
467
|
task :minor do
|
469
|
-
|
470
|
-
version.bump(:minor)
|
471
|
-
secure_write('VERSION') { |v| v.puts version }
|
468
|
+
version_bump_to(:minor)
|
472
469
|
end
|
473
470
|
|
474
471
|
desc 'Bump build version'
|
475
472
|
task :build do
|
476
|
-
|
477
|
-
|
478
|
-
|
473
|
+
version_bump_to(:build)
|
474
|
+
end
|
475
|
+
end
|
476
|
+
|
477
|
+
desc 'Bump version with suggestion'
|
478
|
+
task :bump do
|
479
|
+
log_diff = version_log_diff(from_version: nil, to_version: 'HEAD')
|
480
|
+
system = xdg_config('version_bump_system_prompt.txt', default_version_bump_system_prompt)
|
481
|
+
prompt = xdg_config('version_bump_prompt.txt', default_version_bump_prompt) % { version:, log_diff: }
|
482
|
+
response = ollama_generate(system:, prompt:)
|
483
|
+
puts response
|
484
|
+
default = nil
|
485
|
+
if response =~ /(major|minor|build)\s*$/
|
486
|
+
default = $1
|
487
|
+
end
|
488
|
+
response = ask?(
|
489
|
+
'Bump a major, minor, or build version%{default}? ',
|
490
|
+
/\A(major|minor|build)\z/,
|
491
|
+
default:
|
492
|
+
)
|
493
|
+
if version_type = response&.[](1)
|
494
|
+
version_bump_to(version_type)
|
495
|
+
else
|
496
|
+
exit 1
|
479
497
|
end
|
480
498
|
end
|
481
499
|
end
|
@@ -595,43 +613,11 @@ class GemHadar
|
|
595
613
|
end
|
596
614
|
end
|
597
615
|
|
598
|
-
def
|
599
|
-
base_url = ENV['OLLAMA_URL']
|
600
|
-
if base_url.blank? && host = ENV['OLLAMA_HOST'].full?
|
601
|
-
base_url = 'http://%s' % host
|
602
|
-
end
|
603
|
-
base_url.present? or return
|
616
|
+
def create_git_release_body
|
604
617
|
log_diff = version_log_diff(to_version: version)
|
605
|
-
|
606
|
-
|
607
|
-
system
|
608
|
-
You are a Ruby programmer generating changelog messages in markdown
|
609
|
-
format for new releases, so users can see what has changed. Remember you
|
610
|
-
are not a chatbot of any kind.
|
611
|
-
EOT
|
612
|
-
prompt = (<<~EOT) % { name:, version:, log_diff: }
|
613
|
-
Output the content of a changelog for the new release of %{name} %{version}
|
614
|
-
|
615
|
-
**Strictly** follow these guidelines:
|
616
|
-
|
617
|
-
- Use bullet points in markdown format (`-`) to list significant changes.
|
618
|
-
- Exclude trivial updates such as:
|
619
|
-
* Version number increments
|
620
|
-
* Dependency version bumps (unless they resolve critical issues)
|
621
|
-
* Minor code style adjustments
|
622
|
-
* Internal documentation tweaks
|
623
|
-
- Include only verified and substantial changes that impact
|
624
|
-
functionality, performance, or user experience.
|
625
|
-
- If unsure about a change's significance, omit it from the output.
|
626
|
-
- Avoid adding any comments or notes; keep the output purely factual.
|
627
|
-
|
628
|
-
These are the log messages including patches for the new release:
|
629
|
-
|
630
|
-
%{log_diff}
|
631
|
-
EOT
|
632
|
-
options = ENV['OLLAMA_OPTIONS'].full? { |o| JSON.parse(o) } || {}
|
633
|
-
options |= { "temperature" => 0, "top_p" => 1, "min_p" => 0.1 }
|
634
|
-
ollama.generate(model:, system:, prompt:, options:, stream: false, think: false).response
|
618
|
+
system = xdg_config('release_system_prompt.txt', default_git_release_system_prompt)
|
619
|
+
prompt = xdg_config('release_prompt.txt', default_git_release_prompt) % { name:, version:, log_diff: }
|
620
|
+
ollama_generate(system:, prompt:)
|
635
621
|
end
|
636
622
|
|
637
623
|
def edit_temp_file(content)
|
@@ -675,7 +661,7 @@ class GemHadar
|
|
675
661
|
rc = GitHub::ReleaseCreator.new(owner:, repo:, token: github_api_token)
|
676
662
|
tag_name = version_tag(version)
|
677
663
|
target_commitish = `git show -s --format=%H #{tag_name.inspect}^{commit}`.chomp
|
678
|
-
body = edit_temp_file(
|
664
|
+
body = edit_temp_file(create_git_release_body)
|
679
665
|
if body.present?
|
680
666
|
begin
|
681
667
|
response = rc.perform(tag_name:, target_commitish:, body:)
|
@@ -693,6 +679,8 @@ class GemHadar
|
|
693
679
|
end
|
694
680
|
end
|
695
681
|
|
682
|
+
dsl_accessor :push_task_dependencies, %i[ modified build master:push version:push gem:push github:release ]
|
683
|
+
|
696
684
|
def push_task
|
697
685
|
master_prepare_task
|
698
686
|
version_push_task
|
@@ -708,7 +696,7 @@ class GemHadar
|
|
708
696
|
end
|
709
697
|
end
|
710
698
|
desc "Push master and version #{version} all git remotes: #{git_remotes * ' '}"
|
711
|
-
task :push =>
|
699
|
+
task :push => push_task_dependencies
|
712
700
|
end
|
713
701
|
|
714
702
|
def compile_task
|
@@ -810,6 +798,52 @@ class GemHadar
|
|
810
798
|
self
|
811
799
|
end
|
812
800
|
|
801
|
+
# Generates a response from an AI model using the Ollama::Client.
|
802
|
+
#
|
803
|
+
# @param [String] system The system prompt for the AI model.
|
804
|
+
# @param [String] prompt The user prompt to generate a response to.
|
805
|
+
# @return [String, nil] The generated response or nil if generation fails.
|
806
|
+
def ollama_generate(system:, prompt:)
|
807
|
+
base_url = ENV['OLLAMA_URL']
|
808
|
+
if base_url.blank? && host = ENV['OLLAMA_HOST'].full?
|
809
|
+
base_url = 'http://%s' % host
|
810
|
+
end
|
811
|
+
base_url.present? or return
|
812
|
+
ollama = Ollama::Client.new(base_url:, read_timeout: 600, connect_timeout: 60)
|
813
|
+
model = ENV.fetch('OLLAMA_MODEL', 'llama3.1')
|
814
|
+
options = ENV['OLLAMA_OPTIONS'].full? { |o| JSON.parse(o) } || {}
|
815
|
+
options |= { "temperature" => 0, "top_p" => 1, "min_p" => 0.1 }
|
816
|
+
ollama.generate(model:, system:, prompt:, options:, stream: false, think: false).response
|
817
|
+
end
|
818
|
+
|
819
|
+
# Increases the specified part of the version number and writes it back to
|
820
|
+
# the VERSION file.
|
821
|
+
#
|
822
|
+
# @param [Symbol, String] type The part of the version to bump (:major, :minor, or :build)
|
823
|
+
def version_bump_to(type)
|
824
|
+
type = type.to_sym
|
825
|
+
version = File.read('VERSION').chomp.version
|
826
|
+
version.bump(type)
|
827
|
+
secure_write('VERSION') { |v| v.puts version }
|
828
|
+
exit 0
|
829
|
+
end
|
830
|
+
|
831
|
+
# Determine the start and end versions for diff comparison.
|
832
|
+
#
|
833
|
+
# If the VERSION env var is set, it will be used as the starting version tag.
|
834
|
+
# Otherwise, it defaults to the current commit's version or the latest tag.
|
835
|
+
#
|
836
|
+
# @return [Array(String, String)] A fixed-size array containing:
|
837
|
+
# - The start version (e.g., '1.2.3') from which changes are compared.
|
838
|
+
# - The end version (e.g., '1.2.4' or 'HEAD') up to which changes are compared.
|
839
|
+
def determine_version_range
|
840
|
+
version_tags = versions.map { version_tag(_1) } + %w[ HEAD ]
|
841
|
+
found_version_tag = version_tags.index(version_tag(version))
|
842
|
+
found_version_tag.nil? and fail "cannot find version tag #{version_tag(version)}"
|
843
|
+
start_version, end_version = version_tags[found_version_tag, 2]
|
844
|
+
return start_version, end_version
|
845
|
+
end
|
846
|
+
|
813
847
|
# The write_ignore_file method writes the current ignore_files configuration
|
814
848
|
# to a .gitignore file in the project root directory.
|
815
849
|
def write_ignore_file
|
@@ -932,12 +966,6 @@ class GemHadar
|
|
932
966
|
end
|
933
967
|
super(*args)
|
934
968
|
end
|
935
|
-
def fail(*args)
|
936
|
-
args.map! do |a|
|
937
|
-
a.respond_to?(:to_str) ? color(196) { a.to_str } : a
|
938
|
-
end
|
939
|
-
super(*args)
|
940
|
-
end
|
941
969
|
|
942
970
|
# The git_remotes method retrieves the list of remote repositories configured
|
943
971
|
# for the current Git project.
|
@@ -997,19 +1025,28 @@ class GemHadar
|
|
997
1025
|
#
|
998
1026
|
# @return [ Array<String> ] an array of version strings sorted in ascending
|
999
1027
|
# order according to semantic versioning rules.
|
1028
|
+
memoize method:
|
1000
1029
|
def versions
|
1001
|
-
|
1030
|
+
`git tag`.lines.grep(/^v?\d+\.\d+\.\d+$/).map(&:chomp).map {
|
1002
1031
|
_1.sub(/\Av/, '')
|
1003
1032
|
}.sort_by(&:version)
|
1004
1033
|
end
|
1005
1034
|
|
1006
1035
|
# The version_tag method prepends a 'v' prefix to the given version
|
1007
|
-
# string.
|
1036
|
+
# string, unless it's HEAD.
|
1008
1037
|
#
|
1009
1038
|
# @param version [String] the version string to modify
|
1010
1039
|
# @return [String] the modified version string with a 'v' prefix
|
1011
1040
|
def version_tag(version)
|
1012
|
-
version
|
1041
|
+
if version != 'HEAD'
|
1042
|
+
version.dup.prepend ?v
|
1043
|
+
else
|
1044
|
+
version.dup
|
1045
|
+
end
|
1046
|
+
end
|
1047
|
+
|
1048
|
+
def version_untag(version_tag)
|
1049
|
+
version.sub(/\Av/, '')
|
1013
1050
|
end
|
1014
1051
|
|
1015
1052
|
# The github_remote_url method retrieves and parses the GitHub remote URL
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem_hadar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.25.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
@@ -15,14 +15,14 @@ dependencies:
|
|
15
15
|
requirements:
|
16
16
|
- - "~>"
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: '1.
|
18
|
+
version: '1.24'
|
19
19
|
type: :development
|
20
20
|
prerelease: false
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
22
22
|
requirements:
|
23
23
|
- - "~>"
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: '1.
|
25
|
+
version: '1.24'
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: tins
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
@@ -65,6 +65,20 @@ dependencies:
|
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '1.0'
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: mize
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
type: :runtime
|
76
|
+
prerelease: false
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
68
82
|
- !ruby/object:Gem::Dependency
|
69
83
|
name: rake
|
70
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -103,8 +117,10 @@ extra_rdoc_files:
|
|
103
117
|
- README.md
|
104
118
|
- lib/gem_hadar.rb
|
105
119
|
- lib/gem_hadar/github.rb
|
120
|
+
- lib/gem_hadar/prompt_template.rb
|
106
121
|
- lib/gem_hadar/setup.rb
|
107
122
|
- lib/gem_hadar/template_compiler.rb
|
123
|
+
- lib/gem_hadar/utils.rb
|
108
124
|
- lib/gem_hadar/version.rb
|
109
125
|
files:
|
110
126
|
- ".gitignore"
|
@@ -117,8 +133,10 @@ files:
|
|
117
133
|
- gem_hadar.gemspec
|
118
134
|
- lib/gem_hadar.rb
|
119
135
|
- lib/gem_hadar/github.rb
|
136
|
+
- lib/gem_hadar/prompt_template.rb
|
120
137
|
- lib/gem_hadar/setup.rb
|
121
138
|
- lib/gem_hadar/template_compiler.rb
|
139
|
+
- lib/gem_hadar/utils.rb
|
122
140
|
- lib/gem_hadar/version.rb
|
123
141
|
homepage: https://github.com/flori/gem_hadar
|
124
142
|
licenses:
|