dopstick 0.0.3 → 0.0.4
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/.github/CODEOWNERS +4 -0
- data/.rubocop.yml +11 -6
- data/CHANGELOG.md +11 -0
- data/CONTRIBUTING.md +1 -1
- data/README.md +6 -3
- data/dopstick.gemspec +2 -1
- data/lib/dopstick.rb +7 -1
- data/lib/dopstick/cli.rb +40 -11
- data/lib/dopstick/generator.rb +3 -208
- data/lib/dopstick/{templates → generator/base/templates}/bug_report.erb +1 -1
- data/lib/dopstick/{templates/CHANGELOG.md → generator/base/templates/changelog.erb} +0 -0
- data/lib/dopstick/{templates → generator/base/templates}/coc.erb +1 -1
- data/lib/dopstick/generator/base/templates/codeowners.erb +4 -0
- data/lib/dopstick/{templates → generator/base/templates}/contributing.erb +5 -5
- data/lib/dopstick/generator/base/templates/dependabot.erb +15 -0
- data/lib/dopstick/{templates → generator/base/templates}/feature_request.erb +0 -0
- data/lib/dopstick/generator/base/templates/funding.erb +4 -0
- data/lib/dopstick/{templates → generator/base/templates}/gitignore.erb +0 -0
- data/lib/dopstick/{templates → generator/base/templates}/issue.erb +0 -0
- data/lib/dopstick/{templates → generator/base/templates}/license.erb +1 -1
- data/lib/dopstick/{templates → generator/base/templates}/pull_request.erb +0 -0
- data/lib/dopstick/{templates → generator/base/templates}/setup.erb +0 -0
- data/lib/dopstick/generator/gem/generator.rb +160 -0
- data/lib/dopstick/generator/gem/options.rb +34 -0
- data/lib/dopstick/{templates → generator/gem/templates}/active_record.erb +25 -0
- data/lib/dopstick/generator/gem/templates/bin.erb +5 -0
- data/lib/dopstick/{templates → generator/gem/templates}/cli.erb +0 -0
- data/lib/dopstick/{templates → generator/gem/templates}/cli_class.erb +0 -0
- data/lib/dopstick/{templates → generator/gem/templates}/console.erb +1 -1
- data/lib/dopstick/generator/gem/templates/entry_file.erb +3 -0
- data/lib/dopstick/generator/gem/templates/gem_entry_file.erb +3 -0
- data/lib/dopstick/{templates → generator/gem/templates}/gemfile.erb +0 -0
- data/lib/dopstick/{templates → generator/gem/templates}/gemspec.erb +14 -14
- data/lib/dopstick/{templates → generator/gem/templates}/generator.erb +0 -0
- data/lib/dopstick/{templates → generator/gem/templates}/generator_class.erb +0 -0
- data/lib/dopstick/{templates → generator/gem/templates}/rakefile.erb +0 -0
- data/lib/dopstick/generator/gem/templates/readme.erb +50 -0
- data/lib/dopstick/generator/gem/templates/rubocop.erb +12 -0
- data/lib/dopstick/{templates → generator/gem/templates}/test_file.erb +1 -1
- data/lib/dopstick/{templates → generator/gem/templates}/test_helper.erb +1 -1
- data/lib/dopstick/{templates → generator/gem/templates}/tests_workflow.erb +6 -4
- data/lib/dopstick/{templates → generator/gem/templates}/version.erb +0 -0
- data/lib/dopstick/generator/npm/generator.rb +100 -0
- data/lib/dopstick/generator/npm/options.rb +26 -0
- data/lib/dopstick/generator/npm/templates/babel.erb +15 -0
- data/lib/dopstick/generator/npm/templates/eslint.erb +4 -0
- data/lib/dopstick/generator/npm/templates/index.erb +12 -0
- data/lib/dopstick/generator/npm/templates/index_test.erb +7 -0
- data/lib/dopstick/generator/npm/templates/jest.erb +12 -0
- data/lib/dopstick/generator/npm/templates/package.erb +42 -0
- data/lib/dopstick/generator/npm/templates/prettier.erb +1 -0
- data/lib/dopstick/generator/npm/templates/readme.erb +52 -0
- data/lib/dopstick/generator/npm/templates/tests_workflow.erb +46 -0
- data/lib/dopstick/generator/npm/templates/tsconfig.erb +14 -0
- data/lib/dopstick/generator/npm/templates/webpack.erb +33 -0
- data/lib/dopstick/generator/options.rb +65 -0
- data/lib/dopstick/version.rb +1 -1
- metadata +56 -37
- data/lib/dopstick/templates/bin.erb +0 -5
- data/lib/dopstick/templates/entry_file.erb +0 -3
- data/lib/dopstick/templates/funding.erb +0 -4
- data/lib/dopstick/templates/gem_entry_file.erb +0 -3
- data/lib/dopstick/templates/readme.erb +0 -50
- data/lib/dopstick/templates/rubocop.erb +0 -12
@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
|
|
55
55
|
## Enforcement
|
56
56
|
|
57
57
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
-
reported by contacting the project team at <%= user_email %>. All
|
58
|
+
reported by contacting the project team at <%= options.user_email %>. All
|
59
59
|
complaints will be reviewed and investigated and will result in a response that
|
60
60
|
is deemed necessary and appropriate to the circumstances. The project team is
|
61
61
|
obligated to maintain confidentiality with regard to the reporter of an incident.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Contributing to <%=
|
1
|
+
# Contributing to <%= options.package_name %>
|
2
2
|
|
3
3
|
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
|
4
4
|
|
@@ -9,7 +9,7 @@ changes to this document in a pull request.
|
|
9
9
|
## Code of Conduct
|
10
10
|
|
11
11
|
Everyone interacting in this project's codebases, issue trackers, chat rooms and
|
12
|
-
mailing lists is expected to follow the [code of conduct](<%= github_url
|
12
|
+
mailing lists is expected to follow the [code of conduct](<%= options.github_url
|
13
13
|
%>/blob/main/CODE_OF_CONDUCT.md).
|
14
14
|
|
15
15
|
## Reporting bugs
|
@@ -27,19 +27,19 @@ the behavior, and find related reports.
|
|
27
27
|
## Contributing with code
|
28
28
|
|
29
29
|
Before making any radicals changes, please make sure you discuss your intention
|
30
|
-
by [opening an issue on Github](<%= github_url %>/issues).
|
30
|
+
by [opening an issue on Github](<%= options.github_url %>/issues).
|
31
31
|
|
32
32
|
When you're ready to make your pull request, follow checklist below to make sure
|
33
33
|
your contribution is according to how this project works.
|
34
34
|
|
35
|
-
1. [Fork](https://help.github.com/forking/) <%=
|
35
|
+
1. [Fork](https://help.github.com/forking/) <%= options.package_name %>
|
36
36
|
2. Create a topic branch - `git checkout -b my_branch`
|
37
37
|
3. Make your changes using [descriptive commit messages](#commit-messages)
|
38
38
|
4. Update CHANGELOG.md describing your changes by adding an entry to the
|
39
39
|
"Unreleased" section. If this section is not available, create one right
|
40
40
|
before the last version.
|
41
41
|
5. Push to your branch - `git push origin my_branch`
|
42
|
-
6. [Create a pull request](https://
|
42
|
+
6. [Create a pull request](https://help.github.com/articles/creating-a-pull-request)
|
43
43
|
7. That's it!
|
44
44
|
|
45
45
|
## Styleguides
|
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
# Documentation:
|
3
|
+
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
4
|
+
|
5
|
+
version: 2
|
6
|
+
updates:
|
7
|
+
- package-ecosystem: "github-actions"
|
8
|
+
directory: "/"
|
9
|
+
schedule:
|
10
|
+
interval: "daily"
|
11
|
+
|
12
|
+
- package-ecosystem: "bundler"
|
13
|
+
directory: "/"
|
14
|
+
schedule:
|
15
|
+
interval: "daily"
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) <%= Date.today.year %> <%= user_name %>
|
3
|
+
Copyright (c) <%= Date.today.year %> <%= options.user_name %>
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
6
|
this software and associated documentation files (the "Software"), to deal in
|
File without changes
|
File without changes
|
@@ -0,0 +1,160 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dopstick
|
4
|
+
module Generator
|
5
|
+
module Gem
|
6
|
+
Generator.registered["gem"] = self
|
7
|
+
|
8
|
+
class Generator < Thor::Group
|
9
|
+
using Dopstick::Refinements
|
10
|
+
include Thor::Actions
|
11
|
+
|
12
|
+
attr_accessor :options
|
13
|
+
|
14
|
+
desc "Generate a new gem folder structure"
|
15
|
+
|
16
|
+
def self.exit_on_failure?
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.source_paths
|
21
|
+
[
|
22
|
+
source_root,
|
23
|
+
File.join(__dir__, "../base/templates")
|
24
|
+
]
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.source_root
|
28
|
+
File.join(__dir__, "templates")
|
29
|
+
end
|
30
|
+
|
31
|
+
def copy_ruby_templates
|
32
|
+
template "gemspec.erb", "#{options.package_name}.gemspec"
|
33
|
+
template "rakefile.erb", "Rakefile"
|
34
|
+
template "rubocop.erb", ".rubocop.yml"
|
35
|
+
template "gemfile.erb", "Gemfile"
|
36
|
+
template "tests_workflow.erb", ".github/workflows/ruby-tests.yml"
|
37
|
+
end
|
38
|
+
|
39
|
+
def copy_generic_templates
|
40
|
+
template "license.erb", "LICENSE.md"
|
41
|
+
template "coc.erb", "CODE_OF_CONDUCT.md"
|
42
|
+
template "readme.erb", "README.md"
|
43
|
+
template "changelog.erb", "CHANGELOG.md"
|
44
|
+
template "contributing.erb", "CONTRIBUTING.md"
|
45
|
+
template "gitignore.erb", ".gitignore"
|
46
|
+
end
|
47
|
+
|
48
|
+
def copy_github_templates
|
49
|
+
template "funding.erb", ".github/FUNDING.yml"
|
50
|
+
template "bug_report.erb", ".github/ISSUE_TEMPLATE/bug_report.md"
|
51
|
+
template "feature_request.erb",
|
52
|
+
".github/ISSUE_TEMPLATE/feature_request.md"
|
53
|
+
template "pull_request.erb", ".github/PULL_REQUEST_TEMPLATE.md"
|
54
|
+
template "dependabot.erb", ".github/dependabot.yml"
|
55
|
+
template "codeowners.erb", ".github/CODEOWNERS"
|
56
|
+
end
|
57
|
+
|
58
|
+
def copy_bins
|
59
|
+
template "console.erb", "bin/console"
|
60
|
+
template "setup.erb", "bin/setup"
|
61
|
+
in_root { run "chmod +x bin/*" }
|
62
|
+
end
|
63
|
+
|
64
|
+
def create_entry_file
|
65
|
+
if options.entry_path.include?("/")
|
66
|
+
template "gem_entry_file.erb", "lib/#{options.package_name}.rb"
|
67
|
+
end
|
68
|
+
|
69
|
+
template "entry_file.erb", "lib/#{options.entry_path}.rb"
|
70
|
+
end
|
71
|
+
|
72
|
+
def create_version_file
|
73
|
+
template "version.erb", "lib/#{options.entry_path}/version.rb"
|
74
|
+
end
|
75
|
+
|
76
|
+
def copy_test_files
|
77
|
+
template "test_helper.erb", "test/test_helper.rb"
|
78
|
+
template "test_file.erb", "test/#{options.entry_path}_test.rb"
|
79
|
+
end
|
80
|
+
|
81
|
+
def copy_binary_files
|
82
|
+
return unless options.bin?
|
83
|
+
|
84
|
+
template "cli.erb", "lib/#{options.entry_path}/cli.rb"
|
85
|
+
template "generator.erb", "lib/#{options.entry_path}/generator.rb"
|
86
|
+
template "bin.erb", "exe/#{options.bin}"
|
87
|
+
create_file "lib/#{options.entry_path}/templates/.keep"
|
88
|
+
in_root { run "chmod +x exe/*" }
|
89
|
+
end
|
90
|
+
|
91
|
+
def copy_active_record_files
|
92
|
+
return unless options[:active_record]
|
93
|
+
|
94
|
+
template "active_record.erb", "test/support/active_record.rb"
|
95
|
+
end
|
96
|
+
|
97
|
+
def bundle_install
|
98
|
+
return if options.skip_install?
|
99
|
+
|
100
|
+
in_root do
|
101
|
+
run "bundle install"
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def initialize_repo
|
106
|
+
in_root do
|
107
|
+
run "git init --initial-branch=main", capture: true
|
108
|
+
run "git add bin --force", capture: true
|
109
|
+
run "git add .", capture: true
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
no_commands do
|
114
|
+
def render_tree(skip_content_spaces = false, &block)
|
115
|
+
content = []
|
116
|
+
|
117
|
+
options.namespace_names.each_with_index do |name, count|
|
118
|
+
content << (" " * count) + "module #{name}"
|
119
|
+
end
|
120
|
+
|
121
|
+
spacer = skip_content_spaces ? "" : " "
|
122
|
+
|
123
|
+
content << (spacer * options.namespace_size) + block.call
|
124
|
+
|
125
|
+
(options.namespace_size - 1).downto(0) do |count|
|
126
|
+
content << "#{' ' * count}end"
|
127
|
+
end
|
128
|
+
|
129
|
+
content.join("\n")
|
130
|
+
end
|
131
|
+
|
132
|
+
def render_cli
|
133
|
+
cli_class = erb("cli_class.erb")
|
134
|
+
.chomp
|
135
|
+
.gsub(/^(.)/m, "#{' ' * options.namespace_size}\\1")
|
136
|
+
|
137
|
+
render_tree(true) { cli_class }
|
138
|
+
end
|
139
|
+
|
140
|
+
def render_generator
|
141
|
+
generator_class = erb("generator_class.erb")
|
142
|
+
.chomp
|
143
|
+
.gsub(
|
144
|
+
/^(.)/m,
|
145
|
+
"#{' ' * options.namespace_size}\\1"
|
146
|
+
)
|
147
|
+
|
148
|
+
render_tree(true) { generator_class }
|
149
|
+
end
|
150
|
+
|
151
|
+
def erb(file)
|
152
|
+
ERB.new(
|
153
|
+
File.read("#{self.class.source_root}/#{file}")
|
154
|
+
).result(binding)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dopstick
|
4
|
+
module Generator
|
5
|
+
module Gem
|
6
|
+
class Options < Generator::Options
|
7
|
+
def bin?
|
8
|
+
!@options[:bin].empty?
|
9
|
+
end
|
10
|
+
|
11
|
+
def active_record?
|
12
|
+
@options[:active_record]
|
13
|
+
end
|
14
|
+
|
15
|
+
def namespace_names
|
16
|
+
@namespace_names ||= @options[:namespace].split("::")
|
17
|
+
end
|
18
|
+
|
19
|
+
def namespace_size
|
20
|
+
@namespace_size ||= namespace_names.size
|
21
|
+
end
|
22
|
+
|
23
|
+
def oldest_ruby_version
|
24
|
+
version = ruby_versions
|
25
|
+
.map {|v| ::Gem::Version.new(v) }
|
26
|
+
.min
|
27
|
+
.canonical_segments
|
28
|
+
|
29
|
+
[*version, 0].take(3).join(".")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -21,3 +21,28 @@ ActiveRecord::Base.logger = nil
|
|
21
21
|
def schema(&block)
|
22
22
|
ActiveRecord::Schema.define(version: 0, &block)
|
23
23
|
end
|
24
|
+
|
25
|
+
# Create a new migration, which can be executed up and down.
|
26
|
+
#
|
27
|
+
# test "do something" do
|
28
|
+
# migration = with_migration do
|
29
|
+
# def up
|
30
|
+
# # do something
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# def down
|
34
|
+
# # undo something
|
35
|
+
# end
|
36
|
+
# end
|
37
|
+
#
|
38
|
+
# migration.up
|
39
|
+
# migration.down
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
def with_migration(&block)
|
43
|
+
migration_class = ActiveRecord::Migration[
|
44
|
+
ActiveRecord::Migration.current_version
|
45
|
+
]
|
46
|
+
|
47
|
+
Class.new(migration_class, &block).new
|
48
|
+
end
|
File without changes
|
File without changes
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require "bundler/setup"
|
5
|
-
require <%=
|
5
|
+
require <%= options.package_name.inspect %>
|
6
6
|
|
7
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
8
8
|
# with your gem easier. You can also use a different console, if you like.
|
File without changes
|
@@ -1,20 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "./lib/<%= entry_path %>/version"
|
3
|
+
require_relative "./lib/<%= options.entry_path %>/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name = "<%=
|
7
|
-
spec.version = <%= options
|
8
|
-
spec.authors = [<%= user_name.inspect %>]
|
9
|
-
spec.email = [<%= user_email.inspect %>]
|
6
|
+
spec.name = "<%= options.package_name %>"
|
7
|
+
spec.version = <%= options.namespace %>::VERSION
|
8
|
+
spec.authors = [<%= options.user_name.inspect %>]
|
9
|
+
spec.email = [<%= options.user_email.inspect %>]
|
10
10
|
|
11
|
-
spec.summary =
|
11
|
+
spec.summary = <%= options.description.inspect %>
|
12
12
|
spec.description = spec.summary
|
13
13
|
spec.license = "MIT"
|
14
|
-
spec.required_ruby_version = Gem::Requirement.new(">= <%= oldest_ruby_version %>")
|
14
|
+
spec.required_ruby_version = Gem::Requirement.new(">= <%= options.oldest_ruby_version %>")
|
15
15
|
|
16
|
-
github_url = <%= github_url.inspect %>
|
17
|
-
github_tree_url = "#{github_url}/tree/v#{spec.version}"
|
16
|
+
github_url = <%= options.github_url.inspect %>
|
17
|
+
github_tree_url = "#{options.github_url}/tree/v#{spec.version}"
|
18
18
|
|
19
19
|
spec.homepage = github_url
|
20
20
|
spec.metadata["homepage_uri"] = spec.homepage
|
@@ -34,20 +34,20 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.executables = spec.files.grep(%r{^exe/}) {|f| File.basename(f) }
|
35
35
|
spec.require_paths = ["lib"]
|
36
36
|
|
37
|
-
<%- if options
|
37
|
+
<%- if options.active_record -%>
|
38
38
|
spec.add_dependency "activerecord"
|
39
39
|
<%- end -%>
|
40
|
-
<%-
|
40
|
+
<%- if options.bin? -%>
|
41
41
|
spec.add_dependency "thor"
|
42
42
|
<%- end -%>
|
43
43
|
spec.add_development_dependency "minitest"
|
44
44
|
spec.add_development_dependency "minitest-utils"
|
45
|
+
<%- if options.active_record? -%>
|
46
|
+
spec.add_development_dependency "pg"
|
47
|
+
<%- end -%>
|
45
48
|
spec.add_development_dependency "pry-meta"
|
46
49
|
spec.add_development_dependency "rake"
|
47
50
|
spec.add_development_dependency "rubocop"
|
48
51
|
spec.add_development_dependency "rubocop-fnando"
|
49
52
|
spec.add_development_dependency "simplecov"
|
50
|
-
<%- if options[:active_record] -%>
|
51
|
-
spec.add_development_dependency "pg"
|
52
|
-
<%- end -%>
|
53
53
|
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# <%= options.package_name %>
|
2
|
+
|
3
|
+
[](https://github.com/fnando/<%= options.package_name %>)
|
4
|
+
[](https://codeclimate.com/github/<%= options.github_user %>/<%= options.package_name %>)
|
5
|
+
[](https://rubygems.org/gems/<%= options.package_name %>)
|
6
|
+
[](https://rubygems.org/gems/<%= options.package_name %>)
|
7
|
+
|
8
|
+
<%= options.description %>
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
```bash
|
13
|
+
gem install <%= options.package_name %>
|
14
|
+
```
|
15
|
+
|
16
|
+
Or add the following line to your project's Gemfile:
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
gem "<%= options.package_name %>"
|
20
|
+
```
|
21
|
+
|
22
|
+
## Usage
|
23
|
+
|
24
|
+
TODO: Write gem usage
|
25
|
+
|
26
|
+
## Maintainer
|
27
|
+
|
28
|
+
- [<%= options.user_name %>](https://github.com/<%= options.github_user %>)
|
29
|
+
|
30
|
+
## Contributors
|
31
|
+
|
32
|
+
- <%= options.github_url %>/contributors
|
33
|
+
|
34
|
+
## Contributing
|
35
|
+
|
36
|
+
For more details about how to contribute, please read
|
37
|
+
<%= options.github_url %>/blob/main/CONTRIBUTING.md.
|
38
|
+
|
39
|
+
|
40
|
+
## License
|
41
|
+
|
42
|
+
The gem is available as open source under the terms of the
|
43
|
+
[MIT License](https://opensource.org/licenses/MIT). A copy of the license can be
|
44
|
+
found at <%= options.github_url %>/blob/main/LICENSE.md.
|
45
|
+
|
46
|
+
## Code of Conduct
|
47
|
+
|
48
|
+
Everyone interacting in the <%= options.package_name %> project's codebases, issue trackers,
|
49
|
+
chat rooms and mailing lists is expected to follow the
|
50
|
+
[code of conduct](<%= options.github_url %>/blob/main/CODE_OF_CONDUCT.md).
|