makit 0.0.1 → 0.0.2

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 (81) hide show
  1. checksums.yaml +4 -4
  2. data/lib/makit/apache.rb +32 -32
  3. data/lib/makit/cli/clean.rb +14 -14
  4. data/lib/makit/cli/clone.rb +59 -59
  5. data/lib/makit/cli/init.rb +38 -38
  6. data/lib/makit/cli/main.rb +33 -33
  7. data/lib/makit/cli/make.rb +54 -54
  8. data/lib/makit/cli/new.rb +37 -37
  9. data/lib/makit/cli/nuget_cache.rb +38 -38
  10. data/lib/makit/cli/pull.rb +31 -31
  11. data/lib/makit/cli/setup.rb +71 -71
  12. data/lib/makit/cli/work.rb +21 -21
  13. data/lib/makit/command_runner.rb +274 -237
  14. data/lib/makit/commands.rb +21 -21
  15. data/lib/makit/content/default_gitignore.rb +5 -5
  16. data/lib/makit/content/default_rakefile.rb +11 -11
  17. data/lib/makit/content/gem_rakefile.rb +14 -14
  18. data/lib/makit/data.rb +50 -50
  19. data/lib/makit/directories.rb +140 -140
  20. data/lib/makit/directory.rb +151 -120
  21. data/lib/makit/dotnet.rb +83 -75
  22. data/lib/makit/environment.rb +123 -123
  23. data/lib/makit/files.rb +47 -47
  24. data/lib/makit/git.rb +66 -66
  25. data/lib/makit/gitlab_runner.rb +60 -60
  26. data/lib/makit/humanize.rb +89 -89
  27. data/lib/makit/logging.rb +96 -96
  28. data/lib/makit/markdown.rb +75 -75
  29. data/lib/makit/mp/basic_object_mp.rb +16 -16
  30. data/lib/makit/mp/command_request.mp.rb +13 -0
  31. data/lib/makit/mp/project_mp.rb +156 -149
  32. data/lib/makit/mp/string_mp.rb +101 -101
  33. data/lib/makit/nuget.rb +57 -57
  34. data/lib/makit/protoc.rb +61 -61
  35. data/lib/makit/serializer.rb +115 -70
  36. data/lib/makit/storage.rb +131 -131
  37. data/lib/makit/symbols.rb +149 -149
  38. data/lib/makit/tasks.rb +67 -67
  39. data/lib/makit/tree.rb +37 -37
  40. data/lib/makit/v1/makit.v1_pb.rb +5 -5
  41. data/lib/makit/v1/makit.v1_services_pb.rb +25 -25
  42. data/lib/makit/version.rb +12 -12
  43. data/lib/makit/wix.rb +95 -95
  44. data/lib/makit/zip.rb +17 -17
  45. data/lib/makit.rb +243 -243
  46. metadata +4 -39
  47. data/.makit.project.json +0 -4
  48. data/.makit.project.yml +0 -2
  49. data/.rubocop.yml +0 -22
  50. data/.ruby-version +0 -1
  51. data/CHANGELOG.md +0 -8
  52. data/CODE_OF_CONDUCT.md +0 -84
  53. data/LICENSE +0 -21
  54. data/README.md +0 -119
  55. data/Rakefile +0 -200
  56. data/docs/Commands.md +0 -50
  57. data/docs_/Commands.md +0 -166
  58. data/docs_/Minitest.Timeouts.md +0 -332
  59. data/examples/protoc/Rakefile +0 -31
  60. data/examples/rake_default/Rakefile +0 -6
  61. data/examples/rubygem-foo/.gitkeep +0 -0
  62. data/examples/rubygem-foo/Rakefile +0 -3
  63. data/examples/run_mp/Rakefile +0 -8
  64. data/exe/makit +0 -5
  65. data/lib/makit/content/default_gitignore.txt +0 -222
  66. data/lib/makit/content/ruby_gitlab-ci.yml +0 -15
  67. data/lib/makit/v1/makit.v1.proto +0 -103
  68. data/makit.generated.sln +0 -30
  69. data/makit.sln +0 -69
  70. data/pages/.gitignore +0 -5
  71. data/pages/404.html +0 -25
  72. data/pages/Gemfile +0 -33
  73. data/pages/Gemfile.lock +0 -88
  74. data/pages/_config.yml +0 -55
  75. data/pages/_layouts/default.html +0 -1
  76. data/pages/_posts/2024-10-05-welcome-to-jekyll.markdown +0 -29
  77. data/pages/about.markdown +0 -18
  78. data/pages/index.markdown +0 -6
  79. data/sig/makit.rbs +0 -4
  80. data/src/ClassLib/Class1.cs +0 -6
  81. data/src/ClassLib/ClassLib.csproj +0 -13
data/lib/makit/dotnet.rb CHANGED
@@ -1,75 +1,83 @@
1
- module Makit
2
- class DotNet
3
- def self.is_installed?
4
- File.exist?(Makit::Environment.which("dotnet"))
5
- end
6
-
7
- def self.version
8
- `dotnet --version`
9
- end
10
-
11
- def self.new_project(template, name, output)
12
- if Dir.exist? output
13
- puts " #{output}".colorize(:green) + " exists.".colorize(:grey)
14
- #puts "Directory #{output} already exists".colorize(:yellow)
15
- else
16
- "dotnet new #{template} --name #{name} --output #{output}".run
17
- end
18
- end
19
-
20
- def self.add_package(project_path, package_name)
21
- project_content = File.read(project_path)
22
- if (!project_content.include?("\"#{package_name}\""))
23
- "dotnet add #{project_path} package #{package_name}".run
24
- else
25
- puts " package ".colorize(:grey) + "#{package_name}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow)
26
- #puts "Package #{package_name} already exists in #{project_path}".colorize(:yellow)
27
- end
28
- end
29
-
30
- def self.add_reference(project_path, reference_path)
31
- project_content = File.read(project_path)
32
- if(project_content.include?("<PackageReference Include=\"#{package}\""))
33
- puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow)
34
- else
35
- "dotnet add #{project_path} reference #{reference_path}".run
36
- end
37
- end
38
-
39
- def self.new_solution(name)
40
- if File.exist? "#{name}.sln"
41
- #puts "Solution #{name}.sln already exists".colorize(:yellow)
42
- puts " #{name}.sln".colorize(:green) + " exists".colorize(:grey)
43
- else
44
- "dotnet new sln --name #{name}".run
45
- end
46
- end
47
-
48
- def self.build(project_path, configuration = "Release", output="artifacts")
49
- project_dir = File.dirname(project_path)
50
- # determine the most recent file change date of the files tracked by git that are in the project directory
51
- git_last_commit_date = `git -C #{project_dir} log -1 --format=%cd --date=iso`.strip
52
- # determine the most recent file change data of the files in the output directory (not tracked by git)
53
- output_last_commit_date = `git -C #{output} log -1 --format=%cd --date=iso`.strip
54
- "dotnet build #{project_path} --configuration #{configuration} --output #{output}".run
55
- end
56
-
57
- def self.sln_add_projects(sln_name)
58
- if !File.exist? "#{sln_name}.sln"
59
- raise "Solution #{sln_name}.sln does not exist"
60
- else
61
- sln_path = "#{sln_name}.sln"
62
- sln_content = File.read(sln_path)
63
- Dir.glob("#{sln_path}/**/*.csproj").each do |project_path|
64
- project_name = File.basename(project_path, ".csproj")
65
- if (sln_content.include?("\"#{project_name}\""))
66
- puts " #{project_name}".colorize(:green) + " is in ".colorize(:grey) + "#{sln_path}".colorize(:green)
67
- #puts "Project #{project_name} already exists in #{sln_path}".colorize(:yellow)
68
- else
69
- "dotnet sln #{sln_path} add #{project_path}".run
70
- end
71
- end
72
- end
73
- end
74
- end # class DotNet
75
- end # module Makit
1
+ module Makit
2
+ class DotNet
3
+ def self.is_installed?
4
+ File.exist?(Makit::Environment.which("dotnet"))
5
+ end
6
+
7
+ def self.version
8
+ `dotnet --version`
9
+ end
10
+
11
+ def self.new_project(template, name, output)
12
+ if Dir.exist? output
13
+ puts " #{output}".colorize(:green) + " exists.".colorize(:grey)
14
+ #puts "Directory #{output} already exists".colorize(:yellow)
15
+ else
16
+ "dotnet new #{template} --name #{name} --output #{output}".run
17
+ end
18
+ end
19
+
20
+ def self.add_package(project_path, package_name)
21
+ project_content = File.read(project_path)
22
+ if (!project_content.include?("\"#{package_name}\""))
23
+ "dotnet add #{project_path} package #{package_name}".run
24
+ else
25
+ puts " package ".colorize(:grey) + "#{package_name}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow)
26
+ end
27
+ end
28
+
29
+ def self.add_reference(project_path, reference_path)
30
+ project_content = File.read(project_path)
31
+ if (project_content.include?("<PackageReference Include=\"#{package}\""))
32
+ puts " reference ".colorize(:grey) + "#{reference_path}".colorize(:yellow) + " is in ".colorize(:grey) + "#{project_path}".colorize(:yellow)
33
+ else
34
+ "dotnet add #{project_path} reference #{reference_path}".run
35
+ end
36
+ end
37
+
38
+ def self.new_solution(name)
39
+ if File.exist? "#{name}.sln"
40
+ #puts "Solution #{name}.sln already exists".colorize(:yellow)
41
+ puts " #{name}.sln".colorize(:green) + " exists".colorize(:grey)
42
+ else
43
+ "dotnet new sln --name #{name}".run
44
+ end
45
+ end
46
+
47
+ def self.build(project_path, configuration = "Release", output = "artifacts")
48
+ project_dir = File.dirname(project_path)
49
+ puts "project_dir: #{project_dir}"
50
+ newest_file = Makit::Directory::get_newest_file(project_dir)
51
+ command_request = Makit::RUNNER::parse_command_request("dotnet build #{project_path} --configuration #{configuration} --output #{output}")
52
+ if newest_file.nil?
53
+ puts "newest_git_file is nil, assigning a default"
54
+ # assign a timestamp of now
55
+ newest_file_date = Time.now
56
+ RUNNER.cache_run(command_request, newest_file_date)
57
+ else
58
+ newest_file_date = File.mtime(newest_file)
59
+ puts "newest file: #{newest_file}"
60
+ puts "newest file date: #{newest_file_date}"
61
+ RUNNER.cache_run(command_request, newest_file_date)
62
+ end
63
+ end
64
+
65
+ def self.sln_add_projects(sln_name)
66
+ if !File.exist? "#{sln_name}.sln"
67
+ raise "Solution #{sln_name}.sln does not exist"
68
+ else
69
+ sln_path = "#{sln_name}.sln"
70
+ sln_content = File.read(sln_path)
71
+ Dir.glob("#{sln_path}/**/*.csproj").each do |project_path|
72
+ project_name = File.basename(project_path, ".csproj")
73
+ if (sln_content.include?("\"#{project_name}\""))
74
+ puts " #{project_name}".colorize(:green) + " is in ".colorize(:grey) + "#{sln_path}".colorize(:green)
75
+ #puts "Project #{project_name} already exists in #{sln_path}".colorize(:yellow)
76
+ else
77
+ "dotnet sln #{sln_path} add #{project_path}".run
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end # class DotNet
83
+ end # module Makit
@@ -1,123 +1,123 @@
1
- # frozen_string_literal: true
2
-
3
- require "sorted_set"
4
- require_relative "directory"
5
- # This module provides classes for the Makit gem.
6
- module Makit
7
- # This class provide methods for working with the system Environment.
8
- #
9
- class Environment
10
- def self.which(name)
11
- return name if File.exist?(name)
12
-
13
- ["", ".exe", ".bat", ".cmd"].each do |ext|
14
- aname = name + ext
15
- return aname if File.exist?(aname)
16
-
17
- ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
18
- apath = "#{path.gsub("\\", "/")}/#{aname}".gsub("//", "/")
19
- return apath if File.exist?(apath)
20
- end
21
- end
22
- ""
23
- end
24
-
25
- def self.constants_hash
26
- constants = {}
27
- # collect all constants that are all uppercase
28
- Object.constants.each { |c| constants[c] = Object.const_get(c) if c == c.upcase } # puts "#{c} = #{Object.const_get(c)}" }
29
- #Object.constants.each { |c| constants[c] = Object.const_get(c)}# puts "#{c} = #{Object.const_get(c)}" }
30
- constants
31
- end
32
-
33
- def self.rake_file_name
34
- caller_locations.each do |location|
35
- return location.absolute_path if location.absolute_path&.end_with?("Rakefile")
36
- end
37
- nil
38
- end
39
-
40
- def self.gem_data_directory
41
- gem_data_directory = File.join(Dir.home, ".makit")
42
- end
43
-
44
- def self.project_root_directory
45
- if !Makit::Environment.rake_file_name.nil?
46
- File.dirname(Makit::Environment.rake_file_name)
47
- else
48
- Makit::Directory.find_directory_with_pattern(File.dirname(__FILE__), "Rakefile")
49
- # lass Directory
50
- # def self.find_directory_with_pattern(starting_directory, pattern)
51
- # nil
52
- end
53
- end
54
-
55
- def self.get_relative_directory(url)
56
- url = url.gsub("https://", "").gsub("http://", "")
57
- url = url.gsub("gitlab.com", "gitlab")
58
- url
59
- end
60
-
61
- def self.get_code_root
62
- # user home directory + "code"
63
- code_root = File.join(Dir.home, "code")
64
- end
65
-
66
- def self.get_work_directory(url)
67
- raise "invalid url" if !url.include? "https://"
68
- url = url.gsub("https://", "").gsub("http://", "")
69
- #url = url.gsub("gitlab.com","gitlab")
70
- url
71
- end
72
-
73
- def self.is_windows?
74
- RbConfig::CONFIG["host_os"] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
75
- end
76
-
77
- def self.get_os
78
- case RbConfig::CONFIG["host_os"]
79
- when /linux/
80
- "Linux"
81
- when /darwin/
82
- "macOS"
83
- when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
84
- "Windows"
85
- else
86
- "Unknown"
87
- end
88
- end
89
-
90
- def self.get_runtime_identifier()
91
- os = RbConfig::CONFIG["host_os"]
92
- cpu = RbConfig::CONFIG["host_cpu"]
93
-
94
- case os
95
- when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
96
- os_rid = "win"
97
- when /darwin|mac os/
98
- os_rid = "osx"
99
- when /linux/
100
- os_rid = "linux"
101
- when /solaris|bsd/
102
- os_rid = "unix"
103
- else
104
- raise "Unknown operating system: host_os=#{os}"
105
- end
106
-
107
- case cpu
108
- when /x86_64|amd64|x64/
109
- arch_rid = "x64"
110
- when /i686|i386/
111
- arch_rid = "x86"
112
- #when /arm/
113
- # arch_rid = "arm"
114
- when /aarch64|arm64/
115
- arch_rid = "arm64"
116
- else
117
- raise "Unknown architecture: host_cpu=#{cpu}"
118
- end
119
-
120
- "#{os_rid}-#{arch_rid}"
121
- end
122
- end
123
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "sorted_set"
4
+ require_relative "directory"
5
+ # This module provides classes for the Makit gem.
6
+ module Makit
7
+ # This class provide methods for working with the system Environment.
8
+ #
9
+ class Environment
10
+ def self.which(name)
11
+ return name if File.exist?(name)
12
+
13
+ ["", ".exe", ".bat", ".cmd"].each do |ext|
14
+ aname = name + ext
15
+ return aname if File.exist?(aname)
16
+
17
+ ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
18
+ apath = "#{path.gsub("\\", "/")}/#{aname}".gsub("//", "/")
19
+ return apath if File.exist?(apath)
20
+ end
21
+ end
22
+ ""
23
+ end
24
+
25
+ def self.constants_hash
26
+ constants = {}
27
+ # collect all constants that are all uppercase
28
+ Object.constants.each { |c| constants[c] = Object.const_get(c) if c == c.upcase } # puts "#{c} = #{Object.const_get(c)}" }
29
+ #Object.constants.each { |c| constants[c] = Object.const_get(c)}# puts "#{c} = #{Object.const_get(c)}" }
30
+ constants
31
+ end
32
+
33
+ def self.rake_file_name
34
+ caller_locations.each do |location|
35
+ return location.absolute_path if location.absolute_path&.end_with?("Rakefile")
36
+ end
37
+ nil
38
+ end
39
+
40
+ def self.gem_data_directory
41
+ gem_data_directory = File.join(Dir.home, ".makit")
42
+ end
43
+
44
+ def self.project_root_directory
45
+ if !Makit::Environment.rake_file_name.nil?
46
+ File.dirname(Makit::Environment.rake_file_name)
47
+ else
48
+ Makit::Directory.find_directory_with_pattern(File.dirname(__FILE__), "Rakefile")
49
+ # lass Directory
50
+ # def self.find_directory_with_pattern(starting_directory, pattern)
51
+ # nil
52
+ end
53
+ end
54
+
55
+ def self.get_relative_directory(url)
56
+ url = url.gsub("https://", "").gsub("http://", "")
57
+ url = url.gsub("gitlab.com", "gitlab")
58
+ url
59
+ end
60
+
61
+ def self.get_code_root
62
+ # user home directory + "code"
63
+ code_root = File.join(Dir.home, "code")
64
+ end
65
+
66
+ def self.get_work_directory(url)
67
+ raise "invalid url" if !url.include? "https://"
68
+ url = url.gsub("https://", "").gsub("http://", "")
69
+ #url = url.gsub("gitlab.com","gitlab")
70
+ url
71
+ end
72
+
73
+ def self.is_windows?
74
+ RbConfig::CONFIG["host_os"] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/
75
+ end
76
+
77
+ def self.get_os
78
+ case RbConfig::CONFIG["host_os"]
79
+ when /linux/
80
+ "Linux"
81
+ when /darwin/
82
+ "macOS"
83
+ when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
84
+ "Windows"
85
+ else
86
+ "Unknown"
87
+ end
88
+ end
89
+
90
+ def self.get_runtime_identifier()
91
+ os = RbConfig::CONFIG["host_os"]
92
+ cpu = RbConfig::CONFIG["host_cpu"]
93
+
94
+ case os
95
+ when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
96
+ os_rid = "win"
97
+ when /darwin|mac os/
98
+ os_rid = "osx"
99
+ when /linux/
100
+ os_rid = "linux"
101
+ when /solaris|bsd/
102
+ os_rid = "unix"
103
+ else
104
+ raise "Unknown operating system: host_os=#{os}"
105
+ end
106
+
107
+ case cpu
108
+ when /x86_64|amd64|x64/
109
+ arch_rid = "x64"
110
+ when /i686|i386/
111
+ arch_rid = "x86"
112
+ #when /arm/
113
+ # arch_rid = "arm"
114
+ when /aarch64|arm64/
115
+ arch_rid = "arm64"
116
+ else
117
+ raise "Unknown architecture: host_cpu=#{cpu}"
118
+ end
119
+
120
+ "#{os_rid}-#{arch_rid}"
121
+ end
122
+ end
123
+ end
data/lib/makit/files.rb CHANGED
@@ -1,47 +1,47 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "directory"
4
- require_relative "environment"
5
- require_relative "protoc"
6
- require_relative "nuget"
7
- require_relative "version"
8
- require "rake"
9
-
10
- # This module provides classes for the Makit gem.
11
- module Makit
12
- # This class provide methods for working with the system Environment.
13
- #
14
- module Files
15
- if (Makit::Directories::PROJECT_ROOT != nil)
16
- Dir.chdir(Makit::Directories::PROJECT_ROOT) do
17
- CSPROJ = Dir.glob("**/*.csproj")
18
- end
19
- else
20
- CSPROJ = Array.new
21
- end
22
-
23
- # show all the files constants in a nicely formatted table format with the name of the constant and the value
24
- def self.show
25
- # Array of constant names (symbols)
26
- constant_names = [:CSPROJ]
27
-
28
- # Find the length of the longest constant name and add 1
29
- max_length = constant_names.map(&:to_s).max_by(&:length).length + 1
30
-
31
- # Iterate through each constant name
32
- constant_names.each do |constant_name|
33
- begin
34
- constant_value = const_get(constant_name) # Fetch the value of the constant
35
- if (constant_value != nil && File.exist?(constant_value))
36
- constant_value = constant_value.colorize(:green)
37
- end
38
- # Print the constant name right justified to the max_length
39
- puts "#{constant_name.to_s.rjust(max_length)} = #{constant_value}"
40
- rescue NameError
41
- # Handle the case where the constant is not defined
42
- puts "#{constant_name.to_s.rjust(max_length)} = [Constant not defined]"
43
- end
44
- end
45
- end
46
- end # module Files
47
- end # module Makit
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "directory"
4
+ require_relative "environment"
5
+ require_relative "protoc"
6
+ require_relative "nuget"
7
+ require_relative "version"
8
+ require "rake"
9
+
10
+ # This module provides classes for the Makit gem.
11
+ module Makit
12
+ # This class provide methods for working with the system Environment.
13
+ #
14
+ module Files
15
+ if (Makit::Directories::PROJECT_ROOT != nil)
16
+ Dir.chdir(Makit::Directories::PROJECT_ROOT) do
17
+ CSPROJ = Dir.glob("**/*.csproj")
18
+ end
19
+ else
20
+ CSPROJ = Array.new
21
+ end
22
+
23
+ # show all the files constants in a nicely formatted table format with the name of the constant and the value
24
+ def self.show
25
+ # Array of constant names (symbols)
26
+ constant_names = [:CSPROJ]
27
+
28
+ # Find the length of the longest constant name and add 1
29
+ max_length = constant_names.map(&:to_s).max_by(&:length).length + 1
30
+
31
+ # Iterate through each constant name
32
+ constant_names.each do |constant_name|
33
+ begin
34
+ constant_value = const_get(constant_name) # Fetch the value of the constant
35
+ if (constant_value != nil && File.exist?(constant_value))
36
+ constant_value = constant_value.colorize(:green)
37
+ end
38
+ # Print the constant name right justified to the max_length
39
+ puts "#{constant_name.to_s.rjust(max_length)} = #{constant_value}"
40
+ rescue NameError
41
+ # Handle the case where the constant is not defined
42
+ puts "#{constant_name.to_s.rjust(max_length)} = [Constant not defined]"
43
+ end
44
+ end
45
+ end
46
+ end # module Files
47
+ end # module Makit
data/lib/makit/git.rb CHANGED
@@ -1,66 +1,66 @@
1
- # frozen_string_literal: true
2
-
3
- # This module provides classes for the Makit gem.
4
- module Makit
5
- # This class provide methods for working with the system Environment.
6
- #
7
- class Git
8
- def self.is_git_repo
9
- Dir.exist? ".git"
10
- end
11
-
12
- def self.detached
13
- `git status`.include?("detached")
14
- end
15
-
16
- def self.is_read_only
17
- !is_git_repo || detached
18
- end
19
-
20
- def self.is_clean
21
- `git status --porcelain`.empty?
22
- end
23
-
24
- def self.integrate
25
- if is_git_repo && !detached
26
- "git add .".run
27
- "git commit -m \"integrate\"".run unless is_clean
28
- end
29
- end
30
-
31
- def self.sync
32
- if is_git_repo && !detached
33
- "git pull".try
34
- "git push origin".try
35
- end
36
- end
37
-
38
- def self.zip_source_files(zipfilename)
39
- "git archive --format zip --output #{zipfilename} HEAD".run
40
- end
41
-
42
- def self.branch
43
- `git branch --show-current`.strip
44
- end
45
-
46
- def self.commitsha
47
- `git rev-parse HEAD`.strip
48
- end
49
-
50
- def self.commitmsg
51
- `git log -1 --pretty=%B`.strip
52
- end
53
-
54
- def self.commitdate
55
- `git log -1 --pretty=%cd`.strip
56
- end
57
-
58
- def self.commitauthor
59
- `git log -1 --pretty=%an`.strip
60
- end
61
-
62
- def self.commitemail
63
- `git log -1 --pretty=%ae`.strip
64
- end
65
- end
66
- end
1
+ # frozen_string_literal: true
2
+
3
+ # This module provides classes for the Makit gem.
4
+ module Makit
5
+ # This class provide methods for working with the system Environment.
6
+ #
7
+ class Git
8
+ def self.is_git_repo
9
+ Dir.exist? ".git"
10
+ end
11
+
12
+ def self.detached
13
+ `git status`.include?("detached")
14
+ end
15
+
16
+ def self.is_read_only
17
+ !is_git_repo || detached
18
+ end
19
+
20
+ def self.is_clean
21
+ `git status --porcelain`.empty?
22
+ end
23
+
24
+ def self.integrate
25
+ if is_git_repo && !detached
26
+ "git add .".run
27
+ "git commit -m \"integrate\"".run unless is_clean
28
+ end
29
+ end
30
+
31
+ def self.sync
32
+ if is_git_repo && !detached
33
+ "git pull".try
34
+ "git push origin".try
35
+ end
36
+ end
37
+
38
+ def self.zip_source_files(zipfilename)
39
+ "git archive --format zip --output #{zipfilename} HEAD".run
40
+ end
41
+
42
+ def self.branch
43
+ `git branch --show-current`.strip
44
+ end
45
+
46
+ def self.commitsha
47
+ `git rev-parse HEAD`.strip
48
+ end
49
+
50
+ def self.commitmsg
51
+ `git log -1 --pretty=%B`.strip
52
+ end
53
+
54
+ def self.commitdate
55
+ `git log -1 --pretty=%cd`.strip
56
+ end
57
+
58
+ def self.commitauthor
59
+ `git log -1 --pretty=%an`.strip
60
+ end
61
+
62
+ def self.commitemail
63
+ `git log -1 --pretty=%ae`.strip
64
+ end
65
+ end
66
+ end