makit 0.0.111 → 0.0.112
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/README.md +41 -41
- data/exe/makit +5 -5
- data/lib/makit/apache.rb +28 -28
- data/lib/makit/cli/build_commands.rb +500 -500
- data/lib/makit/cli/generators/base_generator.rb +74 -74
- data/lib/makit/cli/generators/dotnet_generator.rb +50 -50
- data/lib/makit/cli/generators/generator_factory.rb +49 -49
- data/lib/makit/cli/generators/node_generator.rb +50 -50
- data/lib/makit/cli/generators/ruby_generator.rb +77 -77
- data/lib/makit/cli/generators/rust_generator.rb +50 -50
- data/lib/makit/cli/generators/templates/dotnet_templates.rb +167 -167
- data/lib/makit/cli/generators/templates/node_templates.rb +161 -161
- data/lib/makit/cli/generators/templates/ruby/gemfile.rb +26 -26
- data/lib/makit/cli/generators/templates/ruby/gemspec.rb +40 -40
- data/lib/makit/cli/generators/templates/ruby/main_lib.rb +33 -33
- data/lib/makit/cli/generators/templates/ruby/rakefile.rb +35 -35
- data/lib/makit/cli/generators/templates/ruby/readme.rb +63 -63
- data/lib/makit/cli/generators/templates/ruby/test.rb +39 -39
- data/lib/makit/cli/generators/templates/ruby/test_helper.rb +29 -29
- data/lib/makit/cli/generators/templates/ruby/version.rb +29 -29
- data/lib/makit/cli/generators/templates/rust_templates.rb +128 -128
- data/lib/makit/cli/main.rb +62 -62
- data/lib/makit/cli/project_commands.rb +868 -868
- data/lib/makit/cli/repository_commands.rb +661 -661
- data/lib/makit/cli/utility_commands.rb +521 -521
- data/lib/makit/commands/factory.rb +359 -359
- data/lib/makit/commands/middleware/base.rb +73 -73
- data/lib/makit/commands/middleware/cache.rb +248 -248
- data/lib/makit/commands/middleware/command_logger.rb +320 -323
- data/lib/makit/commands/middleware/unified_logger.rb +243 -243
- data/lib/makit/commands/middleware/validator.rb +269 -269
- data/lib/makit/commands/request.rb +254 -254
- data/lib/makit/commands/result.rb +323 -323
- data/lib/makit/commands/runner.rb +337 -317
- data/lib/makit/commands/strategies/base.rb +160 -160
- data/lib/makit/commands/strategies/synchronous.rb +134 -134
- data/lib/makit/commands.rb +51 -42
- data/lib/makit/configuration/gitlab_helper.rb +60 -60
- data/lib/makit/configuration/project.rb +127 -127
- data/lib/makit/configuration/rakefile_helper.rb +43 -43
- data/lib/makit/configuration/step.rb +34 -34
- data/lib/makit/configuration.rb +14 -14
- data/lib/makit/content/default_gitignore.rb +7 -7
- data/lib/makit/content/default_rakefile.rb +13 -13
- data/lib/makit/content/gem_rakefile.rb +16 -16
- data/lib/makit/context.rb +1 -1
- data/lib/makit/data.rb +49 -49
- data/lib/makit/directories.rb +141 -141
- data/lib/makit/directory.rb +262 -262
- data/lib/makit/docs/files.rb +89 -89
- data/lib/makit/docs/rake.rb +102 -102
- data/lib/makit/dotnet/project.rb +153 -153
- data/lib/makit/dotnet/solution.rb +38 -38
- data/lib/makit/dotnet/solution_classlib.rb +239 -239
- data/lib/makit/dotnet/solution_console.rb +264 -264
- data/lib/makit/dotnet/solution_maui.rb +354 -354
- data/lib/makit/dotnet/solution_wasm.rb +275 -275
- data/lib/makit/dotnet/solution_wpf.rb +304 -304
- data/lib/makit/dotnet.rb +102 -102
- data/lib/makit/email.rb +90 -90
- data/lib/makit/environment.rb +142 -142
- data/lib/makit/examples/runner.rb +370 -370
- data/lib/makit/exceptions.rb +45 -45
- data/lib/makit/fileinfo.rb +24 -24
- data/lib/makit/files.rb +43 -43
- data/lib/makit/gems.rb +40 -40
- data/lib/makit/git/cli.rb +54 -54
- data/lib/makit/git/repository.rb +90 -90
- data/lib/makit/git.rb +98 -98
- data/lib/makit/gitlab_runner.rb +59 -59
- data/lib/makit/humanize.rb +137 -137
- data/lib/makit/indexer.rb +47 -47
- data/lib/makit/logging/configuration.rb +305 -305
- data/lib/makit/logging/formatters/base.rb +39 -39
- data/lib/makit/logging/formatters/console_formatter.rb +140 -127
- data/lib/makit/logging/formatters/json_formatter.rb +65 -65
- data/lib/makit/logging/formatters/plain_text_formatter.rb +71 -71
- data/lib/makit/logging/formatters/text_formatter.rb +64 -64
- data/lib/makit/logging/log_request.rb +115 -115
- data/lib/makit/logging/logger.rb +163 -159
- data/lib/makit/logging/sinks/console.rb +72 -72
- data/lib/makit/logging/sinks/file_sink.rb +92 -92
- data/lib/makit/logging/sinks/unified_file_sink.rb +303 -303
- data/lib/makit/logging.rb +530 -521
- data/lib/makit/markdown.rb +75 -75
- data/lib/makit/mp/basic_object_mp.rb +17 -17
- data/lib/makit/mp/command_mp.rb +13 -13
- data/lib/makit/mp/command_request.mp.rb +17 -17
- data/lib/makit/mp/project_mp.rb +199 -199
- data/lib/makit/mp/string_mp.rb +193 -348
- data/lib/makit/nuget.rb +74 -74
- data/lib/makit/port.rb +32 -32
- data/lib/makit/process.rb +163 -163
- data/lib/makit/protoc.rb +107 -107
- data/lib/makit/rake/cli.rb +196 -196
- data/lib/makit/rake.rb +25 -25
- data/lib/makit/ruby/cli.rb +185 -185
- data/lib/makit/ruby.rb +25 -25
- data/lib/makit/secrets.rb +51 -51
- data/lib/makit/serializer.rb +130 -117
- data/lib/makit/services/builder.rb +186 -186
- data/lib/makit/services/error_handler.rb +226 -226
- data/lib/makit/services/repository_manager.rb +229 -229
- data/lib/makit/services/validator.rb +112 -112
- data/lib/makit/setup/classlib.rb +53 -53
- data/lib/makit/setup/gem.rb +30 -17
- data/lib/makit/setup/runner.rb +45 -40
- data/lib/makit/setup.rb +5 -0
- data/lib/makit/show.rb +110 -110
- data/lib/makit/storage.rb +126 -126
- data/lib/makit/symbols.rb +170 -161
- data/lib/makit/task_info.rb +128 -128
- data/lib/makit/tasks/at_exit.rb +13 -13
- data/lib/makit/tasks/build.rb +19 -18
- data/lib/makit/tasks/clean.rb +11 -11
- data/lib/makit/tasks/hook_manager.rb +393 -239
- data/lib/makit/tasks/init.rb +47 -47
- data/lib/makit/tasks/integrate.rb +17 -15
- data/lib/makit/tasks/pull_incoming.rb +11 -12
- data/lib/makit/tasks/setup.rb +6 -6
- data/lib/makit/tasks/sync.rb +12 -11
- data/lib/makit/tasks/tag.rb +15 -0
- data/lib/makit/tasks/task_monkey_patch.rb +79 -79
- data/lib/makit/tasks.rb +10 -0
- data/lib/makit/test_cache.rb +239 -239
- data/lib/makit/tree.rb +37 -37
- data/lib/makit/v1/makit.v1_pb.rb +34 -34
- data/lib/makit/v1/makit.v1_services_pb.rb +27 -27
- data/lib/makit/version.rb +5 -5
- data/lib/makit/version_util.rb +21 -0
- data/lib/makit/wix.rb +95 -95
- data/lib/makit/yaml.rb +29 -29
- data/lib/makit/zip.rb +17 -17
- data/lib/makit copy.rb +44 -0
- data/lib/makit.rb +40 -8
- metadata +50 -7
- data/lib/makit/command_runner.rb +0 -463
- data/lib/makit/commands/compatibility.rb +0 -365
- data/lib/makit/task_hooks.rb +0 -125
data/lib/makit/dotnet.rb
CHANGED
@@ -1,102 +1,102 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "dotnet/solution"
|
4
|
-
require_relative "dotnet/project"
|
5
|
-
require_relative "dotnet/cli"
|
6
|
-
|
7
|
-
module Makit
|
8
|
-
# Main interface for .NET operations, providing a unified API for project management,
|
9
|
-
# solution handling, and CLI operations.
|
10
|
-
#
|
11
|
-
# This class serves as a backward-compatible facade that delegates to the organized
|
12
|
-
# DotNet::Project, DotNet::Solution, and DotNet::CLI classes while maintaining
|
13
|
-
# the existing public API.
|
14
|
-
#
|
15
|
-
# @example Basic usage
|
16
|
-
# Makit::DotNet.new_project("console", "MyApp", "src")
|
17
|
-
# Makit::DotNet.build("src/MyApp.csproj")
|
18
|
-
#
|
19
|
-
class DotNet
|
20
|
-
# Backward compatibility methods - delegate to appropriate classes
|
21
|
-
# These methods maintain the existing API while using the new organized structure
|
22
|
-
|
23
|
-
# Project-related methods
|
24
|
-
def self.installed?
|
25
|
-
Project.installed?
|
26
|
-
end
|
27
|
-
|
28
|
-
# Backward compatibility - deprecated method name
|
29
|
-
def self.is_installed?
|
30
|
-
installed?
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.version
|
34
|
-
Project.version
|
35
|
-
end
|
36
|
-
|
37
|
-
def self.project_short_name(project_path)
|
38
|
-
Project.project_short_name(project_path)
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.new_project(template, name, output, args = "")
|
42
|
-
Project.new_project(template, name, output, args)
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.set_project_target_framework(project_hint, target_framework)
|
46
|
-
Project.set_project_target_framework(project_hint, target_framework)
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.find_project(project_hint)
|
50
|
-
Project.find_project(project_hint)
|
51
|
-
end
|
52
|
-
|
53
|
-
def self.add_package(project_path, package_name)
|
54
|
-
Project.add_package(project_path, package_name)
|
55
|
-
end
|
56
|
-
|
57
|
-
def self.add_packages(project_path, packages)
|
58
|
-
Project.add_packages(project_path, packages)
|
59
|
-
end
|
60
|
-
|
61
|
-
def self.add_reference(project_path, reference_path)
|
62
|
-
Project.add_reference(project_path, reference_path)
|
63
|
-
end
|
64
|
-
|
65
|
-
def self.add_references(project_path, references)
|
66
|
-
Project.add_references(project_path, references)
|
67
|
-
end
|
68
|
-
|
69
|
-
def self.build(project_path, configuration = "Release", output = "artifacts")
|
70
|
-
Project.build(project_path, configuration, output)
|
71
|
-
end
|
72
|
-
|
73
|
-
def self.publish(project_path, configuration = "Release", output = "artifacts")
|
74
|
-
Project.publish(project_path, configuration, output)
|
75
|
-
end
|
76
|
-
|
77
|
-
def self.test(project_path, configuration = "Release", output = "artifacts")
|
78
|
-
Project.test(project_path, configuration, output)
|
79
|
-
end
|
80
|
-
|
81
|
-
def self.format_project(project_path)
|
82
|
-
Project.format_project(project_path)
|
83
|
-
end
|
84
|
-
|
85
|
-
def self.upgrade_project(project_path)
|
86
|
-
Project.upgrade_project(project_path)
|
87
|
-
end
|
88
|
-
|
89
|
-
# CLI-related methods
|
90
|
-
def self.new_solution(name)
|
91
|
-
CLI.new_solution(name)
|
92
|
-
end
|
93
|
-
|
94
|
-
def self.sln_add_projects(sln_name)
|
95
|
-
CLI.sln_add_projects(sln_name)
|
96
|
-
end
|
97
|
-
|
98
|
-
def self.generate_docs
|
99
|
-
CLI.generate_docs
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "dotnet/solution"
|
4
|
+
require_relative "dotnet/project"
|
5
|
+
require_relative "dotnet/cli"
|
6
|
+
|
7
|
+
module Makit
|
8
|
+
# Main interface for .NET operations, providing a unified API for project management,
|
9
|
+
# solution handling, and CLI operations.
|
10
|
+
#
|
11
|
+
# This class serves as a backward-compatible facade that delegates to the organized
|
12
|
+
# DotNet::Project, DotNet::Solution, and DotNet::CLI classes while maintaining
|
13
|
+
# the existing public API.
|
14
|
+
#
|
15
|
+
# @example Basic usage
|
16
|
+
# Makit::DotNet.new_project("console", "MyApp", "src")
|
17
|
+
# Makit::DotNet.build("src/MyApp.csproj")
|
18
|
+
#
|
19
|
+
class DotNet
|
20
|
+
# Backward compatibility methods - delegate to appropriate classes
|
21
|
+
# These methods maintain the existing API while using the new organized structure
|
22
|
+
|
23
|
+
# Project-related methods
|
24
|
+
def self.installed?
|
25
|
+
Project.installed?
|
26
|
+
end
|
27
|
+
|
28
|
+
# Backward compatibility - deprecated method name
|
29
|
+
def self.is_installed?
|
30
|
+
installed?
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.version
|
34
|
+
Project.version
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.project_short_name(project_path)
|
38
|
+
Project.project_short_name(project_path)
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.new_project(template, name, output, args = "")
|
42
|
+
Project.new_project(template, name, output, args)
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.set_project_target_framework(project_hint, target_framework)
|
46
|
+
Project.set_project_target_framework(project_hint, target_framework)
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.find_project(project_hint)
|
50
|
+
Project.find_project(project_hint)
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.add_package(project_path, package_name)
|
54
|
+
Project.add_package(project_path, package_name)
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.add_packages(project_path, packages)
|
58
|
+
Project.add_packages(project_path, packages)
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.add_reference(project_path, reference_path)
|
62
|
+
Project.add_reference(project_path, reference_path)
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.add_references(project_path, references)
|
66
|
+
Project.add_references(project_path, references)
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.build(project_path, configuration = "Release", output = "artifacts")
|
70
|
+
Project.build(project_path, configuration, output)
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.publish(project_path, configuration = "Release", output = "artifacts")
|
74
|
+
Project.publish(project_path, configuration, output)
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.test(project_path, configuration = "Release", output = "artifacts")
|
78
|
+
Project.test(project_path, configuration, output)
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.format_project(project_path)
|
82
|
+
Project.format_project(project_path)
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.upgrade_project(project_path)
|
86
|
+
Project.upgrade_project(project_path)
|
87
|
+
end
|
88
|
+
|
89
|
+
# CLI-related methods
|
90
|
+
def self.new_solution(name)
|
91
|
+
CLI.new_solution(name)
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.sln_add_projects(sln_name)
|
95
|
+
CLI.sln_add_projects(sln_name)
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.generate_docs
|
99
|
+
CLI.generate_docs
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
data/lib/makit/email.rb
CHANGED
@@ -1,90 +1,90 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Makit
|
4
|
-
# Provides email functionality for sending notifications and reports.
|
5
|
-
#
|
6
|
-
# This class handles SMTP configuration and email delivery, with built-in support
|
7
|
-
# for Gmail SMTP and graceful handling when the mail gem is not available.
|
8
|
-
#
|
9
|
-
# @example Basic usage
|
10
|
-
# email = Makit::Email.new
|
11
|
-
# email.configure_gmail_defaults
|
12
|
-
# email.send(subject: "Build Complete", body: "Your build finished successfully")
|
13
|
-
#
|
14
|
-
class Email
|
15
|
-
begin
|
16
|
-
require "mail"
|
17
|
-
MAIL_AVAILABLE = true
|
18
|
-
rescue LoadError
|
19
|
-
MAIL_AVAILABLE = false
|
20
|
-
end
|
21
|
-
|
22
|
-
def configure_gmail_defaults
|
23
|
-
unless MAIL_AVAILABLE
|
24
|
-
raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
|
25
|
-
end
|
26
|
-
|
27
|
-
Mail.defaults do
|
28
|
-
delivery_method :smtp, {
|
29
|
-
address: "smtp.gmail.com",
|
30
|
-
port: 587,
|
31
|
-
domain: "gmail.com",
|
32
|
-
user_name: ENV.fetch("SMTP_USERNAME", nil),
|
33
|
-
password: ENV.fetch("SMTP_PASSWORD", nil),
|
34
|
-
authentication: "plain",
|
35
|
-
enable_starttls_auto: true,
|
36
|
-
}
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def send_test_email(subject:, body:, to: ENV.fetch("MAKIT_EMAIL_RECIPIENT", nil))
|
41
|
-
unless MAIL_AVAILABLE
|
42
|
-
raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
|
43
|
-
end
|
44
|
-
|
45
|
-
raise ArgumentError, "Recipient email not set. Please set MAKIT_EMAIL_RECIPIENT environment variable" unless to
|
46
|
-
|
47
|
-
mail = Mail.new do
|
48
|
-
from ENV.fetch("SMTP_USERNAME", nil)
|
49
|
-
to to
|
50
|
-
subject subject
|
51
|
-
body body
|
52
|
-
end
|
53
|
-
|
54
|
-
begin
|
55
|
-
mail.deliver!
|
56
|
-
true
|
57
|
-
rescue StandardError => e
|
58
|
-
puts "Failed to send email: #{e.message}"
|
59
|
-
false
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def send(subject:, body:)
|
64
|
-
send_to(to: ENV.fetch("MAKIT_EMAIL_RECIPIENT", nil), subject: subject, body: body)
|
65
|
-
end
|
66
|
-
|
67
|
-
def send_to(to:, subject:, body:)
|
68
|
-
unless MAIL_AVAILABLE
|
69
|
-
raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
|
70
|
-
end
|
71
|
-
|
72
|
-
raise ArgumentError, "Recipient email not set" unless to
|
73
|
-
|
74
|
-
mail = Mail.new do
|
75
|
-
from ENV.fetch("SMTP_USERNAME", nil)
|
76
|
-
to to
|
77
|
-
subject subject
|
78
|
-
body body
|
79
|
-
end
|
80
|
-
|
81
|
-
begin
|
82
|
-
mail.deliver!
|
83
|
-
true
|
84
|
-
rescue StandardError => e
|
85
|
-
puts "Failed to send email: #{e.message}"
|
86
|
-
false
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Makit
|
4
|
+
# Provides email functionality for sending notifications and reports.
|
5
|
+
#
|
6
|
+
# This class handles SMTP configuration and email delivery, with built-in support
|
7
|
+
# for Gmail SMTP and graceful handling when the mail gem is not available.
|
8
|
+
#
|
9
|
+
# @example Basic usage
|
10
|
+
# email = Makit::Email.new
|
11
|
+
# email.configure_gmail_defaults
|
12
|
+
# email.send(subject: "Build Complete", body: "Your build finished successfully")
|
13
|
+
#
|
14
|
+
class Email
|
15
|
+
begin
|
16
|
+
require "mail"
|
17
|
+
MAIL_AVAILABLE = true
|
18
|
+
rescue LoadError
|
19
|
+
MAIL_AVAILABLE = false
|
20
|
+
end
|
21
|
+
|
22
|
+
def configure_gmail_defaults
|
23
|
+
unless MAIL_AVAILABLE
|
24
|
+
raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
|
25
|
+
end
|
26
|
+
|
27
|
+
Mail.defaults do
|
28
|
+
delivery_method :smtp, {
|
29
|
+
address: "smtp.gmail.com",
|
30
|
+
port: 587,
|
31
|
+
domain: "gmail.com",
|
32
|
+
user_name: ENV.fetch("SMTP_USERNAME", nil),
|
33
|
+
password: ENV.fetch("SMTP_PASSWORD", nil),
|
34
|
+
authentication: "plain",
|
35
|
+
enable_starttls_auto: true,
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def send_test_email(subject:, body:, to: ENV.fetch("MAKIT_EMAIL_RECIPIENT", nil))
|
41
|
+
unless MAIL_AVAILABLE
|
42
|
+
raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
|
43
|
+
end
|
44
|
+
|
45
|
+
raise ArgumentError, "Recipient email not set. Please set MAKIT_EMAIL_RECIPIENT environment variable" unless to
|
46
|
+
|
47
|
+
mail = Mail.new do
|
48
|
+
from ENV.fetch("SMTP_USERNAME", nil)
|
49
|
+
to to
|
50
|
+
subject subject
|
51
|
+
body body
|
52
|
+
end
|
53
|
+
|
54
|
+
begin
|
55
|
+
mail.deliver!
|
56
|
+
true
|
57
|
+
rescue StandardError => e
|
58
|
+
puts "Failed to send email: #{e.message}"
|
59
|
+
false
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def send(subject:, body:)
|
64
|
+
send_to(to: ENV.fetch("MAKIT_EMAIL_RECIPIENT", nil), subject: subject, body: body)
|
65
|
+
end
|
66
|
+
|
67
|
+
def send_to(to:, subject:, body:)
|
68
|
+
unless MAIL_AVAILABLE
|
69
|
+
raise LoadError, "Mail gem is not available. Add 'mail' to your Gemfile to use email functionality."
|
70
|
+
end
|
71
|
+
|
72
|
+
raise ArgumentError, "Recipient email not set" unless to
|
73
|
+
|
74
|
+
mail = Mail.new do
|
75
|
+
from ENV.fetch("SMTP_USERNAME", nil)
|
76
|
+
to to
|
77
|
+
subject subject
|
78
|
+
body body
|
79
|
+
end
|
80
|
+
|
81
|
+
begin
|
82
|
+
mail.deliver!
|
83
|
+
true
|
84
|
+
rescue StandardError => e
|
85
|
+
puts "Failed to send email: #{e.message}"
|
86
|
+
false
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
data/lib/makit/environment.rb
CHANGED
@@ -1,142 +1,142 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "directory"
|
4
|
-
# This module provides classes for the Makit gem.
|
5
|
-
module Makit
|
6
|
-
# This class provide methods for working with the system Environment.
|
7
|
-
#
|
8
|
-
class Environment
|
9
|
-
def self.current_user
|
10
|
-
if Makit::Environment.is_windows?
|
11
|
-
end
|
12
|
-
`whoami`
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.which(name)
|
16
|
-
return name if File.exist?(name)
|
17
|
-
|
18
|
-
["", ".exe", ".bat", ".cmd"].each do |ext|
|
19
|
-
aname = name + ext
|
20
|
-
return aname if File.exist?(aname)
|
21
|
-
|
22
|
-
ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
|
23
|
-
apath = "#{path.gsub("\\", "/")}/#{aname}".gsub("//", "/")
|
24
|
-
return apath if File.exist?(apath)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
""
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.constants_hash
|
31
|
-
constants = {}
|
32
|
-
# collect all constants that are all uppercase
|
33
|
-
Object.constants.each do |c|
|
34
|
-
# puts "#{c} = #{Object.const_get(c)}" }
|
35
|
-
constants[c] = Object.const_get(c) if c == c.upcase
|
36
|
-
end
|
37
|
-
# Object.constants.each { |c| constants[c] = Object.const_get(c)}# puts "#{c} = #{Object.const_get(c)}" }
|
38
|
-
constants
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.rake_file_name
|
42
|
-
caller_locations.each do |location|
|
43
|
-
return location.absolute_path if location.absolute_path&.end_with?("Rakefile")
|
44
|
-
end
|
45
|
-
nil
|
46
|
-
end
|
47
|
-
|
48
|
-
def self.gem_data_directory
|
49
|
-
File.join(Dir.home, ".makit")
|
50
|
-
end
|
51
|
-
|
52
|
-
def self.project_root_directory
|
53
|
-
if Makit::Environment.rake_file_name.nil?
|
54
|
-
Makit::Directory.find_directory_with_pattern(File.dirname(__FILE__), "Rakefile")
|
55
|
-
# lass Directory
|
56
|
-
# def self.find_directory_with_pattern(starting_directory, pattern)
|
57
|
-
# nil
|
58
|
-
else
|
59
|
-
File.dirname(Makit::Environment.rake_file_name)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.get_relative_directory(url)
|
64
|
-
url = url.gsub("https://", "").gsub("http://", "")
|
65
|
-
url.gsub("gitlab.com", "gitlab")
|
66
|
-
end
|
67
|
-
|
68
|
-
def self.get_code_root
|
69
|
-
# user home directory + "code"
|
70
|
-
File.join(Dir.home, "code")
|
71
|
-
end
|
72
|
-
|
73
|
-
def self.get_work_directory(url)
|
74
|
-
raise "invalid url" unless url.include? "https://"
|
75
|
-
|
76
|
-
url.gsub("https://", "").gsub("http://", "")
|
77
|
-
# url = url.gsub("gitlab.com","gitlab")
|
78
|
-
end
|
79
|
-
|
80
|
-
def self.get_work_base_directory
|
81
|
-
File.join(Dir.home, ".makit", "work")
|
82
|
-
end
|
83
|
-
|
84
|
-
def self.is_windows?
|
85
|
-
RbConfig::CONFIG["host_os"] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
86
|
-
end
|
87
|
-
|
88
|
-
def self.is_mac?
|
89
|
-
RbConfig::CONFIG["host_os"] =~ /darwin/
|
90
|
-
end
|
91
|
-
|
92
|
-
def self.is_linux?
|
93
|
-
RbConfig::CONFIG["host_os"] =~ /linux/
|
94
|
-
end
|
95
|
-
|
96
|
-
def self.get_os
|
97
|
-
case RbConfig::CONFIG["host_os"]
|
98
|
-
when /linux/
|
99
|
-
"Linux"
|
100
|
-
when /darwin/
|
101
|
-
"macOS"
|
102
|
-
when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
103
|
-
"Windows"
|
104
|
-
else
|
105
|
-
"Unknown"
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
def self.get_runtime_identifier
|
110
|
-
os = RbConfig::CONFIG["host_os"]
|
111
|
-
cpu = RbConfig::CONFIG["host_cpu"]
|
112
|
-
|
113
|
-
case os
|
114
|
-
when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
115
|
-
os_rid = "win"
|
116
|
-
when /darwin|mac os/
|
117
|
-
os_rid = "osx"
|
118
|
-
when /linux/
|
119
|
-
os_rid = "linux"
|
120
|
-
when /solaris|bsd/
|
121
|
-
os_rid = "unix"
|
122
|
-
else
|
123
|
-
raise "Unknown operating system: host_os=#{os}"
|
124
|
-
end
|
125
|
-
|
126
|
-
case cpu
|
127
|
-
when /x86_64|amd64|x64/
|
128
|
-
arch_rid = "x64"
|
129
|
-
when /i686|i386/
|
130
|
-
arch_rid = "x86"
|
131
|
-
# when /arm/
|
132
|
-
# arch_rid = "arm"
|
133
|
-
when /aarch64|arm64/
|
134
|
-
arch_rid = "arm64"
|
135
|
-
else
|
136
|
-
raise "Unknown architecture: host_cpu=#{cpu}"
|
137
|
-
end
|
138
|
-
|
139
|
-
"#{os_rid}-#{arch_rid}"
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "directory"
|
4
|
+
# This module provides classes for the Makit gem.
|
5
|
+
module Makit
|
6
|
+
# This class provide methods for working with the system Environment.
|
7
|
+
#
|
8
|
+
class Environment
|
9
|
+
def self.current_user
|
10
|
+
if Makit::Environment.is_windows?
|
11
|
+
end
|
12
|
+
`whoami`
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.which(name)
|
16
|
+
return name if File.exist?(name)
|
17
|
+
|
18
|
+
["", ".exe", ".bat", ".cmd"].each do |ext|
|
19
|
+
aname = name + ext
|
20
|
+
return aname if File.exist?(aname)
|
21
|
+
|
22
|
+
ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
|
23
|
+
apath = "#{path.gsub("\\", "/")}/#{aname}".gsub("//", "/")
|
24
|
+
return apath if File.exist?(apath)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
""
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.constants_hash
|
31
|
+
constants = {}
|
32
|
+
# collect all constants that are all uppercase
|
33
|
+
Object.constants.each do |c|
|
34
|
+
# puts "#{c} = #{Object.const_get(c)}" }
|
35
|
+
constants[c] = Object.const_get(c) if c == c.upcase
|
36
|
+
end
|
37
|
+
# Object.constants.each { |c| constants[c] = Object.const_get(c)}# puts "#{c} = #{Object.const_get(c)}" }
|
38
|
+
constants
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.rake_file_name
|
42
|
+
caller_locations.each do |location|
|
43
|
+
return location.absolute_path if location.absolute_path&.end_with?("Rakefile")
|
44
|
+
end
|
45
|
+
nil
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.gem_data_directory
|
49
|
+
File.join(Dir.home, ".makit")
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.project_root_directory
|
53
|
+
if Makit::Environment.rake_file_name.nil?
|
54
|
+
Makit::Directory.find_directory_with_pattern(File.dirname(__FILE__), "Rakefile")
|
55
|
+
# lass Directory
|
56
|
+
# def self.find_directory_with_pattern(starting_directory, pattern)
|
57
|
+
# nil
|
58
|
+
else
|
59
|
+
File.dirname(Makit::Environment.rake_file_name)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.get_relative_directory(url)
|
64
|
+
url = url.gsub("https://", "").gsub("http://", "")
|
65
|
+
url.gsub("gitlab.com", "gitlab")
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.get_code_root
|
69
|
+
# user home directory + "code"
|
70
|
+
File.join(Dir.home, "code")
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.get_work_directory(url)
|
74
|
+
raise "invalid url" unless url.include? "https://"
|
75
|
+
|
76
|
+
url.gsub("https://", "").gsub("http://", "")
|
77
|
+
# url = url.gsub("gitlab.com","gitlab")
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.get_work_base_directory
|
81
|
+
File.join(Dir.home, ".makit", "work")
|
82
|
+
end
|
83
|
+
|
84
|
+
def self.is_windows?
|
85
|
+
RbConfig::CONFIG["host_os"] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
86
|
+
end
|
87
|
+
|
88
|
+
def self.is_mac?
|
89
|
+
RbConfig::CONFIG["host_os"] =~ /darwin/
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.is_linux?
|
93
|
+
RbConfig::CONFIG["host_os"] =~ /linux/
|
94
|
+
end
|
95
|
+
|
96
|
+
def self.get_os
|
97
|
+
case RbConfig::CONFIG["host_os"]
|
98
|
+
when /linux/
|
99
|
+
"Linux"
|
100
|
+
when /darwin/
|
101
|
+
"macOS"
|
102
|
+
when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
103
|
+
"Windows"
|
104
|
+
else
|
105
|
+
"Unknown"
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def self.get_runtime_identifier
|
110
|
+
os = RbConfig::CONFIG["host_os"]
|
111
|
+
cpu = RbConfig::CONFIG["host_cpu"]
|
112
|
+
|
113
|
+
case os
|
114
|
+
when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
115
|
+
os_rid = "win"
|
116
|
+
when /darwin|mac os/
|
117
|
+
os_rid = "osx"
|
118
|
+
when /linux/
|
119
|
+
os_rid = "linux"
|
120
|
+
when /solaris|bsd/
|
121
|
+
os_rid = "unix"
|
122
|
+
else
|
123
|
+
raise "Unknown operating system: host_os=#{os}"
|
124
|
+
end
|
125
|
+
|
126
|
+
case cpu
|
127
|
+
when /x86_64|amd64|x64/
|
128
|
+
arch_rid = "x64"
|
129
|
+
when /i686|i386/
|
130
|
+
arch_rid = "x86"
|
131
|
+
# when /arm/
|
132
|
+
# arch_rid = "arm"
|
133
|
+
when /aarch64|arm64/
|
134
|
+
arch_rid = "arm64"
|
135
|
+
else
|
136
|
+
raise "Unknown architecture: host_cpu=#{cpu}"
|
137
|
+
end
|
138
|
+
|
139
|
+
"#{os_rid}-#{arch_rid}"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|