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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +4 -0
  3. data/.rubocop.yml +11 -6
  4. data/CHANGELOG.md +11 -0
  5. data/CONTRIBUTING.md +1 -1
  6. data/README.md +6 -3
  7. data/dopstick.gemspec +2 -1
  8. data/lib/dopstick.rb +7 -1
  9. data/lib/dopstick/cli.rb +40 -11
  10. data/lib/dopstick/generator.rb +3 -208
  11. data/lib/dopstick/{templates → generator/base/templates}/bug_report.erb +1 -1
  12. data/lib/dopstick/{templates/CHANGELOG.md → generator/base/templates/changelog.erb} +0 -0
  13. data/lib/dopstick/{templates → generator/base/templates}/coc.erb +1 -1
  14. data/lib/dopstick/generator/base/templates/codeowners.erb +4 -0
  15. data/lib/dopstick/{templates → generator/base/templates}/contributing.erb +5 -5
  16. data/lib/dopstick/generator/base/templates/dependabot.erb +15 -0
  17. data/lib/dopstick/{templates → generator/base/templates}/feature_request.erb +0 -0
  18. data/lib/dopstick/generator/base/templates/funding.erb +4 -0
  19. data/lib/dopstick/{templates → generator/base/templates}/gitignore.erb +0 -0
  20. data/lib/dopstick/{templates → generator/base/templates}/issue.erb +0 -0
  21. data/lib/dopstick/{templates → generator/base/templates}/license.erb +1 -1
  22. data/lib/dopstick/{templates → generator/base/templates}/pull_request.erb +0 -0
  23. data/lib/dopstick/{templates → generator/base/templates}/setup.erb +0 -0
  24. data/lib/dopstick/generator/gem/generator.rb +160 -0
  25. data/lib/dopstick/generator/gem/options.rb +34 -0
  26. data/lib/dopstick/{templates → generator/gem/templates}/active_record.erb +25 -0
  27. data/lib/dopstick/generator/gem/templates/bin.erb +5 -0
  28. data/lib/dopstick/{templates → generator/gem/templates}/cli.erb +0 -0
  29. data/lib/dopstick/{templates → generator/gem/templates}/cli_class.erb +0 -0
  30. data/lib/dopstick/{templates → generator/gem/templates}/console.erb +1 -1
  31. data/lib/dopstick/generator/gem/templates/entry_file.erb +3 -0
  32. data/lib/dopstick/generator/gem/templates/gem_entry_file.erb +3 -0
  33. data/lib/dopstick/{templates → generator/gem/templates}/gemfile.erb +0 -0
  34. data/lib/dopstick/{templates → generator/gem/templates}/gemspec.erb +14 -14
  35. data/lib/dopstick/{templates → generator/gem/templates}/generator.erb +0 -0
  36. data/lib/dopstick/{templates → generator/gem/templates}/generator_class.erb +0 -0
  37. data/lib/dopstick/{templates → generator/gem/templates}/rakefile.erb +0 -0
  38. data/lib/dopstick/generator/gem/templates/readme.erb +50 -0
  39. data/lib/dopstick/generator/gem/templates/rubocop.erb +12 -0
  40. data/lib/dopstick/{templates → generator/gem/templates}/test_file.erb +1 -1
  41. data/lib/dopstick/{templates → generator/gem/templates}/test_helper.erb +1 -1
  42. data/lib/dopstick/{templates → generator/gem/templates}/tests_workflow.erb +6 -4
  43. data/lib/dopstick/{templates → generator/gem/templates}/version.erb +0 -0
  44. data/lib/dopstick/generator/npm/generator.rb +100 -0
  45. data/lib/dopstick/generator/npm/options.rb +26 -0
  46. data/lib/dopstick/generator/npm/templates/babel.erb +15 -0
  47. data/lib/dopstick/generator/npm/templates/eslint.erb +4 -0
  48. data/lib/dopstick/generator/npm/templates/index.erb +12 -0
  49. data/lib/dopstick/generator/npm/templates/index_test.erb +7 -0
  50. data/lib/dopstick/generator/npm/templates/jest.erb +12 -0
  51. data/lib/dopstick/generator/npm/templates/package.erb +42 -0
  52. data/lib/dopstick/generator/npm/templates/prettier.erb +1 -0
  53. data/lib/dopstick/generator/npm/templates/readme.erb +52 -0
  54. data/lib/dopstick/generator/npm/templates/tests_workflow.erb +46 -0
  55. data/lib/dopstick/generator/npm/templates/tsconfig.erb +14 -0
  56. data/lib/dopstick/generator/npm/templates/webpack.erb +33 -0
  57. data/lib/dopstick/generator/options.rb +65 -0
  58. data/lib/dopstick/version.rb +1 -1
  59. metadata +56 -37
  60. data/lib/dopstick/templates/bin.erb +0 -5
  61. data/lib/dopstick/templates/entry_file.erb +0 -3
  62. data/lib/dopstick/templates/funding.erb +0 -4
  63. data/lib/dopstick/templates/gem_entry_file.erb +0 -3
  64. data/lib/dopstick/templates/readme.erb +0 -50
  65. data/lib/dopstick/templates/rubocop.erb +0 -12
@@ -0,0 +1,12 @@
1
+ ---
2
+ inherit_gem:
3
+ rubocop-fnando: .rubocop.yml
4
+
5
+ AllCops:
6
+ TargetRubyVersion: <%= options.oldest_ruby_version.split(".").take(2).join(".") %>
7
+ NewCops: enable
8
+ <%- if options.package_name.include?("-") -%>
9
+ Naming/FileName:
10
+ Exclude:
11
+ - lib/<%= options.package_name %>.rb
12
+ <%- end -%>
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "test_helper"
4
4
 
5
- class <%= const_names.last %>Test < Minitest::Test
5
+ class <%= options.namespace_names.last %>Test < Minitest::Test
6
6
  test "passes" do
7
7
  assert true
8
8
  end
@@ -4,7 +4,7 @@ require "simplecov"
4
4
  SimpleCov.start
5
5
 
6
6
  require "bundler/setup"
7
- require <%= gem_name.inspect %>
7
+ require <%= options.package_name.inspect %>
8
8
 
9
9
  require "minitest/utils"
10
10
  require "minitest/autorun"
@@ -1,4 +1,4 @@
1
- name: Tests
1
+ name: ruby-tests
2
2
 
3
3
  on:
4
4
  pull_request:
@@ -18,11 +18,11 @@ jobs:
18
18
  strategy:
19
19
  fail-fast: false
20
20
  matrix:
21
- ruby: [<%= ruby_versions.map {|v| [*Gem::Version.new(v).canonical_segments, "x"].take(3).join(".") }.join(", ") %>]
21
+ ruby: [<%= options.ruby_versions.map {|v| [*Gem::Version.new(v).canonical_segments, "x"].take(3).join(".") }.join(", ") %>]
22
22
  gemfile:
23
23
  - Gemfile
24
24
 
25
- <%- if options[:active_record] -%>
25
+ <%- if options.active_record? -%>
26
26
  services:
27
27
  postgres:
28
28
  image: postgres:11.5
@@ -48,7 +48,7 @@ jobs:
48
48
  with:
49
49
  ruby-version: ${{ matrix.ruby }}
50
50
 
51
- <%- if options[:active_record] -%>
51
+ <%- if options.active_record? -%>
52
52
  - name: Install PostgreSQL client
53
53
  env:
54
54
  PGHOST: localhost
@@ -68,6 +68,8 @@ jobs:
68
68
 
69
69
  - name: Run Tests
70
70
  env:
71
+ PGHOST: localhost
72
+ PGUSER: postgres
71
73
  BUNDLE_GEMFILE: ${{ matrix.gemfile }}
72
74
  run: |
73
75
  bundle exec rake
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dopstick
4
+ module Generator
5
+ module NPM
6
+ Generator.registered["npm"] = 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 npm 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_npm_templates
32
+ template "package.erb", "package.json"
33
+ template "tests_workflow.erb", ".github/workflows/js-tests.yml"
34
+ template "tsconfig.erb", "tsconfig.json"
35
+ template "prettier.erb", "prettier.config.js"
36
+ template "jest.erb", "jest.config.js"
37
+ template "eslint.erb", ".eslintrc.js"
38
+ template "webpack.erb", "webpack.config.js"
39
+ template "babel.erb", "babel.config.json"
40
+ template "index.erb", "src/index.ts"
41
+ template "index_test.erb", "src/index.test.ts"
42
+ end
43
+
44
+ def copy_generic_templates
45
+ template "license.erb", "LICENSE.md"
46
+ template "coc.erb", "CODE_OF_CONDUCT.md"
47
+ template "readme.erb", "README.md"
48
+ template "changelog.erb", "CHANGELOG.md"
49
+ template "contributing.erb", "CONTRIBUTING.md"
50
+ template "gitignore.erb", ".gitignore"
51
+ end
52
+
53
+ def copy_github_templates
54
+ template "funding.erb", ".github/FUNDING.yml"
55
+ template "bug_report.erb", ".github/ISSUE_TEMPLATE/bug_report.md"
56
+ template "feature_request.erb",
57
+ ".github/ISSUE_TEMPLATE/feature_request.md"
58
+ template "pull_request.erb", ".github/PULL_REQUEST_TEMPLATE.md"
59
+ template "dependabot.erb", ".github/dependabot.yml"
60
+ template "codeowners.erb", ".github/CODEOWNERS"
61
+ end
62
+
63
+ def install_dependencies
64
+ return if options.skip_install?
65
+
66
+ in_root do
67
+ %w[
68
+ @babel/core
69
+ @babel/preset-env
70
+ @fnando/codestyle
71
+ @fnando/eslint-config-codestyle
72
+ @typescript-eslint/eslint-plugin
73
+ @typescript-eslint/parser
74
+ babel-loader
75
+ babel-plugin-module-resolver
76
+ eslint
77
+ jest
78
+ jest-filename-transform
79
+ prettier
80
+ ts-jest
81
+ ts-loader
82
+ typescript
83
+ webpack
84
+ webpack-cli
85
+ ].each do |dep|
86
+ run "yarn add --dev #{dep}", capture: true
87
+ end
88
+ end
89
+ end
90
+
91
+ def initialize_repo
92
+ in_root do
93
+ run "git init --initial-branch=main", capture: true
94
+ run "git add .", capture: true
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dopstick
4
+ module Generator
5
+ module NPM
6
+ class Options < Generator::Options
7
+ using Refinements
8
+
9
+ def user_name
10
+ `npm get init.author.name`.chomp.presence ||
11
+ super
12
+ end
13
+
14
+ def user_email
15
+ `npm get init.author.email`.chomp.presence ||
16
+ super
17
+ end
18
+
19
+ def user_url
20
+ `npm get init.author.url`.chomp.presence ||
21
+ "https://github.com/#{github_user}"
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,15 @@
1
+ {
2
+ "presets": ["@babel/preset-env"],
3
+ "plugins": [
4
+ [
5
+ "module-resolver",
6
+ {
7
+ "extensions": [".js", ".ts"],
8
+ "root": ["./src"],
9
+ "alias": {
10
+ "~": "./src"
11
+ }
12
+ }
13
+ ]
14
+ ]
15
+ }
@@ -0,0 +1,4 @@
1
+ module.exports = {
2
+ root: true,
3
+ extends: ["@fnando/codestyle/javascript", "@fnando/codestyle/typescript"]
4
+ };
@@ -0,0 +1,12 @@
1
+ // To import modules, you can use ~/:path, where `:path` must be reflect the
2
+ // structure you define inside `./src`. For instance, if you have a
3
+ // `src/utils.ts` file that exports some functions, you can import it with this:
4
+ //
5
+ // ```ts
6
+ // import { func } from "~/utils";
7
+ // ```
8
+ //
9
+ // To export your final bundle, use `yarn build`. This will ensure that all
10
+ // files point to the right place, considering the `~/` alias.
11
+ //
12
+ export const name = "<%= options.package_name %>";
@@ -0,0 +1,7 @@
1
+ import { name } from "~/index";
2
+
3
+ describe("<%= options.package_name %>", () => {
4
+ test("passes", () => {
5
+ expect(name).toEqual("<%= options.package_name %>");
6
+ });
7
+ });
@@ -0,0 +1,12 @@
1
+ const config = require("@fnando/codestyle/jest");
2
+
3
+ module.exports = {
4
+ ...config,
5
+ testRegex: ".*?\\.test\\.ts",
6
+ roots: ["<rootDir>/src"],
7
+ modulePaths: ["src"],
8
+ moduleNameMapper: {
9
+ "^~/": "<rootDir>/src/",
10
+ },
11
+ testPathIgnorePatterns: ["/vendor/bundle/", "node_modules"],
12
+ };
@@ -0,0 +1,42 @@
1
+ <%= JSON.pretty_generate(
2
+ name: options.package_name,
3
+ version: options.version,
4
+ private: true,
5
+ description: options.description,
6
+ author: {
7
+ name: options.user_name,
8
+ email: options.user_email,
9
+ url: options.user_url,
10
+ },
11
+ homepage: options.github_url,
12
+ license: "MIT",
13
+ bugs: "#{options.github_url}/issues",
14
+ repository: "#{options.github_url}.git",
15
+ scripts: {
16
+ test: "jest --watch",
17
+ "test:ci" => "jest && yarn lint",
18
+ lint: "yarn lint:ts && yarn lint:eslint",
19
+ "lint:ts" => "tsc --noEmit",
20
+ "lint:eslint" => "eslint src --max-warnings 0",
21
+ build: "rm -rf dist && webpack"
22
+ },
23
+ devDependencies: {
24
+ "@babel/core" => "*",
25
+ "@babel/preset-env" => "*",
26
+ "@fnando/codestyle" => "*",
27
+ "@fnando/eslint-config-codestyle" => "*",
28
+ "@typescript-eslint/eslint-plugin" => "*",
29
+ "@typescript-eslint/parser" => "*",
30
+ "babel-loader" => "*",
31
+ "babel-plugin-module-resolver" => "*",
32
+ "eslint" => "*",
33
+ "jest" => "*",
34
+ "jest-filename-transform" => "*",
35
+ "prettier" => "*",
36
+ "ts-jest" => "*",
37
+ "ts-loader" => "*",
38
+ "typescript" => "*",
39
+ "webpack" => "*",
40
+ "webpack-cli" => "*"
41
+ }
42
+ ) %>
@@ -0,0 +1 @@
1
+ module.exports = require("@fnando/codestyle/prettier.json");
@@ -0,0 +1,52 @@
1
+ # <%= options.package_name %>
2
+
3
+ [![Tests](<%= options.github_url %>/workflows/node-tests/badge.svg)](https://github.com/fnando/<%= options.package_name %>)
4
+ [![Code Climate](https://codeclimate.com/github/<%= options.github_user %>/<%= options.package_name %>/badges/gpa.svg)](https://codeclimate.com/github/<%= options.github_user %>/<%= options.package_name %>)
5
+ [![NPM](https://img.shields.io/npm/v/<%= options.package_name %>.svg)](https://npmjs.org/packages/<%= options.package_name %>)
6
+ [![NPM](https://img.shields.io/npm/dt/<%= options.package_name %>.svg)](https://npmjs.org/packages/<%= options.package_name %>)
7
+
8
+ <%= options.description %>
9
+
10
+ ## Installation
11
+
12
+ This package is available as a NPM package. To install it, use the following command:
13
+
14
+ ```bash
15
+ npm install <%= options.package_name %> --save
16
+ ```
17
+
18
+ If you're using Yarn (and you should):
19
+
20
+ ```bash
21
+ yarn add <%= options.package_name %>
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ TODO: Write gem usage
27
+
28
+ ## Maintainer
29
+
30
+ - [<%= options.user_name %>](https://github.com/<%= options.github_user %>)
31
+
32
+ ## Contributors
33
+
34
+ - <%= options.github_url %>/contributors
35
+
36
+ ## Contributing
37
+
38
+ For more details about how to contribute, please read
39
+ <%= options.github_url %>/blob/main/CONTRIBUTING.md.
40
+
41
+
42
+ ## License
43
+
44
+ The gem is available as open source under the terms of the
45
+ [MIT License](https://opensource.org/licenses/MIT). A copy of the license can be
46
+ found at <%= options.github_url %>/blob/main/LICENSE.md.
47
+
48
+ ## Code of Conduct
49
+
50
+ Everyone interacting in the <%= options.package_name %> project's codebases, issue trackers,
51
+ chat rooms and mailing lists is expected to follow the
52
+ [code of conduct](<%= options.github_url %>/blob/main/CODE_OF_CONDUCT.md).
@@ -0,0 +1,46 @@
1
+ name: node-tests
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - main
7
+ push:
8
+ branches:
9
+ - main
10
+
11
+ schedule:
12
+ - cron: "0 10 * * *"
13
+
14
+ jobs:
15
+ build:
16
+ name: Tests with Node ${{ matrix.node }}
17
+ runs-on: "ubuntu-latest"
18
+ strategy:
19
+ fail-fast: false
20
+ matrix:
21
+ node: [<%= options.node_versions.map {|v| Gem::Version.new(v).canonical_segments.first.to_s.inspect }.join(", ") %>]
22
+
23
+ steps:
24
+ - uses: actions/checkout@v1
25
+
26
+ - uses: actions/cache@v2
27
+ with:
28
+ path: vendor/bundle
29
+ key: >
30
+ ${{ runner.os }}-${{ matrix.node }}-npm-${{ hashFiles("package.json") }}
31
+ restore-keys: >
32
+ ${{ runner.os }}-${{ matrix.node }}-npm-${{ hashFiles("package.json") }}
33
+
34
+ - name: Set up Node
35
+ uses: actions/setup-node@v2-beta
36
+ with:
37
+ node-version: ${{ matrix.node }}
38
+
39
+ - name: Install npm dependencies
40
+ run: |
41
+ yarn install
42
+
43
+ - name: Run Tests
44
+ run: |
45
+ yarn test:ci
46
+ yarn lint
@@ -0,0 +1,14 @@
1
+ <%= JSON.pretty_generate(
2
+ extends: "@fnando/codestyle",
3
+ include: %w[src],
4
+ compilerOptions: {
5
+ noEmit: false,
6
+ sourceMap: true,
7
+ declaration: true,
8
+ outDir: "dist",
9
+ baseUrl: ".",
10
+ paths: {
11
+ "~/*": ["src/*"]
12
+ }
13
+ }
14
+ ) %>
@@ -0,0 +1,33 @@
1
+ /* eslint-env node */
2
+
3
+ const path = require("path");
4
+
5
+ module.exports = {
6
+ mode: "production",
7
+ entry: {
8
+ index: "./src/index.ts",
9
+ },
10
+ devtool: "source-map",
11
+ output: {
12
+ filename: "[name].js",
13
+ path: path.resolve(__dirname, "dist"),
14
+ },
15
+ module: {
16
+ rules: [
17
+ {
18
+ test: /\.ts$/,
19
+ use: [{ loader: "ts-loader" }, { loader: "babel-loader" }],
20
+ exclude: /node_modules/,
21
+ },
22
+ {
23
+ test: /\.js$/,
24
+ use: [{ loader: "babel-loader" }],
25
+ exclude: /node_modules/,
26
+ },
27
+ ],
28
+ },
29
+ resolve: {
30
+ alias: { "~/": path.resolve(__dirname, "src/") },
31
+ extensions: [".tsx", ".ts", ".js"],
32
+ },
33
+ };