bgem-new 0.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 943eb1c6f6d3f90a5d2eef3821c92ce3547163b27138bdd68b8a6adb08fb909b
4
+ data.tar.gz: a16e260650b2e9332f85dab1495f22fdbfa53801957b921d5a189fdb230adbfb
5
+ SHA512:
6
+ metadata.gz: bb6b525d0271afe5345bacd8e79c0bb995bc758448e145ac645b88ef2e4412c5e09117a247ab9e3a109181a20742f90445c59e7c35a5caa0d7d7cdb04c3a5be4
7
+ data.tar.gz: 9f079e75df03c475aba11345a14e2a3130f264500bcf72af10df766f0517bdb38484bc6fe4eaf8c0387b1b87d1b390eb5de9dbc30d422a9fb69d55956b8a4480
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rspec'
4
+ gem 'rspec-power_assert'
5
+ gem 'pry'
6
+ gem 'awesome_print'
7
+ gem 'rake'
8
+
9
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,47 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ bgem-new (0.0.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ awesome_print (1.9.2)
10
+ coderay (1.1.3)
11
+ diff-lcs (1.5.0)
12
+ method_source (1.0.0)
13
+ power_assert (2.0.3)
14
+ pry (0.14.2)
15
+ coderay (~> 1.1)
16
+ method_source (~> 1.0)
17
+ rake (13.0.6)
18
+ rspec (3.12.0)
19
+ rspec-core (~> 3.12.0)
20
+ rspec-expectations (~> 3.12.0)
21
+ rspec-mocks (~> 3.12.0)
22
+ rspec-core (3.12.2)
23
+ rspec-support (~> 3.12.0)
24
+ rspec-expectations (3.12.3)
25
+ diff-lcs (>= 1.2.0, < 2.0)
26
+ rspec-support (~> 3.12.0)
27
+ rspec-mocks (3.12.6)
28
+ diff-lcs (>= 1.2.0, < 2.0)
29
+ rspec-support (~> 3.12.0)
30
+ rspec-power_assert (1.2.0)
31
+ power_assert (~> 2.0)
32
+ rspec (>= 2.14)
33
+ rspec-support (3.12.1)
34
+
35
+ PLATFORMS
36
+ x86_64-linux
37
+
38
+ DEPENDENCIES
39
+ awesome_print
40
+ bgem-new!
41
+ pry
42
+ rake
43
+ rspec
44
+ rspec-power_assert
45
+
46
+ BUNDLED WITH
47
+ 2.4.15
data/bgem-new.gemspec ADDED
@@ -0,0 +1,11 @@
1
+ Gem::Specification.new do |g|
2
+ g.name = 'bgem-new'
3
+ g.files = `git ls-files`.split($/)
4
+ g.version = '0.0.0'
5
+ g.summary = 'A CLI to generate new Bgem projects.'
6
+ g.authors = ['Anatoly Chernov']
7
+ g.license = 'ISC'
8
+ g.homepage = 'https://github.com/ch1c0t/bgem-new'
9
+
10
+ g.executables << 'bgem-new'
11
+ end
data/bin/bgem-new ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/bgem/new'
4
+ Bgem::New.run
data/lib/bgem/lib.rb ADDED
@@ -0,0 +1,66 @@
1
+ require_relative 'string'
2
+
3
+ module Bgem
4
+ module New
5
+ class Lib
6
+ def initialize name
7
+ @name = name
8
+ @constants = @name.split ':'
9
+ @gem_name = @name.to_gem_name
10
+ @root = "#{Dir.pwd}/#{@gem_name}"
11
+
12
+ create
13
+ end
14
+
15
+ def create
16
+ create_common
17
+
18
+ if @constants.size > 1
19
+ create_for_nested_constant
20
+ else
21
+ create_for_top_constant
22
+ end
23
+ end
24
+
25
+ TEMPLATES = "#{__dir__}/templates"
26
+
27
+ def create_common
28
+ Dir.mkdir @root
29
+ IO.write "#{@root}/#{@gem_name}.gemspec", (template :gemspec)
30
+
31
+ copy "#{TEMPLATES}/Gemfile", "#{@root}/Gemfile"
32
+ copy "#{TEMPLATES}/Rakefile", "#{@root}/Rakefile"
33
+ copy "#{TEMPLATES}/gitignore", "#{@root}/.gitignore"
34
+
35
+ Dir.mkdir "#{@root}/src"
36
+ Dir.mkdir "#{@root}/bgem"
37
+ Dir.mkdir "#{@root}/spec"
38
+ end
39
+
40
+ def create_for_top_constant
41
+ copy "#{TEMPLATES}/module_stub.rb", "#{@root}/src/#{@name}.module.rb"
42
+ IO.write "#{@root}/bgem/config.rb", (template 'bgem-config.top')
43
+ IO.write "#{@root}/spec/helper.rb", (template 'rspec-helper.top')
44
+ IO.write "#{@root}/spec/main_spec.rb", (template 'main_spec.top')
45
+ end
46
+
47
+ def create_for_nested_constant
48
+ copy "#{TEMPLATES}/module_stub.rb", "#{@root}/src/#{@constants.last}.module.rb"
49
+ IO.write "#{@root}/bgem/config.rb", (template 'bgem-config.nested')
50
+ IO.write "#{@root}/spec/helper.rb", (template 'rspec-helper.nested')
51
+ IO.write "#{@root}/spec/main_spec.rb", (template 'main_spec.nested')
52
+ end
53
+
54
+ def template template_name
55
+ require 'erb'
56
+ renderer = ERB.new IO.read "#{TEMPLATES}/#{template_name}.erb"
57
+ renderer.result binding
58
+ end
59
+
60
+ def copy from, to
61
+ require 'fileutils'
62
+ FileUtils.cp from, to
63
+ end
64
+ end
65
+ end
66
+ end
data/lib/bgem/new.rb ADDED
@@ -0,0 +1,20 @@
1
+ module Bgem
2
+ module New
3
+ def self.run
4
+ command, name = ARGV
5
+
6
+ case command
7
+ when nil
8
+ require_relative 'print_help'
9
+ print_help
10
+ when 'lib'
11
+ require_relative 'lib'
12
+ Lib.new name
13
+ when 'cli'
14
+ p 'Not implemented yet.'
15
+ else
16
+ p "Unknown command #{command}."
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ module Bgem
2
+ module New
3
+ def self.print_help
4
+ puts <<~S
5
+ A CLI to generate new Bgem projects.
6
+
7
+ Usage:
8
+ bgem-new TYPE NAME
9
+
10
+ For example:
11
+ bgem-new lib SomeConstant
12
+
13
+ TYPE: the type of the project to be generated.
14
+ Possible values:
15
+ lib
16
+ cli
17
+ NAME: the name of the constant to be worked on in the project.
18
+ Nested constants should be given using ':' as a delimiter.
19
+
20
+ For example:
21
+ Constant
22
+ Constant:InSomeNested:Namespace
23
+ S
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ class String
2
+ def to_snake_case
3
+ self
4
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
5
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
6
+ .downcase
7
+ end
8
+
9
+ def to_gem_name
10
+ parts = self.split(':')
11
+
12
+ if parts.size > 1
13
+ parts.map(&:to_snake_case).join '-'
14
+ else
15
+ self.to_snake_case
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,11 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rspec'
4
+ gem 'rspec-power_assert'
5
+ gem 'pry'
6
+ gem 'awesome_print'
7
+ gem 'rake'
8
+ gem 'bgem'
9
+ gem 'rerun'
10
+
11
+ gemspec
@@ -0,0 +1,13 @@
1
+ task :build do
2
+ sh 'bundle exec bgem'
3
+ end
4
+
5
+ task :test do
6
+ sh 'bundle exec rspec'
7
+ end
8
+
9
+ task :dev do
10
+ sh 'bundle exec rerun -p "src/**/*" bundle exec rake'
11
+ end
12
+
13
+ task :default => [:build, :test]
@@ -0,0 +1,5 @@
1
+ output 'lib/<%= @gem_name.gsub('-', '/') %>.rb'
2
+ inside <%= @constants[..-2].reverse.map do |constant|
3
+ "'" + "module #{constant}" + "'"
4
+ end.join ', '
5
+ %>
@@ -0,0 +1 @@
1
+ output 'lib/<%= @gem_name %>.rb'
@@ -0,0 +1,9 @@
1
+ Gem::Specification.new do |g|
2
+ g.name = '<%= @gem_name %>'
3
+ g.files = ['lib/<%= @gem_name %>.rb']
4
+ g.version = '0.0.0'
5
+ g.summary = 'A valid summary.'
6
+ g.authors = ['Anatoly Chernov']
7
+ g.email = ["chertoly@gmail.com"]
8
+ g.license = 'ISC'
9
+ end
@@ -0,0 +1,3 @@
1
+ *.gem
2
+ Gemfile.lock
3
+ lib
@@ -0,0 +1,9 @@
1
+ require 'helper'
2
+
3
+ <% name = @name.gsub(':', '::') %>
4
+
5
+ describe <%= name %> do
6
+ it do
7
+ assert { <%= name %>.some == 'some value' }
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ require 'helper'
2
+
3
+ describe <%= @name %> do
4
+ it do
5
+ assert { <%= @name %>.some == 'some value' }
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ def self.some
2
+ 'some value'
3
+ end
@@ -0,0 +1,5 @@
1
+ require '<%= @gem_name.gsub('-', '/') %>'
2
+
3
+ require 'rspec/power_assert'
4
+ RSpec::PowerAssert.example_assertion_alias :assert
5
+ RSpec::PowerAssert.example_group_assertion_alias :assert
@@ -0,0 +1,5 @@
1
+ require '<%= @name.to_snake_case %>'
2
+
3
+ require 'rspec/power_assert'
4
+ RSpec::PowerAssert.example_assertion_alias :assert
5
+ RSpec::PowerAssert.example_group_assertion_alias :assert
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bgem-new
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Anatoly Chernov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-07-24 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ executables:
16
+ - bgem-new
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - Gemfile
21
+ - Gemfile.lock
22
+ - bgem-new.gemspec
23
+ - bin/bgem-new
24
+ - lib/bgem/lib.rb
25
+ - lib/bgem/new.rb
26
+ - lib/bgem/print_help.rb
27
+ - lib/bgem/string.rb
28
+ - lib/bgem/templates/Gemfile
29
+ - lib/bgem/templates/Rakefile
30
+ - lib/bgem/templates/bgem-config.nested.erb
31
+ - lib/bgem/templates/bgem-config.top.erb
32
+ - lib/bgem/templates/gemspec.erb
33
+ - lib/bgem/templates/gitignore
34
+ - lib/bgem/templates/main_spec.nested.erb
35
+ - lib/bgem/templates/main_spec.top.erb
36
+ - lib/bgem/templates/module_stub.rb
37
+ - lib/bgem/templates/rspec-helper.nested.erb
38
+ - lib/bgem/templates/rspec-helper.top.erb
39
+ homepage: https://github.com/ch1c0t/bgem-new
40
+ licenses:
41
+ - ISC
42
+ metadata: {}
43
+ post_install_message:
44
+ rdoc_options: []
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ requirements: []
58
+ rubygems_version: 3.4.15
59
+ signing_key:
60
+ specification_version: 4
61
+ summary: A CLI to generate new Bgem projects.
62
+ test_files: []