mvnizer 0.8.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 11933414c414c6bfad036d01c607fe5d2b9020e1
4
- data.tar.gz: 77f61e021a633c1f8cf7432fd2f8fcb803bfe3ce
2
+ SHA256:
3
+ metadata.gz: 1cf0ce88c3a1af4e9dbacfd988d7cd4a7ddd961b6020733e78bcde0285779b80
4
+ data.tar.gz: 668289dcbdfce3d7cafe62d5f91cd9ba221dc26c4fa966767f7f762c94287c26
5
5
  SHA512:
6
- metadata.gz: d03d86c1fd6e4da720e68ec332140db131db5f052ab306586c008372b68b06b7fe62355b91714fdd60145cef7a47c4d4dd5d1c687585f5c4441da770a232112f
7
- data.tar.gz: 4e7254ca88ac782cc9da84728b265af012705c4e398beeb705fbe45664aba49fb1c34578a5ecc81022baf5fc4e03b3dbe2f92891fe5dda14371cbd08381484e0
6
+ metadata.gz: a60436e23a7838d110414cc95cd2f8a4ed3603c8cb5af55c9698bce34ee6500a14b24dfaa674824a1c3954d65aebb1b5ef08c25bb547a690e1eb1335ac1d6761
7
+ data.tar.gz: 478d0c81ee32e6beaf01bb1237388c19480a99771016f0da7aa49278a973029c106c90befc66510045d0f78ca335c08ae2df25fdc4af1cb34689795ee4d2cca5
data/.gitignore ADDED
@@ -0,0 +1,52 @@
1
+ # rcov generated
2
+ coverage
3
+ coverage.data
4
+
5
+ # rdoc generated
6
+ rdoc
7
+
8
+ # yard generated
9
+ doc
10
+ .yardoc
11
+
12
+ # bundler
13
+ .bundle
14
+
15
+ # jeweler generated
16
+ pkg
17
+
18
+ # aruba test folder
19
+ tmp
20
+
21
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
22
+ #
23
+ # * Create a file at ~/.gitignore
24
+ # * Include files you want ignored
25
+ # * Run: git config --global core.excludesfile ~/.gitignore
26
+ #
27
+ # After doing this, these files will be ignored in all your git projects,
28
+ # saving you from having to 'pollute' every project you touch with them
29
+ #
30
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
31
+ #
32
+ # For MacOS:
33
+ #
34
+ #.DS_Store
35
+
36
+ # For TextMate
37
+ #*.tmproj
38
+ #tmtags
39
+
40
+ # For emacs:
41
+ *~
42
+ \#*
43
+ .\#*
44
+
45
+ # For vim:
46
+ #*.swp
47
+
48
+ # For redcar:
49
+ #.redcar
50
+
51
+ # For rubinius:
52
+ #*.rbc
data/.travis.yml CHANGED
@@ -2,6 +2,5 @@ language: ruby
2
2
  before_install:
3
3
  - gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
4
4
  rvm:
5
- - "2.3.8"
6
- - "2.4.9"
7
- - "2.6.5"
5
+ - "2.7.0"
6
+ - "3.0.0"
data/CHANGELOG.org CHANGED
@@ -1,3 +1,21 @@
1
+ * Mvnizer 1.0.0
2
+
3
+ - Release of major version!
4
+
5
+ * Mvnizer 0.11.0
6
+
7
+ - Update mvnizer to be used with ruby 2.7.0
8
+ - Remove dependency on jeweler
9
+
10
+ * Mvnizer 0.10.0
11
+
12
+ - Update default junit version to 5.7.0
13
+ - Update maven compiler plugin to 3.8.1
14
+
15
+ * Mvnizer 0.9.0
16
+
17
+ - Update rack dependency version.
18
+
1
19
  * Mvnizer 0.8.0
2
20
 
3
21
  - Update dependencies version.
@@ -10,6 +28,8 @@
10
28
 
11
29
  - Maven plugins support,
12
30
  - Update dependencies version.
31
+ - Add support for Maven plugins
32
+ - Set ruby 2.3.0 as minimum version
13
33
 
14
34
  * Mvnizer 0.5.0
15
35
 
data/Gemfile CHANGED
@@ -1,18 +1,15 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- ruby "> 2.3.0"
3
+ ruby ">= 2.7.0"
4
4
 
5
- gem 'httparty', '~> 0.16'
6
- gem 'nokogiri', '~> 1.10'
7
-
8
- # Ensure Rake remains under v. 11 to avoid issues with
9
- # removed `last_comment` in rspec.
10
- gem 'rake', '< 11.0'
5
+ gem 'httparty', '~> 0.17'
6
+ gem 'nokogiri', '~> 1.12'
7
+ gem 'rake', '~> 13.0'
8
+ gem 'rake-release'
11
9
 
12
10
  group :development do
13
- gem 'rspec', '~> 2.99'
14
- gem 'rspec-mocks', '~> 2.99'
11
+ gem 'rspec', '~> 3.10.0'
12
+ gem 'rspec-mocks', '~> 3.10.0'
15
13
  gem 'fakefs', '~> 0.14'
16
- gem 'jeweler', '~> 2.3'
17
- gem 'aruba', '~> 0.14'
14
+ # gem 'aruba', '~> 0.14'
18
15
  end
data/Gemfile.lock CHANGED
@@ -1,119 +1,55 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- addressable (2.4.0)
5
- aruba (0.14.6)
6
- childprocess (>= 0.6.3, < 0.10.0)
7
- contracts (~> 0.9)
8
- cucumber (>= 1.3.19)
9
- ffi (~> 1.9.10)
10
- rspec-expectations (>= 2.99)
11
- thor (~> 0.19)
12
- backports (3.11.4)
13
- builder (3.2.3)
14
- childprocess (0.9.0)
15
- ffi (~> 1.0, >= 1.0.11)
16
- contracts (0.16.0)
17
- cucumber (3.1.2)
18
- builder (>= 2.1.2)
19
- cucumber-core (~> 3.2.0)
20
- cucumber-expressions (~> 6.0.1)
21
- cucumber-wire (~> 0.0.1)
22
- diff-lcs (~> 1.3)
23
- gherkin (~> 5.1.0)
24
- multi_json (>= 1.7.5, < 2.0)
25
- multi_test (>= 0.1.2)
26
- cucumber-core (3.2.1)
27
- backports (>= 3.8.0)
28
- cucumber-tag_expressions (~> 1.1.0)
29
- gherkin (~> 5.0)
30
- cucumber-expressions (6.0.1)
31
- cucumber-tag_expressions (1.1.1)
32
- cucumber-wire (0.0.1)
33
- descendants_tracker (0.0.4)
34
- thread_safe (~> 0.3, >= 0.3.1)
35
- diff-lcs (1.3)
36
- fakefs (0.14.3)
37
- faraday (0.9.2)
38
- multipart-post (>= 1.2, < 3)
39
- ffi (1.9.25)
40
- ffi (1.9.25-java)
41
- gherkin (5.1.0)
42
- git (1.5.0)
43
- github_api (0.16.0)
44
- addressable (~> 2.4.0)
45
- descendants_tracker (~> 0.0.4)
46
- faraday (~> 0.8, < 0.10)
47
- hashie (>= 3.4)
48
- mime-types (>= 1.16, < 3.0)
49
- oauth2 (~> 1.0)
50
- hashie (3.6.0)
51
- highline (2.0.0)
52
- httparty (0.16.2)
4
+ diff-lcs (1.4.4)
5
+ fakefs (0.20.1)
6
+ httparty (0.18.1)
7
+ mime-types (~> 3.0)
53
8
  multi_xml (>= 0.5.2)
54
- jar-dependencies (0.4.0)
55
- jeweler (2.3.9)
56
- builder
57
- bundler
58
- git (>= 1.2.5)
59
- github_api (~> 0.16.0)
60
- highline (>= 1.6.15)
61
- nokogiri (>= 1.5.10)
62
- psych
63
- rake
64
- rdoc
65
- semver2
66
- jwt (2.1.0)
67
- mime-types (2.99.3)
68
- mini_portile2 (2.4.0)
69
- multi_json (1.13.1)
70
- multi_test (0.1.2)
9
+ mime-types (3.3.1)
10
+ mime-types-data (~> 3.2015)
11
+ mime-types-data (3.2021.0225)
12
+ mini_portile2 (2.6.1)
71
13
  multi_xml (0.6.0)
72
- multipart-post (2.0.0)
73
- nokogiri (1.10.8)
74
- mini_portile2 (~> 2.4.0)
75
- nokogiri (1.10.8-java)
76
- oauth2 (1.4.1)
77
- faraday (>= 0.8, < 0.16.0)
78
- jwt (>= 1.0, < 3.0)
79
- multi_json (~> 1.3)
80
- multi_xml (~> 0.5)
81
- rack (>= 1.2, < 3)
82
- psych (3.0.2)
83
- psych (3.0.2-java)
84
- jar-dependencies (>= 0.1.7)
85
- rack (2.0.8)
86
- rake (10.5.0)
87
- rdoc (6.0.4)
88
- rspec (2.99.0)
89
- rspec-core (~> 2.99.0)
90
- rspec-expectations (~> 2.99.0)
91
- rspec-mocks (~> 2.99.0)
92
- rspec-core (2.99.2)
93
- rspec-expectations (2.99.2)
94
- diff-lcs (>= 1.1.3, < 2.0)
95
- rspec-mocks (2.99.4)
96
- semver2 (3.4.2)
97
- thor (0.20.0)
98
- thread_safe (0.3.6)
99
- thread_safe (0.3.6-java)
14
+ nokogiri (1.12.5)
15
+ mini_portile2 (~> 2.6.1)
16
+ racc (~> 1.4)
17
+ nokogiri (1.12.5-java)
18
+ racc (~> 1.4)
19
+ racc (1.5.2)
20
+ racc (1.5.2-java)
21
+ rake (13.0.3)
22
+ rake-release (1.3.0)
23
+ bundler (>= 1.11, < 3)
24
+ rspec (3.10.0)
25
+ rspec-core (~> 3.10.0)
26
+ rspec-expectations (~> 3.10.0)
27
+ rspec-mocks (~> 3.10.0)
28
+ rspec-core (3.10.1)
29
+ rspec-support (~> 3.10.0)
30
+ rspec-expectations (3.10.1)
31
+ diff-lcs (>= 1.2.0, < 2.0)
32
+ rspec-support (~> 3.10.0)
33
+ rspec-mocks (3.10.2)
34
+ diff-lcs (>= 1.2.0, < 2.0)
35
+ rspec-support (~> 3.10.0)
36
+ rspec-support (3.10.2)
100
37
 
101
38
  PLATFORMS
102
39
  java
103
40
  ruby
104
41
 
105
42
  DEPENDENCIES
106
- aruba (~> 0.14)
107
43
  fakefs (~> 0.14)
108
- httparty (~> 0.16)
109
- jeweler (~> 2.3)
110
- nokogiri (~> 1.10)
111
- rake (< 11.0)
112
- rspec (~> 2.99)
113
- rspec-mocks (~> 2.99)
44
+ httparty (~> 0.17)
45
+ nokogiri (~> 1.12)
46
+ rake (~> 13.0)
47
+ rake-release
48
+ rspec (~> 3.10.0)
49
+ rspec-mocks (~> 3.10.0)
114
50
 
115
51
  RUBY VERSION
116
- ruby 2.3.8p459
52
+ ruby 2.7.0p0
117
53
 
118
54
  BUNDLED WITH
119
- 2.1.2
55
+ 2.1.4
data/README.org CHANGED
@@ -44,12 +44,14 @@ Here are some examples of valid commands:
44
44
  #+BEGIN_EXAMPLE
45
45
  mvnizer new foo
46
46
  mvnizer new foo:war
47
- mvnizer new foo:1.0:war
47
+ mvnizer new foo:1.0.0:war
48
48
  mvnizer new com.example:foo
49
49
  mvnizer new com.example:foo:war
50
- mvnizer new com.example:foo:1.0:war
50
+ mvnizer new com.example:foo:1.0.0:war
51
51
  #+END_EXAMPLE
52
52
 
53
+ The version *must* be of the form =major.minor.patch-classifier=.
54
+
53
55
  *** WAR Project
54
56
 
55
57
  If the type of project generated is =war=, a servlet
@@ -66,11 +68,12 @@ mvn org.eclipse.jetty:jetty-maven-plugin:9.4.12.v20180830:run-war
66
68
 
67
69
  ** Add Dependency
68
70
 
69
- To add dependencies, you must be in the folder where the pom file you
70
- want to add the dependency to is.
71
+ To add dependencies, you must be in the folder where the pom file
72
+ you want to add the dependency to is.
71
73
 
72
- To add a dependency, simply pass the coordinates of the dependency, and
73
- add scope if needed (if no scope is given, =compile= is assumed):
74
+ To add a dependency, simply pass the coordinates of the dependency,
75
+ and add scope if needed (if no scope is given, =compile= is
76
+ assumed):
74
77
 
75
78
  #+BEGIN_EXAMPLE
76
79
  mvnizer add org.apache.commons:commons-lang3:3.1:jar
@@ -82,8 +85,8 @@ dependencies for you.
82
85
 
83
86
  ** Dependency Search
84
87
 
85
- You can search for dependencies in the Maven central repository with the
86
- command:
88
+ You can search for dependencies in the Maven central repository with
89
+ the command:
87
90
 
88
91
  #+BEGIN_EXAMPLE
89
92
  $ mvnizer search <text>
@@ -93,4 +96,4 @@ command:
93
96
 
94
97
  MIT License.
95
98
 
96
- © Copyright 2012–2019 -- Sébastien Le Callonnec
99
+ © Copyright 2012–2021 Sébastien Le Callonnec
data/Rakefile CHANGED
@@ -1,7 +1,8 @@
1
- # encoding: utf-8
2
-
1
+ # coding: utf-8
3
2
  require 'rubygems'
4
3
  require 'bundler'
4
+ require 'rake/release'
5
+
5
6
  begin
6
7
  Bundler.setup(:default, :development)
7
8
  rescue Bundler::BundlerError => e
@@ -11,25 +12,6 @@ rescue Bundler::BundlerError => e
11
12
  end
12
13
  require 'rake'
13
14
 
14
- require 'jeweler'
15
- require './lib/mvnizer/version.rb'
16
- Jeweler::Tasks.new do |gem|
17
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
18
- gem.name = "mvnizer"
19
- gem.version = Mvnizer::Version::STRING
20
- gem.homepage = "http://github.com/tychobrailleur/mvnizer"
21
- gem.license = "MIT"
22
- gem.summary = %Q{Bootstrap a Maven project without the pain of archetypes.}
23
- gem.description = %Q{Bootstrap a Maven project without the pain of archetypes.}
24
- gem.email = "sebastien@weblogism.com"
25
- gem.authors = ["Sébastien Le Callonnec"]
26
-
27
- gem.executables = ['mvnizer']
28
- # dependencies defined in Gemfile
29
- end
30
- Jeweler::RubygemsDotOrgTasks.new
31
-
32
- require 'rspec/core'
33
15
  require 'rspec/core/rake_task'
34
16
  RSpec::Core::RakeTask.new(:spec) do |spec|
35
17
  spec.pattern = FileList['spec/**/*_spec.rb']
@@ -47,9 +29,7 @@ Rake::RDocTask.new do |rdoc|
47
29
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
30
 
49
31
  rdoc.rdoc_dir = 'rdoc'
50
- rdoc.title = "helloworld #{version}"
32
+ rdoc.title = "mvnizer #{version}"
51
33
  rdoc.rdoc_files.include('README*')
52
34
  rdoc.rdoc_files.include('lib/**/*.rb')
53
35
  end
54
-
55
- # -*- coding: utf-8 -*-
data/conf/default.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  group_id: com.example
2
2
  version: 0.0.1-SNAPSHOT
3
3
  type: jar
4
- dependencies: [ "junit:junit:4.12:jar:test" ]
5
- plugins: [ ":maven-compiler-plugin:3.8.0" ]
4
+ dependencies: [ "org.junit.jupiter:junit-jupiter-engine:5.7.0:jar:test" ]
5
+ plugins: [ ":maven-compiler-plugin:3.8.1" ]
@@ -1,4 +1,4 @@
1
- module Mvnizer
1
+ module Mvnizer
2
2
  class CoordinateParser
3
3
  # Parse the coordinates of an artifact.
4
4
  def parse(coordinates)
@@ -1,5 +1,5 @@
1
1
  module Mvnizer
2
2
  module Version
3
- STRING = '0.8.0'
3
+ STRING = '1.1.0'
4
4
  end
5
5
  end
data/mvnizer.gemspec CHANGED
@@ -1,119 +1,26 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
- # stub: mvnizer 0.8.0 ruby lib
1
+ require_relative 'lib/mvnizer/version'
6
2
 
7
3
  Gem::Specification.new do |s|
8
- s.name = "mvnizer".freeze
9
- s.version = "0.8.0"
4
+ s.name = "mvnizer"
5
+ s.version = Mvnizer::Version::STRING
10
6
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib".freeze]
13
- s.authors = ["S\u00E9bastien Le Callonnec".freeze]
14
- s.date = "2020-03-01"
15
- s.description = "Bootstrap a Maven project without the pain of archetypes.".freeze
16
- s.email = "sebastien@weblogism.com".freeze
17
- s.executables = ["mvnizer".freeze]
7
+ s.require_paths = ["lib"]
8
+ s.authors = ["S\u{e9}bastien Le Callonnec"]
9
+ s.date = "2021-05-23"
10
+ s.description = "Bootstrap a Maven project without the pain of archetypes."
11
+ s.email = "sebastien@weblogism.com"
12
+ s.executables = ["mvnizer"]
18
13
  s.extra_rdoc_files = [
19
14
  "LICENSE.txt",
20
15
  "README.org"
21
16
  ]
22
- s.files = [
23
- ".rspec",
24
- ".travis.yml",
25
- "CHANGELOG.org",
26
- "Dockerfile",
27
- "Gemfile",
28
- "Gemfile.lock",
29
- "LICENSE.txt",
30
- "README.org",
31
- "Rakefile",
32
- "TODO.org",
33
- "bin/mvnizer",
34
- "conf/default.yml",
35
- "features/new_project.feature",
36
- "features/search_artefact.feature",
37
- "features/step_definitions/pom_steps.rb",
38
- "features/support/env.rb",
39
- "lib/mvnizer.rb",
40
- "lib/mvnizer/commands.rb",
41
- "lib/mvnizer/commands/add_dependency.rb",
42
- "lib/mvnizer/commands/new_project.rb",
43
- "lib/mvnizer/commands/new_war_project.rb",
44
- "lib/mvnizer/commands/project_factory.rb",
45
- "lib/mvnizer/commands/search_artefact.rb",
46
- "lib/mvnizer/configuration.rb",
47
- "lib/mvnizer/coordinate_parser.rb",
48
- "lib/mvnizer/erb_helper.rb",
49
- "lib/mvnizer/exceptions.rb",
50
- "lib/mvnizer/mvnize.rb",
51
- "lib/mvnizer/plugin.rb",
52
- "lib/mvnizer/project.rb",
53
- "lib/mvnizer/task_helper.rb",
54
- "lib/mvnizer/templates/_dependency.xml.erb",
55
- "lib/mvnizer/templates/_plugin.xml.erb",
56
- "lib/mvnizer/templates/editorconfig.erb",
57
- "lib/mvnizer/templates/gitignore.erb",
58
- "lib/mvnizer/templates/pom.xml.erb",
59
- "lib/mvnizer/templates/war/ExampleServlet.java.erb",
60
- "lib/mvnizer/templates/war/index.jsp.erb",
61
- "lib/mvnizer/templates/web.xml.erb",
62
- "lib/mvnizer/version.rb",
63
- "mvnizer.gemspec",
64
- "ragel/coordinate.rb",
65
- "ragel/coordinate.rl",
66
- "ragel/test_coord.rb",
67
- "spec/commands/add_dependency_spec.rb",
68
- "spec/commands/new_project_spec.rb",
69
- "spec/commands/new_war_project_spec.rb",
70
- "spec/commands/project_factory_spec.rb",
71
- "spec/commands/search_artefact_spec.rb",
72
- "spec/configuration_spec.rb",
73
- "spec/coordinate_parser_spec.rb",
74
- "spec/dummy.txt.erb",
75
- "spec/dummy_pom.xml",
76
- "spec/mvnize_spec.rb",
77
- "spec/project_spec.rb",
78
- "spec/spec_helper.rb",
79
- "spec/task_helper_spec.rb"
80
- ]
81
- s.homepage = "http://github.com/tychobrailleur/mvnizer".freeze
82
- s.licenses = ["MIT".freeze]
83
- s.rubygems_version = "2.6.12".freeze
84
- s.summary = "Bootstrap a Maven project without the pain of archetypes.".freeze
85
-
86
- if s.respond_to? :specification_version then
87
- s.specification_version = 4
88
-
89
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
90
- s.add_runtime_dependency(%q<httparty>.freeze, ["~> 0.16"])
91
- s.add_runtime_dependency(%q<nokogiri>.freeze, ["~> 1.10"])
92
- s.add_runtime_dependency(%q<rake>.freeze, ["< 11.0"])
93
- s.add_development_dependency(%q<rspec>.freeze, ["~> 2.99"])
94
- s.add_development_dependency(%q<rspec-mocks>.freeze, ["~> 2.99"])
95
- s.add_development_dependency(%q<fakefs>.freeze, ["~> 0.14"])
96
- s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3"])
97
- s.add_development_dependency(%q<aruba>.freeze, ["~> 0.14"])
98
- else
99
- s.add_dependency(%q<httparty>.freeze, ["~> 0.16"])
100
- s.add_dependency(%q<nokogiri>.freeze, ["~> 1.10"])
101
- s.add_dependency(%q<rake>.freeze, ["< 11.0"])
102
- s.add_dependency(%q<rspec>.freeze, ["~> 2.99"])
103
- s.add_dependency(%q<rspec-mocks>.freeze, ["~> 2.99"])
104
- s.add_dependency(%q<fakefs>.freeze, ["~> 0.14"])
105
- s.add_dependency(%q<jeweler>.freeze, ["~> 2.3"])
106
- s.add_dependency(%q<aruba>.freeze, ["~> 0.14"])
107
- end
108
- else
109
- s.add_dependency(%q<httparty>.freeze, ["~> 0.16"])
110
- s.add_dependency(%q<nokogiri>.freeze, ["~> 1.10"])
111
- s.add_dependency(%q<rake>.freeze, ["< 11.0"])
112
- s.add_dependency(%q<rspec>.freeze, ["~> 2.99"])
113
- s.add_dependency(%q<rspec-mocks>.freeze, ["~> 2.99"])
114
- s.add_dependency(%q<fakefs>.freeze, ["~> 0.14"])
115
- s.add_dependency(%q<jeweler>.freeze, ["~> 2.3"])
116
- s.add_dependency(%q<aruba>.freeze, ["~> 0.14"])
17
+ s.files = Dir.chdir(File.expand_path('..', __FILE__)) do
18
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
117
19
  end
118
- end
119
20
 
21
+ s.homepage = "http://github.com/tychobrailleur/mvnizer"
22
+ s.licenses = ["MIT"]
23
+ s.required_ruby_version = '>= 2.7.0'
24
+ s.rubygems_version = "2.7.8"
25
+ s.summary = "Bootstrap a Maven project without the pain of archetypes."
26
+ end