kamaze-project 1.0.4 → 1.1.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/.yardopts +9 -9
- data/lib/kamaze-project.rb +1 -30
- data/lib/kamaze/project.rb +37 -31
- data/lib/kamaze/project/autoload.rb +38 -0
- data/lib/kamaze/project/boot/core_ext.rb +8 -8
- data/lib/kamaze/project/boot/listen.rb +11 -13
- data/lib/kamaze/project/bundled.rb +79 -0
- data/lib/kamaze/project/concern.rb +17 -2
- data/lib/kamaze/project/concern/cli.rb +4 -1
- data/lib/kamaze/project/concern/cli/with_exit_on_failure.rb +2 -6
- data/lib/kamaze/project/concern/env.rb +14 -12
- data/lib/kamaze/project/concern/helper.rb +1 -2
- data/lib/kamaze/project/concern/mode.rb +1 -1
- data/lib/kamaze/project/concern/observable.rb +12 -11
- data/lib/kamaze/project/concern/sh.rb +7 -7
- data/lib/kamaze/project/concern/tasks.rb +36 -10
- data/lib/kamaze/project/concern/tools.rb +2 -3
- data/lib/kamaze/project/config.rb +1 -1
- data/lib/kamaze/project/core_ext/object.rb +17 -8
- data/lib/kamaze/project/core_ext/pp.rb +14 -16
- data/lib/kamaze/project/debug.rb +40 -49
- data/lib/kamaze/project/dsl.rb +9 -5
- data/lib/kamaze/project/dsl/definition.rb +6 -12
- data/lib/kamaze/project/dsl/setup.rb +1 -3
- data/lib/kamaze/project/helper.rb +1 -1
- data/lib/kamaze/project/helper/inflector.rb +9 -27
- data/lib/kamaze/project/helper/project.rb +1 -1
- data/lib/kamaze/project/helper/project/config.rb +1 -1
- data/lib/kamaze/project/inflector.rb +15 -0
- data/lib/kamaze/project/observable.rb +1 -4
- data/lib/kamaze/project/observer.rb +1 -1
- data/lib/kamaze/project/resources/Vagrantfile +1 -1
- data/lib/kamaze/project/struct.rb +1 -1
- data/lib/kamaze/project/tasks/cs.rb +1 -1
- data/lib/kamaze/project/tasks/cs/control.rb +1 -1
- data/lib/kamaze/project/tasks/cs/correct.rb +1 -1
- data/lib/kamaze/project/tasks/cs/pre_commit.rb +4 -6
- data/lib/kamaze/project/tasks/doc.rb +2 -4
- data/lib/kamaze/project/tasks/doc/watch.rb +4 -6
- data/lib/kamaze/project/tasks/gem.rb +15 -6
- data/lib/kamaze/project/tasks/gem/build.rb +33 -17
- data/lib/kamaze/project/tasks/gem/compile.rb +1 -1
- data/lib/kamaze/project/tasks/gem/gemspec.rb +12 -11
- data/lib/kamaze/project/tasks/gem/install.rb +1 -1
- data/lib/kamaze/project/tasks/gem/push.rb +16 -17
- data/lib/kamaze/project/tasks/misc/gitignore.rb +1 -1
- data/lib/kamaze/project/tasks/shell.rb +1 -1
- data/lib/kamaze/project/tasks/sources.rb +1 -1
- data/lib/kamaze/project/tasks/sources/license.rb +1 -1
- data/lib/kamaze/project/tasks/test.rb +3 -5
- data/lib/kamaze/project/tasks/vagrant.rb +1 -1
- data/lib/kamaze/project/tasks/version/edit.rb +1 -1
- data/lib/kamaze/project/tools.rb +18 -6
- data/lib/kamaze/project/tools/base_tool.rb +6 -2
- data/lib/kamaze/project/tools/console.rb +4 -13
- data/lib/kamaze/project/tools/console/output.rb +14 -6
- data/lib/kamaze/project/tools/console/output/buffer.rb +8 -3
- data/lib/kamaze/project/tools/gemspec.rb +11 -21
- data/lib/kamaze/project/tools/gemspec/builder.rb +43 -31
- data/lib/kamaze/project/tools/gemspec/concern.rb +6 -1
- data/lib/kamaze/project/tools/gemspec/concern/reading.rb +2 -5
- data/lib/kamaze/project/tools/gemspec/packager.rb +10 -10
- data/lib/kamaze/project/tools/gemspec/packer.rb +11 -15
- data/lib/kamaze/project/tools/gemspec/packer/command.rb +1 -1
- data/lib/kamaze/project/tools/gemspec/reader.rb +22 -14
- data/lib/kamaze/project/tools/gemspec/reader/decorator.rb +3 -6
- data/lib/kamaze/project/tools/gemspec/writer.rb +43 -19
- data/lib/kamaze/project/tools/gemspec/writer/dep_gen.rb +9 -6
- data/lib/kamaze/project/tools/gemspec/writer/dependency.rb +1 -1
- data/lib/kamaze/project/tools/git.rb +13 -31
- data/lib/kamaze/project/tools/git/hooks.rb +12 -6
- data/lib/kamaze/project/tools/git/hooks/base_hook.rb +3 -11
- data/lib/kamaze/project/tools/git/hooks/pre_commit.rb +3 -7
- data/lib/kamaze/project/tools/git/status.rb +13 -9
- data/lib/kamaze/project/tools/git/status/decorator.rb +1 -1
- data/lib/kamaze/project/tools/git/status/file.rb +2 -1
- data/lib/kamaze/project/tools/git/status/files_array.rb +1 -1
- data/lib/kamaze/project/tools/git/status/index.rb +1 -1
- data/lib/kamaze/project/tools/git/status/worktree.rb +1 -1
- data/lib/kamaze/project/tools/git/util.rb +1 -1
- data/lib/kamaze/project/tools/licenser.rb +2 -2
- data/lib/kamaze/project/tools/packager.rb +12 -22
- data/lib/kamaze/project/tools/packager/filesystem.rb +11 -3
- data/lib/kamaze/project/tools/packager/filesystem/operator.rb +19 -11
- data/lib/kamaze/project/tools/packager/filesystem/operator/utils.rb +22 -16
- data/lib/kamaze/project/tools/process_locker.rb +67 -38
- data/lib/kamaze/project/tools/rspec.rb +5 -3
- data/lib/kamaze/project/tools/rubocop.rb +30 -41
- data/lib/kamaze/project/tools/rubocop/arguments.rb +1 -1
- data/lib/kamaze/project/tools/rubocop/config.rb +2 -4
- data/lib/kamaze/project/tools/shell.rb +7 -8
- data/lib/kamaze/project/tools/vagrant.rb +6 -16
- data/lib/kamaze/project/tools/vagrant/composer.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/composer/file.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/remote.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/shell.rb +1 -1
- data/lib/kamaze/project/tools/vagrant/writer.rb +1 -1
- data/lib/kamaze/project/tools/yardoc.rb +14 -18
- data/lib/kamaze/project/tools/yardoc/file.rb +7 -7
- data/lib/kamaze/project/tools/yardoc/watchable.rb +9 -15
- data/lib/kamaze/project/tools/yardoc/watcher.rb +28 -35
- data/lib/kamaze/project/tools_provider.rb +28 -40
- data/lib/kamaze/project/tools_provider/resolver.rb +1 -1
- data/lib/kamaze/project/version.rb +5 -91
- data/lib/kamaze/project/version.yml +6 -6
- metadata +23 -51
- data/.rubocop.yml +0 -37
- data/bin/plop +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 73295f0f7906e0a30f2e93dc9b21f85bc52d8e86549b6b8f83815ec627ee1d48
|
|
4
|
+
data.tar.gz: 1ec30804e058002c7e573113584128c990766141cf4da77cba508aba99637b76
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 473533f87853e0ccbdf50215f512253cfd81c9179f4dccd88a1001403b63440ab49b496a62f94bf10a94dc2d93e3820029ac2c403dcf967cf3a14efe028ee976
|
|
7
|
+
data.tar.gz: 0245a0642542dd33d33764528d43234921bc78031d1ed06748602a0fd671c28931de47b9aa0e98d81211312bdd7949b06fcdf4f2c355d620a20d6acc9a3f461a
|
data/.yardopts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# vim: ft=sh
|
|
2
2
|
|
|
3
|
-
lib/**/*.rb
|
|
4
|
-
--no-progress
|
|
5
|
-
--markup-provider 'redcarpet'
|
|
6
|
-
--markup 'markdown'
|
|
7
|
-
--charset 'utf-8'
|
|
8
|
-
--protected --private --embed-mixins
|
|
9
|
-
--tag type:'type' --hide-tag 'type'
|
|
10
|
-
--readme README.md
|
|
3
|
+
lib/**/*.rb \
|
|
4
|
+
--no-progress \
|
|
5
|
+
--markup-provider 'redcarpet' \
|
|
6
|
+
--markup 'markdown' \
|
|
7
|
+
--charset 'utf-8' \
|
|
8
|
+
--protected --private --embed-mixins \
|
|
9
|
+
--tag type:'type' --hide-tag 'type' \
|
|
10
|
+
--readme README.md \
|
|
11
11
|
--exclude 'lib/kamaze/project/tasks/.*' \
|
|
12
12
|
--exclude 'lib/kamaze/project/boot/.*' \
|
|
13
|
-
--exclude '_flymake\\.rb$'
|
|
13
|
+
--exclude '_flymake\\.rb$' \
|
|
14
14
|
--exclude '/\\.#'
|
|
15
15
|
|
|
16
16
|
# Local Variables:
|
data/lib/kamaze-project.rb
CHANGED
|
@@ -1,38 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright (C) 2017-
|
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
|
8
8
|
|
|
9
9
|
$LOAD_PATH.unshift(__dir__)
|
|
10
|
-
|
|
11
|
-
lock = Dir.chdir("#{__dir__}/..") do
|
|
12
|
-
[['gems.rb', 'gems.locked'], ['Gemfile', 'Gemfile.lock']]
|
|
13
|
-
.map { |m| Dir.glob(m).size >= 2 }
|
|
14
|
-
.include?(true)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
if lock
|
|
18
|
-
require 'rubygems'
|
|
19
|
-
require 'bundler/setup'
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
if lock and :development == (ENV['PROJECT_MODE'] || 'development').to_sym
|
|
23
|
-
bootsnap_config = {
|
|
24
|
-
cache_dir: "#{__dir__}/../cache",
|
|
25
|
-
development_mode: true,
|
|
26
|
-
load_path_cache: true,
|
|
27
|
-
autoload_paths_cache: false,
|
|
28
|
-
disable_trace: true,
|
|
29
|
-
compile_cache_iseq: true,
|
|
30
|
-
compile_cache_yaml: true,
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
require 'yaml'
|
|
34
|
-
unless YAML.safe_load(ENV['BOOTSNAP_DISABLE'].to_s)
|
|
35
|
-
require 'bootsnap'
|
|
36
|
-
Bootsnap.setup(bootsnap_config)
|
|
37
|
-
end
|
|
38
|
-
end
|
data/lib/kamaze/project.rb
CHANGED
|
@@ -1,49 +1,38 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright (C) 2017-
|
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
# Base module (almost a namespace)
|
|
9
|
+
# Kamaze namesapace
|
|
12
10
|
module Kamaze
|
|
13
|
-
# rubocop:disable Style/Documentation
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
# @return [Object]
|
|
29
|
-
def version
|
|
30
|
-
subject.const_get('VERSION')
|
|
11
|
+
class Project # rubocop:disable Style/Documentation
|
|
12
|
+
# @formatter:off
|
|
13
|
+
{
|
|
14
|
+
YAML: 'yaml',
|
|
15
|
+
Pathname: 'pathname',
|
|
16
|
+
Autoload: "#{__dir__}/project/autoload"
|
|
17
|
+
}.each { |s, fp| autoload(s, fp) }
|
|
18
|
+
# @formatter:on
|
|
19
|
+
|
|
20
|
+
Autoload.new.call("#{__dir__}/project")
|
|
21
|
+
|
|
22
|
+
include(Bundled).tap do
|
|
23
|
+
self.base_path = self.base_path.join('..')
|
|
24
|
+
require 'bundler/setup' if bundled?
|
|
25
|
+
require_relative './project/core_ext/pp' if development?
|
|
31
26
|
end
|
|
32
27
|
end
|
|
33
28
|
|
|
34
|
-
# rubocop:enable Style/Documentation
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# Base namespace
|
|
38
|
-
module Kamaze
|
|
39
29
|
class << self
|
|
40
|
-
include Project::Concern::Helper
|
|
41
|
-
|
|
42
30
|
# Get an instance of project
|
|
43
31
|
#
|
|
32
|
+
# @deprecated
|
|
44
33
|
# @return [Kamaze::Project]
|
|
45
34
|
def project(&block)
|
|
46
|
-
|
|
35
|
+
Project.instance(&block)
|
|
47
36
|
end
|
|
48
37
|
end
|
|
49
38
|
end
|
|
@@ -65,6 +54,23 @@ class Kamaze::Project
|
|
|
65
54
|
include Concern::Tasks
|
|
66
55
|
include Concern::Tools
|
|
67
56
|
|
|
57
|
+
class << self
|
|
58
|
+
include Concern::Helper
|
|
59
|
+
|
|
60
|
+
# Get an instance of project
|
|
61
|
+
#
|
|
62
|
+
# @return [Kamaze::Project]
|
|
63
|
+
def instance(&block)
|
|
64
|
+
helper.get(:project).setup(&block)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# @see Kamaze::Project::Version
|
|
69
|
+
# @return [Object]
|
|
70
|
+
def version
|
|
71
|
+
subject.const_get('VERSION')
|
|
72
|
+
end
|
|
73
|
+
|
|
68
74
|
# Project name
|
|
69
75
|
#
|
|
70
76
|
# @return [Symbol]
|
|
@@ -121,7 +127,7 @@ class Kamaze::Project
|
|
|
121
127
|
|
|
122
128
|
# @return [Pathname]
|
|
123
129
|
def pwd
|
|
124
|
-
|
|
130
|
+
Pathname.new(Dir.pwd)
|
|
125
131
|
end
|
|
126
132
|
|
|
127
133
|
protected
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
|
4
|
+
# License GPLv3+: GNU GPL version 3 or later
|
|
5
|
+
# <http://www.gnu.org/licenses/gpl.html>.
|
|
6
|
+
# This is free software: you are free to change and redistribute it.
|
|
7
|
+
# There is NO WARRANTY, to the extent permitted by law.
|
|
8
|
+
|
|
9
|
+
# Autoload class
|
|
10
|
+
class Kamaze::Project::Autoload < ::Hash
|
|
11
|
+
def initialize # rubocop:disable Metrics/MethodLength
|
|
12
|
+
# @formatter:off
|
|
13
|
+
{
|
|
14
|
+
VERSION: 'version',
|
|
15
|
+
Bundled: 'bundled',
|
|
16
|
+
Concern: 'concern',
|
|
17
|
+
Config: 'config',
|
|
18
|
+
Debug: 'debug',
|
|
19
|
+
DSL: 'dsl',
|
|
20
|
+
Helper: 'helper',
|
|
21
|
+
Inflector: 'inflector',
|
|
22
|
+
Observable: 'observable',
|
|
23
|
+
Observer: 'observer',
|
|
24
|
+
Struct: 'struct',
|
|
25
|
+
Tools: 'tools',
|
|
26
|
+
ToolsProvider: 'tools_provider',
|
|
27
|
+
}.each { |k, v| self[k] = v }
|
|
28
|
+
# @formatter:on
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def call(path)
|
|
32
|
+
self.tap do
|
|
33
|
+
self.each do |s, fp|
|
|
34
|
+
Kamaze::Project.__send__(:autoload, s, "#{path}/#{fp}")
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright (C) 2017-
|
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
require_relative "../core_ext/#{requirement}"
|
|
9
|
+
# @formatter:off
|
|
10
|
+
[
|
|
11
|
+
ENV['PROJECT_MODE'] =~ /^dev.*/ ? :pp : nil,
|
|
12
|
+
:object,
|
|
13
|
+
].compact.each do |requirement|
|
|
14
|
+
require "#{__dir__}/../core_ext/#{requirement}"
|
|
16
15
|
end
|
|
16
|
+
# @formatter:on
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright (C) 2017-
|
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
|
8
8
|
|
|
9
|
+
autoload(:YAML, 'yaml')
|
|
10
|
+
autoload(:Gem, 'rubygems')
|
|
11
|
+
|
|
9
12
|
patchable = lambda do
|
|
10
|
-
|
|
11
|
-
require 'listen'
|
|
12
|
-
return YAML.safe_load(ENV['SILENCE_DUPLICATE_DIRECTORY_ERRORS'].to_s)
|
|
13
|
-
end
|
|
13
|
+
return false unless Gem::Specification.find_all_by_name('listen').any?
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
YAML.safe_load(ENV['SILENCE_DUPLICATE_DIRECTORY_ERRORS'].to_s)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
# rubocop:disable all
|
|
@@ -22,14 +22,12 @@ end
|
|
|
22
22
|
# Listen >=2.8
|
|
23
23
|
# patch to silence duplicate directory errors. USE AT YOUR OWN RISK
|
|
24
24
|
if patchable.call
|
|
25
|
+
require 'listen'
|
|
26
|
+
|
|
25
27
|
if Gem::Version.new(Listen::VERSION) >= Gem::Version.new('2.8.0')
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def _fail(_, _)
|
|
30
|
-
fail Error, "Don't watch locally-symlinked directory twice"
|
|
31
|
-
end
|
|
32
|
-
end
|
|
28
|
+
class Listen::Record::SymlinkDetector
|
|
29
|
+
def _fail(_, _)
|
|
30
|
+
fail Error, "Don't watch locally-symlinked directory twice"
|
|
33
31
|
end
|
|
34
32
|
end
|
|
35
33
|
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
|
4
|
+
# License GPLv3+: GNU GPL version 3 or later
|
|
5
|
+
# <http://www.gnu.org/licenses/gpl.html>.
|
|
6
|
+
# This is free software: you are free to change and redistribute it.
|
|
7
|
+
# There is NO WARRANTY, to the extent permitted by law.
|
|
8
|
+
|
|
9
|
+
# Copyright (C) 2019-2020 Dimitri Arrigoni <dimitri@arrigoni.me>
|
|
10
|
+
# License GPLv3+: GNU GPL version 3 or later
|
|
11
|
+
# <http://www.gnu.org/licenses/gpl.html>.
|
|
12
|
+
# This is free software: you are free to change and redistribute it.
|
|
13
|
+
# There is NO WARRANTY, to the extent permitted by law.
|
|
14
|
+
|
|
15
|
+
require_relative('../project')
|
|
16
|
+
|
|
17
|
+
# Bundled behavior.
|
|
18
|
+
#
|
|
19
|
+
# Allow to detect bundled execution due to ``gems.rb`` and ``gems.locked``
|
|
20
|
+
# files presence, and``development`` execution (``gemspec.tpl`` file presence).
|
|
21
|
+
module Kamaze::Project::Bundled
|
|
22
|
+
autoload(:Pathname, 'pathname')
|
|
23
|
+
|
|
24
|
+
class << self
|
|
25
|
+
def included(base)
|
|
26
|
+
base.extend(ClassMethods)
|
|
27
|
+
|
|
28
|
+
Pathname.new(caller_locations.first.path).dirname.tap do |caller_path|
|
|
29
|
+
(base.__send__(:base_path) || caller_path).tap do |basepath|
|
|
30
|
+
base.__send__(:base_path=, Pathname(basepath).join('..'))
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Class methods
|
|
37
|
+
module ClassMethods
|
|
38
|
+
protected
|
|
39
|
+
|
|
40
|
+
# Set `base_path` from given `path`.
|
|
41
|
+
#
|
|
42
|
+
# @param [String] path
|
|
43
|
+
# @return [Pathname]
|
|
44
|
+
def base_path=(path)
|
|
45
|
+
@base_path = Pathname.new(path).realpath
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# @return [Pathname]
|
|
49
|
+
def base_path
|
|
50
|
+
@base_path
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Denote current class is used in a bundled context.
|
|
54
|
+
#
|
|
55
|
+
# @return [Boolean]
|
|
56
|
+
def bundled?
|
|
57
|
+
# @formatter:off
|
|
58
|
+
[%w[gems.rb gems.locked], %w[Gemfile Gemfile.lock]].map do |m|
|
|
59
|
+
Dir.chdir(base_path) do
|
|
60
|
+
m.map { |f| Pathname(f).file? }.uniq
|
|
61
|
+
end
|
|
62
|
+
end.include?([true])
|
|
63
|
+
# @formatter:on
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Denote current class is used in development context.
|
|
67
|
+
#
|
|
68
|
+
# @return [Boolean]
|
|
69
|
+
def development?
|
|
70
|
+
# @formatter:off
|
|
71
|
+
bundled? and [['gemspec.tpl']].map do |m|
|
|
72
|
+
Dir.chdir(base_path) do
|
|
73
|
+
m.map { |f| Pathname(f).file? }
|
|
74
|
+
end
|
|
75
|
+
end.include?([true])
|
|
76
|
+
# @formatter:on
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -1,13 +1,28 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright (C) 2017-
|
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
|
7
7
|
# There is NO WARRANTY, to the extent permitted by law.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
require_relative '../project'
|
|
10
10
|
|
|
11
11
|
# Namespace for ``Concern``
|
|
12
12
|
module Kamaze::Project::Concern
|
|
13
|
+
# @formatter:off
|
|
14
|
+
{
|
|
15
|
+
Cli: 'cli',
|
|
16
|
+
Env: 'env',
|
|
17
|
+
Helper: 'helper',
|
|
18
|
+
Mode: 'mode',
|
|
19
|
+
Observable: 'observable',
|
|
20
|
+
Sh: 'sh',
|
|
21
|
+
Tasks: 'tasks',
|
|
22
|
+
}.each { |s, fp| autoload(s, "#{__dir__}/concern/#{fp}") }
|
|
23
|
+
# @formatter:on
|
|
24
|
+
|
|
25
|
+
[nil, :env, :mode, :helper, :tasks, :tools].each do |req|
|
|
26
|
+
require_relative "./concern/#{req}".gsub(%r{/$}, '')
|
|
27
|
+
end
|
|
13
28
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright (C) 2017-
|
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
|
@@ -12,6 +12,8 @@ require_relative '../concern'
|
|
|
12
12
|
#
|
|
13
13
|
# This module provides base methods focused on ``retcode``.
|
|
14
14
|
module Kamaze::Project::Concern::Cli
|
|
15
|
+
autoload(:WithExitOnFailure, "#{__dir__}/cli/with_exit_on_failure")
|
|
16
|
+
|
|
15
17
|
# @!attribute [r] retcode
|
|
16
18
|
# @return [Fixnum] retcode
|
|
17
19
|
|
|
@@ -36,6 +38,7 @@ module Kamaze::Project::Concern::Cli
|
|
|
36
38
|
#
|
|
37
39
|
# @return [Boolean]
|
|
38
40
|
def success?
|
|
41
|
+
# noinspection RubyResolve
|
|
39
42
|
Errno::NOERROR::Errno == retcode
|
|
40
43
|
end
|
|
41
44
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# Copyright (C) 2017-
|
|
3
|
+
# Copyright (C) 2017-2021 Dimitri Arrigoni <dimitri@arrigoni.me>
|
|
4
4
|
# License GPLv3+: GNU GPL version 3 or later
|
|
5
5
|
# <http://www.gnu.org/licenses/gpl.html>.
|
|
6
6
|
# This is free software: you are free to change and redistribute it.
|
|
@@ -27,10 +27,6 @@ module Kamaze::Project::Concern::Cli::WithExitOnFailure
|
|
|
27
27
|
# @raise [SystemExit]
|
|
28
28
|
# @return [Object]
|
|
29
29
|
def with_exit_on_failure
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
exit(retcode) if failure?
|
|
33
|
-
|
|
34
|
-
result
|
|
30
|
+
yield(self).tap { exit(retcode) if failure? }
|
|
35
31
|
end
|
|
36
32
|
end
|