makit 0.0.0 → 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 -16
  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 -160
  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 -63
  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 -26
  42. data/lib/makit/version.rb +12 -12
  43. data/lib/makit/wix.rb +95 -92
  44. data/lib/makit/zip.rb +17 -17
  45. data/lib/makit.rb +243 -243
  46. metadata +8 -43
  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 -190
  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 -5
  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
@@ -1,16 +1,16 @@
1
- # frozen_string_literal: true
2
- require "json"
3
- require "yaml"
4
-
5
- # monkey patch String class with a run method
6
-
7
- class BasicObject
8
- def to_json
9
- self.to_json
10
- end
11
-
12
- def to_pretty_json
13
- json = self.to_json
14
- ::JSON.pretty_generate(::JSON.parse(json))
15
- end
16
- end # class BasicObject
1
+ # frozen_string_literal: true
2
+ require "json"
3
+ require "yaml"
4
+
5
+ # monkey patch String class with a run method
6
+
7
+ class BasicObject
8
+ def to_json
9
+ self.to_json
10
+ end
11
+
12
+ def to_pretty_json
13
+ json = self.to_json
14
+ ::JSON.pretty_generate(::JSON.parse(json))
15
+ end
16
+ end # class BasicObject
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ require "digest"
3
+
4
+ module Makit
5
+ module V1
6
+ class CommandRequest
7
+ def to_hash
8
+ int_hash = Digest::SHA256.hexdigest("{self.name}.#{self.arguments.join(" ")}")
9
+ int_hash
10
+ end
11
+ end
12
+ end
13
+ end # module Makit
@@ -1,160 +1,156 @@
1
- # frozen_string_literal: true
2
- require "json"
3
- require "yaml"
4
-
5
- module Makit
6
- module V1
7
- class Project
8
- def to_yaml
9
- data = JSON.parse(self.to_pretty_json)
10
- data.to_yaml.sub(/^---\n/, '')
11
- end
12
-
13
- def self.create
14
- project = nil
15
- if (File.exist?(".makit.project.yml"))
16
- yaml = File.read(".makit.project.yml")
17
- # convert yaml to json
18
- data = YAML.load(yaml)
19
- json = JSON.pretty_generate(data)
20
- project = Makit::V1::Project.decode_json(json)
21
-
22
- else
23
- if (File.exist?(".makit.project.json"))
24
- json = File.read("project.json")
25
- project = Makit::V1::Project.decode_json(json)
26
- else
27
- project = Makit::V1::Project.new
28
- end
29
- end
30
- project.set_default_values
31
- project
32
- end
33
-
34
- def set_default_values
35
- #self.language = "csharp"
36
- #self.primary_artifact_type = "nuget"
37
- if self.git_remote_url.nil? || self.git_remote_url.empty?
38
- self.git_remote_url = `git remote get-url origin`.strip
39
- end
40
- if self.name.nil? || self.name.empty?
41
- if(!self.git_remote_url.nil? && !self.git_remote_url.empty?)
42
- self.name =get_name(File.basename(self.git_remote_url,".git"))# get_capitalized_name(File.basename(self.git_remote_url, ".git"))
43
- else
44
- self.name =get_name(File.basename(Dir.getwd))# get_capitalized_name(File.basename(Dir.getwd))
45
- end
46
- end
47
- self
48
- end
49
-
50
- def get_name(name)
51
- if !self.git_remote_url.nil? && !self.git_remote_url.empty?
52
- is_dotnet = self.git_remote_url.include?("nuget")
53
- if is_dotnet
54
- get_capitalized_name(name)
55
- end
56
- end
57
- name.downcase
58
- end
59
- def get_capitalized_name(name)
60
- name.split(".").map(&:capitalize).join(".")
61
- end
62
-
63
- def save_as(filename)
64
- extension = File.extname(filename)
65
- case extension
66
- when ".json"
67
- File.write(filename, self.to_pretty_json)
68
- when ".yml"
69
- File.write(filename, self.to_yaml)
70
- else
71
- raise "unsupported file extension: #{extension}"
72
- end
73
- end
74
-
75
- def with_dotnet_project(template,name,output)
76
- if !self.dotnet_projects.any? { |project| project.output== output }
77
- project = Makit::V1::DotNetProject.new
78
- project.template = template
79
- project.name = name
80
- project.output = output
81
- self.dotnet_projects << project
82
- end
83
- end
84
-
85
- def setup_dotnet_projects
86
- if self.dotnet_projects.any?
87
- if(!File.exist?("#{self.name}.sln"))
88
- puts " Creating solution file: " + "#{self.name}.sln".colorize(:green)
89
- "dotnet new sln -n #{self.name}".run unless File.exist?("#{self.name}.sln")
90
- else
91
- puts " Solution file already exists: " + "#{self.name}.sln".colorize(:yellow)
92
- end
93
- self.dotnet_projects.each do |project|
94
- if(!Dir.exist?("#{project.output}"))
95
- puts " Creating project file: " + "#{project.name}/#{project.name}.csproj".colorize(:green)
96
- "dotnet new #{project.template} -n #{project.name} -o #{project.output}".run unless Dir.exist?("#{project.output}")
97
-
98
- # add the .csproj file to the .sln
99
- puts " Adding project to solution: " + "#{project.output}/#{project.name}.csproj".colorize(:green)
100
- "dotnet sln #{self.name}.sln add #{project.output}/#{project.name}.csproj".run
101
- else
102
- puts " Project file already exists: " + "#{project.name}/#{project.name}.csproj".colorize(:yellow)
103
- end
104
- end
105
- else
106
- puts " no dotnet projects found".colorize(:yellow)
107
- end
108
- end
109
-
110
- def build_dotnet_projects
111
- self.dotnet_projects.each do |project|
112
- "dotnet build #{project.output} --configuration Release".run
113
- end
114
- end
115
-
116
- def test_dotnet_projects
117
- self.dotnet_projects.each do |project|
118
- "dotnet test #{project.output} --configuration Release".run
119
- end
120
- end
121
- end # class Project
122
- end # module V1
123
- end # module Makit
124
-
125
-
126
- #task :setup do
127
- # if(Makit::PROJECT.git_remote_url.include?("nuget") ||
128
- # Makit::PROJECT.primary_artifact_type.include?("nuget"))
129
-
130
- # if(!File.exist?("#{Makit::PROJECT.name}.sln"))
131
- # puts " Creating solution file: " + "#{Makit::PROJECT.name}.sln".colorize(:green)
132
- # "dotnet new sln -n #{Makit::PROJECT.name}".run unless File.exist?("#{Makit::PROJECT.name}.sln")
133
- # end
134
- # end
135
-
136
- # Makit::PROJECT.dotnet_projects.each do |project|
137
- # if(!Dir.exist?("#{project.output}"))
138
- # puts " Creating project file: " + "#{project.name}/#{project.name}.csproj".colorize(:green)
139
- # "dotnet new #{project.template} -n #{project.name} -o #{project.output}".run unless Dir.exist?("#{project.output}")
140
- # end
141
- # end
142
-
143
- # add all .csproj file to the .sln
144
- # Dir.glob("**/*.csproj").each do |file|
145
- # "dotnet sln #{Makit::PROJECT.name}.sln add #{file}".run
146
- # end
147
- #template = "nunit"
148
- #"dotnet new #{template} -n #{Makit::PROJECT.name}.Tests -o src/#{Makit::PROJECT.name}".run unless Dir.exist?("#{Makit::PROJECT.name}.Tests")
149
-
150
- #if(Makit::PROJECt.primary_artifact_type.include?("nuget"))
151
- # puts
152
- #end
153
- # end
154
-
155
-
156
- #"dotnet build src/Facilities.Models/Facilities.Models.csproj --configuration Release".run
157
- # "dotnet build test/Facilities.Models.Tests/Facilities.Models.Tests.csproj --configuration Release".run
158
- # "dotnet build examples/Facilities.Models.Wasm.Demo/Facilities.Models.Wasm.Demo.csproj --configuration Release".run
159
-
160
- #"dotnet test test/Facilities.Models.Tests/Facilities.Models.Tests.csproj --configuration Release".run
1
+ # frozen_string_literal: true
2
+ require "json"
3
+ require "yaml"
4
+
5
+ module Makit
6
+ module V1
7
+ class Project
8
+ def to_yaml
9
+ data = JSON.parse(self.to_pretty_json)
10
+ data.to_yaml.sub(/^---\n/, "")
11
+ end
12
+
13
+ def self.create
14
+ project = Makit::V1::Project.new
15
+ project.set_default_values
16
+ project
17
+ end
18
+
19
+ def open(filename)
20
+ other = Makit::V1::Project::create_from_file(filename)
21
+ self.name = other.name
22
+ self.git_remote_url = other.git_remote_url
23
+ self.dotnet_projects = other.dotnet_projects
24
+ end
25
+
26
+ def self.create_from_file(filename)
27
+ extension = File.extname(filename)
28
+ case extension
29
+ when ".yml"
30
+ yaml = File.read(filename)
31
+ create_from_yaml(yaml)
32
+ when ".json"
33
+ json = File.read(filename)
34
+ create_from_json(json)
35
+ else
36
+ raise "unsupported file extension: #{extension}"
37
+ end
38
+ end
39
+
40
+ def self.create_from_yaml(yaml)
41
+ json = JSON.pretty_generate(YAML.load(yaml))
42
+ project = Makit::V1::Project.decode_json(json)
43
+ project
44
+ end
45
+
46
+ def self.create_from_json(json)
47
+ project = Makit::V1::Project.decode_json(json)
48
+ project
49
+ end
50
+
51
+ def set_default_values
52
+ #self.language = "csharp"
53
+ #self.primary_artifact_type = "nuget"
54
+ if self.git_remote_url.nil? || self.git_remote_url.empty?
55
+ self.git_remote_url = `git remote get-url origin`.strip
56
+ end
57
+ if self.name.nil? || self.name.empty?
58
+ if (!self.git_remote_url.nil? && !self.git_remote_url.empty?)
59
+ self.name = get_name(File.basename(self.git_remote_url, ".git")) # get_capitalized_name(File.basename(self.git_remote_url, ".git"))
60
+ else
61
+ self.name = get_name(File.basename(Dir.getwd)) # get_capitalized_name(File.basename(Dir.getwd))
62
+ end
63
+ end
64
+ self
65
+ end
66
+
67
+ def get_name(name)
68
+ if !self.git_remote_url.nil? && !self.git_remote_url.empty?
69
+ is_dotnet = self.git_remote_url.include?("nuget")
70
+ if is_dotnet
71
+ get_capitalized_name(name)
72
+ end
73
+ end
74
+ name.downcase
75
+ end
76
+
77
+ def get_capitalized_name(name)
78
+ name.split(".").map(&:capitalize).join(".")
79
+ end
80
+
81
+ def save_as(filename)
82
+ extension = File.extname(filename)
83
+ case extension
84
+ when ".json"
85
+ File.write(filename, self.to_pretty_json)
86
+ when ".yml"
87
+ File.write(filename, self.to_yaml)
88
+ else
89
+ raise "unsupported file extension: #{extension}"
90
+ end
91
+ end
92
+
93
+ def with_dotnet_project(template, name, output)
94
+ if !self.dotnet_projects.any? { |project| project.output == output }
95
+ project = Makit::V1::DotNetProject.new
96
+ project.template = template
97
+ project.name = name
98
+ project.output = output
99
+ self.dotnet_projects << project
100
+ end
101
+ end
102
+
103
+ def setup
104
+ setup_dotnet_projects
105
+ end
106
+
107
+ def build
108
+ build_dotnet_projects
109
+ end
110
+
111
+ def setup_dotnet_projects
112
+ if self.dotnet_projects.any?
113
+ if (!File.exist?("#{self.name}.sln"))
114
+ puts " Creating solution file: " + "#{self.name}.sln".colorize(:green)
115
+ "dotnet new sln -n #{self.name}".run unless File.exist?("#{self.name}.sln")
116
+ else
117
+ puts " Solution file already exists: " + "#{self.name}.sln".colorize(:yellow)
118
+ end
119
+ self.dotnet_projects.each do |project|
120
+ add_project = true
121
+ if (project.os == "windows" && !Makit::Environment.is_windows?)
122
+ add_project = false
123
+ end
124
+ if (add_project)
125
+ Makit::DotNet.new_project(project.template, project.name, project.output)
126
+ # add any nuget packages to the project
127
+ project_filename = "#{project.output}/#{project.name}.csproj"
128
+ project.packages.each { |package|
129
+ Makit::DotNet::add_package(project_filename, package)
130
+ }
131
+ end
132
+ end
133
+ Makit::DotNet.new_solution(self.name)
134
+ Makit::DotNet.sln_add_projects(self.name)
135
+ else
136
+ puts " no dotnet projects found".colorize(:yellow)
137
+ end
138
+ end
139
+
140
+ def build_dotnet_projects
141
+ self.dotnet_projects.each do |project|
142
+ project.build_args.each do |build_arg|
143
+ project_path = File.join(project.output, "#{project.name}.csproj")
144
+ Makit::DotNet.build(project_path, build_arg.configuration, build_arg.output)
145
+ end
146
+ end
147
+ end
148
+
149
+ def test_dotnet_projects
150
+ self.dotnet_projects.each do |project|
151
+ "dotnet test #{project.output} --configuration Release".run
152
+ end
153
+ end
154
+ end # class Project
155
+ end # module V1
156
+ end # module Makit
@@ -1,101 +1,101 @@
1
- # frozen_string_literal: true
2
- require "json"
3
- # monkey patch String class with a run method
4
-
5
- class String
6
- def run(args = nil)
7
- if args.nil?
8
- command = self
9
- Makit::RUNNER.run(Makit::RUNNER::parse_command_request(command))
10
- else
11
- command = self
12
- request = Makit::RUNNER.parse_args(command)
13
- if args.is_a?(Hash)
14
- args.each do |key, value|
15
- request.send("#{key}=", value)
16
- end
17
- end
18
- Makit::RUNNER.run(request)
19
- end
20
- end
21
-
22
- def try(args = nil)
23
- if args.nil?
24
- command = self
25
- Makit::RUNNER.try(command)
26
- else
27
- command = self
28
- request = Makit::RUNNER.parse_args(command)
29
- if args.is_a?(Hash)
30
- args.each do |key, value|
31
- request.send("#{key}=", value)
32
- end
33
- end
34
- Makit::RUNNER.try(request)
35
- end
36
- end
37
-
38
- # Read a value from a JSON file
39
- # key is a string with the key to read, e.g. "AzureAd.Authority"
40
- def get_json_value(key)
41
- json = File.read(self)
42
- data = JSON.parse(json)
43
-
44
- # key delimiter is '.' so we can access nested keys
45
- key.split(".").each do |k|
46
- data = data[k]
47
- end
48
- data
49
- end
50
-
51
- alias_method :retrieve, :get_json_value
52
-
53
- # Set a value in a JSON file
54
- # key is a string with the key to set, e.g. "AzureAd.Authority"
55
- def set_json_value(key, value)
56
- file = File.read(self)
57
- data = JSON.parse(file)
58
- keys = key.split(".")
59
- current = data
60
-
61
- # Traverse and create any missing keys
62
- keys[0..-2].each do |k|
63
- current[k] ||= {} # Create a new hash if the key doesn't exist
64
- current = current[k]
65
- end
66
-
67
- # Set the value for the final key
68
- current[keys[-1]] = value
69
-
70
- # Write the JSON back to the file
71
- File.write(self, JSON.pretty_generate(data))
72
- end
73
-
74
- # Alias for set_json_value
75
- alias_method :assign, :set_json_value
76
-
77
- def to_lines(max_length=80,indent_length=5)
78
- if(self.length <= max_length)
79
- return self
80
- else
81
- indent = " " * indent_length
82
- words = self.split(" ")
83
- lines = []
84
- line = ""
85
- words.each do |word|
86
- if((line + word).length > max_length)
87
- lines << line
88
- line = indent + word
89
- else
90
- if(line.length == 0)
91
- line = word
92
- else
93
- line += " " + word
94
- end
95
- end
96
- end
97
- lines << line
98
- return lines.join("\n")
99
- end
100
- end
101
- end
1
+ # frozen_string_literal: true
2
+ require "json"
3
+ # monkey patch String class with a run method
4
+
5
+ class String
6
+ def run(args = nil)
7
+ if args.nil?
8
+ command = self
9
+ Makit::RUNNER.run(Makit::RUNNER::parse_command_request(command))
10
+ else
11
+ command = self
12
+ request = Makit::RUNNER.parse_args(command)
13
+ if args.is_a?(Hash)
14
+ args.each do |key, value|
15
+ request.send("#{key}=", value)
16
+ end
17
+ end
18
+ Makit::RUNNER.run(request)
19
+ end
20
+ end
21
+
22
+ def try(args = nil)
23
+ if args.nil?
24
+ command = self
25
+ Makit::RUNNER.try(command)
26
+ else
27
+ command = self
28
+ request = Makit::RUNNER.parse_args(command)
29
+ if args.is_a?(Hash)
30
+ args.each do |key, value|
31
+ request.send("#{key}=", value)
32
+ end
33
+ end
34
+ Makit::RUNNER.try(request)
35
+ end
36
+ end
37
+
38
+ # Read a value from a JSON file
39
+ # key is a string with the key to read, e.g. "AzureAd.Authority"
40
+ def get_json_value(key)
41
+ json = File.read(self)
42
+ data = JSON.parse(json)
43
+
44
+ # key delimiter is '.' so we can access nested keys
45
+ key.split(".").each do |k|
46
+ data = data[k]
47
+ end
48
+ data
49
+ end
50
+
51
+ alias_method :retrieve, :get_json_value
52
+
53
+ # Set a value in a JSON file
54
+ # key is a string with the key to set, e.g. "AzureAd.Authority"
55
+ def set_json_value(key, value)
56
+ file = File.read(self)
57
+ data = JSON.parse(file)
58
+ keys = key.split(".")
59
+ current = data
60
+
61
+ # Traverse and create any missing keys
62
+ keys[0..-2].each do |k|
63
+ current[k] ||= {} # Create a new hash if the key doesn't exist
64
+ current = current[k]
65
+ end
66
+
67
+ # Set the value for the final key
68
+ current[keys[-1]] = value
69
+
70
+ # Write the JSON back to the file
71
+ File.write(self, JSON.pretty_generate(data))
72
+ end
73
+
74
+ # Alias for set_json_value
75
+ alias_method :assign, :set_json_value
76
+
77
+ def to_lines(max_length = 80, indent_length = 5)
78
+ if (self.length <= max_length)
79
+ return self
80
+ else
81
+ indent = " " * indent_length
82
+ words = self.split(" ")
83
+ lines = []
84
+ line = ""
85
+ words.each do |word|
86
+ if ((line + word).length > max_length)
87
+ lines << line
88
+ line = indent + word
89
+ else
90
+ if (line.length == 0)
91
+ line = word
92
+ else
93
+ line += " " + word
94
+ end
95
+ end
96
+ end
97
+ lines << line
98
+ return lines.join("\n")
99
+ end
100
+ end
101
+ end