makit 0.0.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.
Files changed (80) hide show
  1. checksums.yaml +7 -0
  2. data/.makit.project.json +4 -0
  3. data/.makit.project.yml +2 -0
  4. data/.rubocop.yml +22 -0
  5. data/.ruby-version +1 -0
  6. data/CHANGELOG.md +8 -0
  7. data/CODE_OF_CONDUCT.md +84 -0
  8. data/LICENSE +21 -0
  9. data/README.md +119 -0
  10. data/Rakefile +190 -0
  11. data/docs/Commands.md +50 -0
  12. data/docs_/Commands.md +166 -0
  13. data/docs_/Minitest.Timeouts.md +332 -0
  14. data/examples/protoc/Rakefile +31 -0
  15. data/examples/rake_default/Rakefile +5 -0
  16. data/examples/rubygem-foo/.gitkeep +0 -0
  17. data/examples/rubygem-foo/Rakefile +3 -0
  18. data/examples/run_mp/Rakefile +8 -0
  19. data/exe/makit +5 -0
  20. data/lib/makit/apache.rb +32 -0
  21. data/lib/makit/cli/clean.rb +14 -0
  22. data/lib/makit/cli/clone.rb +59 -0
  23. data/lib/makit/cli/init.rb +38 -0
  24. data/lib/makit/cli/main.rb +33 -0
  25. data/lib/makit/cli/make.rb +54 -0
  26. data/lib/makit/cli/new.rb +37 -0
  27. data/lib/makit/cli/nuget_cache.rb +38 -0
  28. data/lib/makit/cli/pull.rb +31 -0
  29. data/lib/makit/cli/setup.rb +71 -0
  30. data/lib/makit/cli/work.rb +21 -0
  31. data/lib/makit/command_runner.rb +237 -0
  32. data/lib/makit/commands.rb +21 -0
  33. data/lib/makit/content/default_gitignore.rb +5 -0
  34. data/lib/makit/content/default_gitignore.txt +222 -0
  35. data/lib/makit/content/default_rakefile.rb +11 -0
  36. data/lib/makit/content/gem_rakefile.rb +14 -0
  37. data/lib/makit/content/ruby_gitlab-ci.yml +15 -0
  38. data/lib/makit/data.rb +50 -0
  39. data/lib/makit/directories.rb +140 -0
  40. data/lib/makit/directory.rb +120 -0
  41. data/lib/makit/dotnet.rb +16 -0
  42. data/lib/makit/environment.rb +123 -0
  43. data/lib/makit/files.rb +47 -0
  44. data/lib/makit/git.rb +66 -0
  45. data/lib/makit/gitlab_runner.rb +60 -0
  46. data/lib/makit/humanize.rb +89 -0
  47. data/lib/makit/logging.rb +96 -0
  48. data/lib/makit/markdown.rb +75 -0
  49. data/lib/makit/mp/basic_object_mp.rb +16 -0
  50. data/lib/makit/mp/project_mp.rb +160 -0
  51. data/lib/makit/mp/string_mp.rb +101 -0
  52. data/lib/makit/nuget.rb +57 -0
  53. data/lib/makit/protoc.rb +61 -0
  54. data/lib/makit/serializer.rb +70 -0
  55. data/lib/makit/storage.rb +131 -0
  56. data/lib/makit/symbols.rb +149 -0
  57. data/lib/makit/tasks.rb +63 -0
  58. data/lib/makit/tree.rb +37 -0
  59. data/lib/makit/v1/makit.v1.proto +103 -0
  60. data/lib/makit/v1/makit.v1_pb.rb +30 -0
  61. data/lib/makit/v1/makit.v1_services_pb.rb +26 -0
  62. data/lib/makit/version.rb +12 -0
  63. data/lib/makit/wix.rb +92 -0
  64. data/lib/makit/zip.rb +17 -0
  65. data/lib/makit.rb +243 -0
  66. data/makit.generated.sln +30 -0
  67. data/makit.sln +69 -0
  68. data/pages/.gitignore +5 -0
  69. data/pages/404.html +25 -0
  70. data/pages/Gemfile +33 -0
  71. data/pages/Gemfile.lock +88 -0
  72. data/pages/_config.yml +55 -0
  73. data/pages/_layouts/default.html +1 -0
  74. data/pages/_posts/2024-10-05-welcome-to-jekyll.markdown +29 -0
  75. data/pages/about.markdown +18 -0
  76. data/pages/index.markdown +6 -0
  77. data/sig/makit.rbs +4 -0
  78. data/src/ClassLib/Class1.cs +6 -0
  79. data/src/ClassLib/ClassLib.csproj +13 -0
  80. metadata +251 -0
data/lib/makit.rb ADDED
@@ -0,0 +1,243 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rake/clean"
4
+ require "logger"
5
+ require "json"
6
+ require "yaml"
7
+
8
+ %w[makit makit/v1 makit/cli makit/content makit/mp].each do |dir|
9
+ Dir[File.join(__dir__, dir, "*.rb")].each do |file|
10
+ require_relative file
11
+ end
12
+ end
13
+
14
+ module Makit
15
+ class Error < StandardError; end
16
+
17
+ # Constants
18
+ PROJECT = Makit::V1::Project.create
19
+
20
+ STARTTIME = Time.now
21
+ IS_GIT_REPO = Dir.exist? ".git"
22
+ DETACHED = `git status`.include?("detached")
23
+ IS_READ_ONLY = !IS_GIT_REPO || DETACHED
24
+ RUNTIME_IDENTIFIER = Makit::Environment::get_runtime_identifier
25
+ DEVICE = Socket.gethostname
26
+ LOGGER = Makit::Logging::MultiLogger.create_logger
27
+
28
+ # Git Commit and Branch/Tag constants
29
+ ENV["COMMIT_SHA"] = Makit::Git::commitsha
30
+ ENV["COMMIT_BRANCH"] = Makit::Git::branch
31
+
32
+ RUNNER = CommandRunner.new
33
+ #RUNNER.log_to_artifacts = true
34
+ # Variables
35
+ log_level = Logger::INFO
36
+ package_type = Makit::V1::PackageType::GEM
37
+ commands = Makit::Commands.new
38
+
39
+ # methods
40
+ #
41
+ # initialize a git repository
42
+ def self.init(directory)
43
+ if !Dir.exist?(directory)
44
+ FileUtils.mkdir_p(directory)
45
+ end
46
+ raise Makit::Error.new("directory does not exist: #{directory}") if !Dir.exist?(directory)
47
+ Dir.chdir(directory) do
48
+ File.write(".gitignore", Makit::Content::GITIGNORE) unless File.exist?(".gitignore")
49
+ init = Makit::RUNNER.execute "git init"
50
+ if init.exit_code != 0
51
+ raise Makit::Error.new("failed to initialize local repository: #{directory}\n#{Makit::Humanize.get_command_summary(init)}")
52
+ end
53
+ init
54
+ end
55
+ end
56
+
57
+ # clone a git repository to a local directory in Directories::CLONE
58
+ # returns the Makit::V1::Command for 'git clone ...'
59
+ def self.clone(git_repository)
60
+ commands = []
61
+ # make sure a local clone of the repository exists
62
+ clone_dir = Directories::get_clone_directory(git_repository)
63
+ if (!Dir.exist?(clone_dir))
64
+ commands << Makit::RUNNER.execute("git clone #{git_repository} #{clone_dir}")
65
+ end
66
+ commands
67
+ end
68
+
69
+ # pull the latest changes from the remote repository to a local clone in Directories::CLONE
70
+ def self.pull(git_repository)
71
+ clone_dir = Directories::get_clone_directory(git_repository)
72
+ raise Makit::Error.new("clone directory does not exist: #{clone_dir}") if !Dir.exist?(clone_dir)
73
+ Dir.chdir(clone_dir) do
74
+ request = Makit::V1::CommandRequest.new(
75
+ name: "git",
76
+ arguments: ["pull"],
77
+ directory: clone_dir,
78
+ )
79
+ pull_command = Makit::RUNNER.execute(request)
80
+ raise Makit::Error.new(Makit::Humanize::get_command_details(pull_command)) if pull_command.exit_code != 0
81
+ return pull_command
82
+ end
83
+ end
84
+
85
+ def self.clone_or_pull(git_repository)
86
+ commands = []
87
+ clone_dir = Directories::get_clone_directory(git_repository)
88
+ if Dir.exist?(clone_dir)
89
+ commands << pull(git_repository)
90
+ else
91
+ commands << clone(git_repository)
92
+ end
93
+ commands
94
+ end
95
+
96
+ # log information about a specific repository
97
+ # return an array of GitLogEntry objects
98
+ def self.log(git_repository, limit, skip)
99
+ entries = []
100
+ clone_dir = Directories::get_clone_directory(git_repository)
101
+ raise Makit::Error.new("clone directory does not exist: #{clone_dir}") if !Dir.exist?(clone_dir)
102
+ Dir.chdir(clone_dir) do
103
+ log_command = Makit::RUNNER.execute("git log -n #{limit} --skip #{skip} --date=iso")
104
+ if log_command.exit_code != 0
105
+ lines = log_command.stderr.split("\n")
106
+ # iterate over the lines, generating a GitLogEntry for each commit
107
+ lines.each do |line|
108
+ if line.start_with?("commit")
109
+ commit = line.split(" ")[1]
110
+ entries << GitLogEntry.new(commit)
111
+ end
112
+ if line.start_with?("Author:")
113
+ entries.last.author = line.split(" ")[1..-1].join(" ")
114
+ end
115
+ if line.start_with?("Date:")
116
+ entries.last.date = line.split(" ")[1..-1].join(" ")
117
+ end
118
+ if line.start_with?(" ")
119
+ entries.last.message += line[4..-1]
120
+ end
121
+ end
122
+ end
123
+ end
124
+ entries
125
+ end
126
+
127
+ # work on a local clone of a git repository
128
+ # if the repository does not exist, clone it
129
+ # if the repository exists, pull the latest changes
130
+ # if a build command can be found, execute it and return the result Makit::V1::WorkResult
131
+ def self.work(repository)
132
+ commands = []
133
+ work_dir = Makit::Directories::get_work_directory(repository)
134
+ commands << clone_or_pull(repository)
135
+ clone_dir = Makit::Directories::get_clone_directory(repository)
136
+ if !Dir.exist?(work_dir)
137
+ # make the parent directory for work_dir if it does not exist
138
+ FileUtils.mkdir_p(File.dirname(work_dir)) unless Dir.exist?(File.dirname(work_dir))
139
+ Makit::RUNNER::execute "git clone #{clone_dir} #{work_dir}"
140
+ end
141
+ Dir.chdir(work_dir) do
142
+ # if there is no .gitignore file, create one
143
+ File.write(".gitignore", Makit::Content::GITIGNORE) unless File.exist?(".gitignore")
144
+ end
145
+ nil?
146
+ end
147
+
148
+ def self.enable_monkey_patch
149
+ %w[makit/mp].each do |dir|
150
+ Dir[File.join(__dir__, dir, "*.rb")].each do |file|
151
+ require_relative file
152
+ end
153
+ end
154
+ end
155
+ # Given a git repository URL and a commit id, create a new MakeResult object.
156
+ def self.make(url, commit, force = false)
157
+ log_filename = File.join(Directories::get_log_directory(url), commit, +"#{RUNTIME_IDENTIFIER}.#{DEVICE}.json")
158
+ if File.exist?(log_filename) && !force && commit != "latest"
159
+ begin
160
+ # deserialize the log file to a Makite::V1::MakeResult object
161
+ make_result = Makit::V1::MakeResult.decode_json(File.read(log_filename))
162
+ return make_result
163
+ rescue => e
164
+ # if deserialization fails, delete the log file and continue
165
+ FileUtils.rm(log_filename)
166
+ end
167
+ else
168
+ commands = []
169
+ begin
170
+ clone_or_pull(url).each do |command|
171
+ commands << command
172
+ end
173
+ # make sure a local clone of the repository exists
174
+ clone_dir = Directories::get_clone_directory(url)
175
+ raise Makit::Error.new("clone directory does not exist: #{clone_dir}") if !Dir.exist?(clone_dir)
176
+
177
+ if (commit == "latest")
178
+ Dir.chdir(clone_dir) do
179
+ git_log = Makit::RUNNER.execute("git log -n 1 --date=iso")
180
+
181
+ commands << git_log
182
+ # assert that the commit is valid
183
+ commit = git_log.output.match(/^commit ([0-9a-f]{40})$/i)[1]
184
+ raise Makit::Error.new("invalid commit: #{commit}") if commit.nil? || commit.empty? || !commit.match?(/\A[0-9a-f]{40}\z/i)
185
+ log_filename = File.join(Directories::get_log_directory(url), commit, +"#{RUNTIME_IDENTIFIER}.#{DEVICE}.json")
186
+ end
187
+ end
188
+
189
+ # clone a fresh copy of the repository to a make directory
190
+ make_dir = Directories::get_make_commit_directory(url, commit)
191
+ FileUtils.rm_rf(make_dir) if Dir.exist?(make_dir)
192
+ commands << Makit::RUNNER.execute("git clone #{clone_dir} #{make_dir}")
193
+ raise Makit::Error.new("failed to clone repository: #{url} to #{make_dir}") if !Dir.exist?(make_dir)
194
+ Dir.chdir(make_dir) do
195
+ commands << Makit::RUNNER.execute("git reset --hard #{commit}")
196
+ commands << Makit::RUNNER.execute("git log -n 1")
197
+
198
+ commands << Makit::RUNNER.execute("bundle install") if File.exist? "Gemfile"
199
+ if File.exist? ("Rakefile")
200
+ commands << Makit::RUNNER.execute("rake default")
201
+ else
202
+ commands << Makit::RUNNER.execute("rake default") if File.exist? "rakefile.rb"
203
+ end
204
+
205
+ make_result = Makit::V1::MakeResult.new(
206
+ repository: url,
207
+ commit: commit,
208
+ branch: "?",
209
+ tag: "?",
210
+ device: DEVICE,
211
+ runtime_identifier: RUNTIME_IDENTIFIER,
212
+ )
213
+ commands.flatten.each do |command|
214
+ make_result.commands << command
215
+ end
216
+
217
+ # save the MakeResult object to a log file as pretty printed json
218
+ FileUtils.mkdir_p(File.dirname(log_filename)) unless Dir.exist?(File.dirname(log_filename))
219
+ File.write(log_filename, make_result.to_json)
220
+
221
+ return make_result
222
+ end
223
+ rescue => e
224
+ message = "error raised attempting to make repository: #{url} commit: #{commit}\n\n"
225
+ message += "#{e.message}\n"
226
+ backtrace = e.backtrace.join("\n")
227
+ message += "#{backtrace}\n\n"
228
+ message += "commands:\n"
229
+ commands.flatten.each do |command|
230
+ message += Makit::Humanize::get_command_details(command)
231
+ end
232
+ raise Makit::Error.new(message)
233
+ end
234
+ end
235
+ end
236
+ end
237
+
238
+ if !File.exist?(".gitignore")
239
+ Makit::LOGGER.info("added .gitignore file")
240
+ File.open(".gitignore", "w") do |file|
241
+ file.puts Makit::Content::GITIGNORE
242
+ end
243
+ end
@@ -0,0 +1,30 @@
1
+ 
2
+ Microsoft Visual Studio Solution File, Format Version 12.00
3
+ # Visual Studio Version 17
4
+ VisualStudioVersion = 17.5.002.0
5
+ MinimumVisualStudioVersion = 10.0.40219.1
6
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CA67F75D-E329-4005-A037-539C6699B710}"
7
+ EndProject
8
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClassLib", "src\ClassLib\ClassLib.csproj", "{0BE025BD-665A-4D63-B5DA-0058E866B0B8}"
9
+ EndProject
10
+ Global
11
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
12
+ Debug|Any CPU = Debug|Any CPU
13
+ Release|Any CPU = Release|Any CPU
14
+ EndGlobalSection
15
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
16
+ {0BE025BD-665A-4D63-B5DA-0058E866B0B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
17
+ {0BE025BD-665A-4D63-B5DA-0058E866B0B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
18
+ {0BE025BD-665A-4D63-B5DA-0058E866B0B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
19
+ {0BE025BD-665A-4D63-B5DA-0058E866B0B8}.Release|Any CPU.Build.0 = Release|Any CPU
20
+ EndGlobalSection
21
+ GlobalSection(SolutionProperties) = preSolution
22
+ HideSolutionNode = FALSE
23
+ EndGlobalSection
24
+ GlobalSection(NestedProjects) = preSolution
25
+ {0BE025BD-665A-4D63-B5DA-0058E866B0B8} = {CA67F75D-E329-4005-A037-539C6699B710}
26
+ EndGlobalSection
27
+ GlobalSection(ExtensibilityGlobals) = postSolution
28
+ SolutionGuid = {814B4822-A4C8-45F6-AA4C-0FA46F07E5AA}
29
+ EndGlobalSection
30
+ EndGlobal
data/makit.sln ADDED
@@ -0,0 +1,69 @@
1
+ 
2
+ Microsoft Visual Studio Solution File, Format Version 12.00
3
+ # Visual Studio Version 17
4
+ VisualStudioVersion = 17.0.31903.59
5
+ MinimumVisualStudioVersion = 10.0.40219.1
6
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{6A9EE161-B014-4911-8DCE-4147E615B05E}"
7
+ EndProject
8
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "nuget-foo", "nuget-foo", "{9558497C-F50B-4CA1-8C4A-526200B10AF1}"
9
+ EndProject
10
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{13485B55-C911-4661-85CF-8B6861EC53D8}"
11
+ EndProject
12
+ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nuget-foo", "examples\nuget-foo\src\nuget-foo\nuget-foo.csproj", "{19394BEB-BA01-4837-9F41-E873B8F16400}"
13
+ EndProject
14
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{8F2DE485-6CC3-4388-8144-C36D823E2FE8}"
15
+ EndProject
16
+ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLib", "src\ClassLib\ClassLib.csproj", "{A675EEA7-58CF-4A35-9BFF-2D0917301DBE}"
17
+ EndProject
18
+ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Foo", "examples\nuget-foo\src\Foo\Foo.csproj", "{F9DA20B6-FFA9-432E-AB09-B3BCC9096DB1}"
19
+ EndProject
20
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{E63CA4EE-189F-46DD-B640-8470B5456BEF}"
21
+ EndProject
22
+ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Foo.Wasm.Demo", "examples\nuget-foo\examples\Foo.Wasm.Demo\Foo.Wasm.Demo.csproj", "{5C8872DD-4E6F-40EB-B84D-07DCA9FF6354}"
23
+ EndProject
24
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{7D9A3DAE-473A-4E96-8B62-C1E060E583A3}"
25
+ EndProject
26
+ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Foo.Tests", "examples\nuget-foo\test\Foo\Foo.Tests.csproj", "{0730AAD2-8BB5-49CD-BC9F-09AA7764B7EF}"
27
+ EndProject
28
+ Global
29
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
30
+ Debug|Any CPU = Debug|Any CPU
31
+ Release|Any CPU = Release|Any CPU
32
+ EndGlobalSection
33
+ GlobalSection(SolutionProperties) = preSolution
34
+ HideSolutionNode = FALSE
35
+ EndGlobalSection
36
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
37
+ {19394BEB-BA01-4837-9F41-E873B8F16400}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
38
+ {19394BEB-BA01-4837-9F41-E873B8F16400}.Debug|Any CPU.Build.0 = Debug|Any CPU
39
+ {19394BEB-BA01-4837-9F41-E873B8F16400}.Release|Any CPU.ActiveCfg = Release|Any CPU
40
+ {19394BEB-BA01-4837-9F41-E873B8F16400}.Release|Any CPU.Build.0 = Release|Any CPU
41
+ {A675EEA7-58CF-4A35-9BFF-2D0917301DBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
42
+ {A675EEA7-58CF-4A35-9BFF-2D0917301DBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
43
+ {A675EEA7-58CF-4A35-9BFF-2D0917301DBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
44
+ {A675EEA7-58CF-4A35-9BFF-2D0917301DBE}.Release|Any CPU.Build.0 = Release|Any CPU
45
+ {F9DA20B6-FFA9-432E-AB09-B3BCC9096DB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
46
+ {F9DA20B6-FFA9-432E-AB09-B3BCC9096DB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
47
+ {F9DA20B6-FFA9-432E-AB09-B3BCC9096DB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
48
+ {F9DA20B6-FFA9-432E-AB09-B3BCC9096DB1}.Release|Any CPU.Build.0 = Release|Any CPU
49
+ {5C8872DD-4E6F-40EB-B84D-07DCA9FF6354}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
50
+ {5C8872DD-4E6F-40EB-B84D-07DCA9FF6354}.Debug|Any CPU.Build.0 = Debug|Any CPU
51
+ {5C8872DD-4E6F-40EB-B84D-07DCA9FF6354}.Release|Any CPU.ActiveCfg = Release|Any CPU
52
+ {5C8872DD-4E6F-40EB-B84D-07DCA9FF6354}.Release|Any CPU.Build.0 = Release|Any CPU
53
+ {0730AAD2-8BB5-49CD-BC9F-09AA7764B7EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
54
+ {0730AAD2-8BB5-49CD-BC9F-09AA7764B7EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
55
+ {0730AAD2-8BB5-49CD-BC9F-09AA7764B7EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
56
+ {0730AAD2-8BB5-49CD-BC9F-09AA7764B7EF}.Release|Any CPU.Build.0 = Release|Any CPU
57
+ EndGlobalSection
58
+ GlobalSection(NestedProjects) = preSolution
59
+ {9558497C-F50B-4CA1-8C4A-526200B10AF1} = {6A9EE161-B014-4911-8DCE-4147E615B05E}
60
+ {13485B55-C911-4661-85CF-8B6861EC53D8} = {9558497C-F50B-4CA1-8C4A-526200B10AF1}
61
+ {19394BEB-BA01-4837-9F41-E873B8F16400} = {13485B55-C911-4661-85CF-8B6861EC53D8}
62
+ {A675EEA7-58CF-4A35-9BFF-2D0917301DBE} = {8F2DE485-6CC3-4388-8144-C36D823E2FE8}
63
+ {F9DA20B6-FFA9-432E-AB09-B3BCC9096DB1} = {13485B55-C911-4661-85CF-8B6861EC53D8}
64
+ {E63CA4EE-189F-46DD-B640-8470B5456BEF} = {9558497C-F50B-4CA1-8C4A-526200B10AF1}
65
+ {5C8872DD-4E6F-40EB-B84D-07DCA9FF6354} = {E63CA4EE-189F-46DD-B640-8470B5456BEF}
66
+ {7D9A3DAE-473A-4E96-8B62-C1E060E583A3} = {9558497C-F50B-4CA1-8C4A-526200B10AF1}
67
+ {0730AAD2-8BB5-49CD-BC9F-09AA7764B7EF} = {7D9A3DAE-473A-4E96-8B62-C1E060E583A3}
68
+ EndGlobalSection
69
+ EndGlobal
data/pages/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ _site
2
+ .sass-cache
3
+ .jekyll-cache
4
+ .jekyll-metadata
5
+ vendor
data/pages/404.html ADDED
@@ -0,0 +1,25 @@
1
+ ---
2
+ permalink: /404.html
3
+ layout: default
4
+ ---
5
+
6
+ <style type="text/css" media="screen">
7
+ .container {
8
+ margin: 10px auto;
9
+ max-width: 600px;
10
+ text-align: center;
11
+ }
12
+ h1 {
13
+ margin: 30px 0;
14
+ font-size: 4em;
15
+ line-height: 1;
16
+ letter-spacing: -1px;
17
+ }
18
+ </style>
19
+
20
+ <div class="container">
21
+ <h1>404</h1>
22
+
23
+ <p><strong>Page not found :(</strong></p>
24
+ <p>The requested page could not be found.</p>
25
+ </div>
data/pages/Gemfile ADDED
@@ -0,0 +1,33 @@
1
+ source "https://rubygems.org"
2
+ # Hello! This is where you manage which Jekyll version is used to run.
3
+ # When you want to use a different version, change it below, save the
4
+ # file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
5
+ #
6
+ # bundle exec jekyll serve
7
+ #
8
+ # This will help ensure the proper Jekyll version is running.
9
+ # Happy Jekylling!
10
+ gem "jekyll", "~> 4.3.4"
11
+ # This is the default theme for new Jekyll sites. You may change this to anything you like.
12
+ gem "minima", "~> 2.5"
13
+ # If you want to use GitHub Pages, remove the "gem "jekyll"" above and
14
+ # uncomment the line below. To upgrade, run `bundle update github-pages`.
15
+ # gem "github-pages", group: :jekyll_plugins
16
+ # If you have any plugins, put them here!
17
+ group :jekyll_plugins do
18
+ gem "jekyll-feed", "~> 0.12"
19
+ end
20
+
21
+ # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
22
+ # and associated library.
23
+ platforms :mingw, :x64_mingw, :mswin, :jruby do
24
+ gem "tzinfo", ">= 1", "< 3"
25
+ gem "tzinfo-data"
26
+ end
27
+
28
+ # Performance-booster for watching directories on Windows
29
+ gem "wdm", "~> 0.1", :platforms => [:mingw, :x64_mingw, :mswin]
30
+
31
+ # Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
32
+ # do not have a Java counterpart.
33
+ gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
@@ -0,0 +1,88 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ addressable (2.8.7)
5
+ public_suffix (>= 2.0.2, < 7.0)
6
+ bigdecimal (3.1.8)
7
+ colorator (1.1.0)
8
+ concurrent-ruby (1.3.4)
9
+ em-websocket (0.5.3)
10
+ eventmachine (>= 0.12.9)
11
+ http_parser.rb (~> 0)
12
+ eventmachine (1.2.7)
13
+ ffi (1.17.0-arm64-darwin)
14
+ forwardable-extended (2.6.0)
15
+ google-protobuf (4.28.2-arm64-darwin)
16
+ bigdecimal
17
+ rake (>= 13)
18
+ http_parser.rb (0.8.0)
19
+ i18n (1.14.6)
20
+ concurrent-ruby (~> 1.0)
21
+ jekyll (4.3.4)
22
+ addressable (~> 2.4)
23
+ colorator (~> 1.0)
24
+ em-websocket (~> 0.5)
25
+ i18n (~> 1.0)
26
+ jekyll-sass-converter (>= 2.0, < 4.0)
27
+ jekyll-watch (~> 2.0)
28
+ kramdown (~> 2.3, >= 2.3.1)
29
+ kramdown-parser-gfm (~> 1.0)
30
+ liquid (~> 4.0)
31
+ mercenary (>= 0.3.6, < 0.5)
32
+ pathutil (~> 0.9)
33
+ rouge (>= 3.0, < 5.0)
34
+ safe_yaml (~> 1.0)
35
+ terminal-table (>= 1.8, < 4.0)
36
+ webrick (~> 1.7)
37
+ jekyll-feed (0.17.0)
38
+ jekyll (>= 3.7, < 5.0)
39
+ jekyll-sass-converter (3.0.0)
40
+ sass-embedded (~> 1.54)
41
+ jekyll-seo-tag (2.8.0)
42
+ jekyll (>= 3.8, < 5.0)
43
+ jekyll-watch (2.2.1)
44
+ listen (~> 3.0)
45
+ kramdown (2.4.0)
46
+ rexml
47
+ kramdown-parser-gfm (1.1.0)
48
+ kramdown (~> 2.0)
49
+ liquid (4.0.4)
50
+ listen (3.9.0)
51
+ rb-fsevent (~> 0.10, >= 0.10.3)
52
+ rb-inotify (~> 0.9, >= 0.9.10)
53
+ mercenary (0.4.0)
54
+ minima (2.5.2)
55
+ jekyll (>= 3.5, < 5.0)
56
+ jekyll-feed (~> 0.9)
57
+ jekyll-seo-tag (~> 2.1)
58
+ pathutil (0.16.2)
59
+ forwardable-extended (~> 2.6)
60
+ public_suffix (6.0.1)
61
+ rake (13.2.1)
62
+ rb-fsevent (0.11.2)
63
+ rb-inotify (0.11.1)
64
+ ffi (~> 1.0)
65
+ rexml (3.3.8)
66
+ rouge (4.4.0)
67
+ safe_yaml (1.0.5)
68
+ sass-embedded (1.79.4-arm64-darwin)
69
+ google-protobuf (~> 4.27)
70
+ terminal-table (3.0.2)
71
+ unicode-display_width (>= 1.1.1, < 3)
72
+ unicode-display_width (2.6.0)
73
+ webrick (1.8.2)
74
+
75
+ PLATFORMS
76
+ arm64-darwin
77
+
78
+ DEPENDENCIES
79
+ http_parser.rb (~> 0.6.0)
80
+ jekyll (~> 4.3.4)
81
+ jekyll-feed (~> 0.12)
82
+ minima (~> 2.5)
83
+ tzinfo (>= 1, < 3)
84
+ tzinfo-data
85
+ wdm (~> 0.1)
86
+
87
+ BUNDLED WITH
88
+ 2.5.21
data/pages/_config.yml ADDED
@@ -0,0 +1,55 @@
1
+ # Welcome to Jekyll!
2
+ #
3
+ # This config file is meant for settings that affect your whole blog, values
4
+ # which you are expected to set up once and rarely edit after that. If you find
5
+ # yourself editing this file very often, consider using Jekyll's data files
6
+ # feature for the data you need to update frequently.
7
+ #
8
+ # For technical reasons, this file is *NOT* reloaded automatically when you use
9
+ # 'bundle exec jekyll serve'. If you change this file, please restart the server process.
10
+ #
11
+ # If you need help with YAML syntax, here are some quick references for you:
12
+ # https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
13
+ # https://learnxinyminutes.com/docs/yaml/
14
+ #
15
+ # Site settings
16
+ # These are used to personalize your new site. If you look in the HTML files,
17
+ # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
18
+ # You can create any custom variable you would like, and they will be accessible
19
+ # in the templates via {{ site.myvariable }}.
20
+
21
+ title: Your awesome title
22
+ email: your-email@example.com
23
+ description: >- # this means to ignore newlines until "baseurl:"
24
+ Write an awesome description for your new site here. You can edit this
25
+ line in _config.yml. It will appear in your document head meta (for
26
+ Google search results) and in your feed.xml site description.
27
+ baseurl: "/makit" # the subpath of your site, e.g. /blog
28
+ url: "https://gems-rb.gitlab.io" # the base hostname & protocol for your site, e.g. http://example.com
29
+ twitter_username: jekyllrb
30
+ github_username: jekyll
31
+
32
+ # Build settings
33
+ theme: minima
34
+ plugins:
35
+ - jekyll-feed
36
+
37
+ # Exclude from processing.
38
+ # The following items will not be processed, by default.
39
+ # Any item listed under the `exclude:` key here will be automatically added to
40
+ # the internal "default list".
41
+ #
42
+ # Excluded items can be processed by explicitly listing the directories or
43
+ # their entries' file path in the `include:` list.
44
+ #
45
+ # exclude:
46
+ # - .sass-cache/
47
+ # - .jekyll-cache/
48
+ # - gemfiles/
49
+ # - Gemfile
50
+ # - Gemfile.lock
51
+ # - node_modules/
52
+ # - vendor/bundle/
53
+ # - vendor/cache/
54
+ # - vendor/gems/
55
+ # - vendor/ruby/
@@ -0,0 +1 @@
1
+ 404: Not Found
@@ -0,0 +1,29 @@
1
+ ---
2
+ layout: post
3
+ title: "Welcome to Jekyll!"
4
+ date: 2024-10-05 10:23:33 -0700
5
+ categories: jekyll update
6
+ ---
7
+ You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
8
+
9
+ Jekyll requires blog post files to be named according to the following format:
10
+
11
+ `YEAR-MONTH-DAY-title.MARKUP`
12
+
13
+ Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
14
+
15
+ Jekyll also offers powerful support for code snippets:
16
+
17
+ {% highlight ruby %}
18
+ def print_hi(name)
19
+ puts "Hi, #{name}"
20
+ end
21
+ print_hi('Tom')
22
+ #=> prints 'Hi, Tom' to STDOUT.
23
+ {% endhighlight %}
24
+
25
+ Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
26
+
27
+ [jekyll-docs]: https://jekyllrb.com/docs/home
28
+ [jekyll-gh]: https://github.com/jekyll/jekyll
29
+ [jekyll-talk]: https://talk.jekyllrb.com/
@@ -0,0 +1,18 @@
1
+ ---
2
+ layout: page
3
+ title: About
4
+ permalink: /about/
5
+ ---
6
+
7
+ This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/)
8
+
9
+ You can find the source code for Minima at GitHub:
10
+ [jekyll][jekyll-organization] /
11
+ [minima](https://github.com/jekyll/minima)
12
+
13
+ You can find the source code for Jekyll at GitHub:
14
+ [jekyll][jekyll-organization] /
15
+ [jekyll](https://github.com/jekyll/jekyll)
16
+
17
+
18
+ [jekyll-organization]: https://github.com/jekyll
@@ -0,0 +1,6 @@
1
+ ---
2
+ # Feel free to add content and custom Front Matter to this file.
3
+ # To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
4
+
5
+ layout: home
6
+ ---
data/sig/makit.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module Makit
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
@@ -0,0 +1,6 @@
1
+ namespace ClassLib;
2
+
3
+ public class Class1
4
+ {
5
+
6
+ }
@@ -0,0 +1,13 @@
1
+ <Project Sdk="Microsoft.NET.Sdk">
2
+
3
+ <PropertyGroup>
4
+ <TargetFramework>net8.0</TargetFramework>
5
+ <ImplicitUsings>enable</ImplicitUsings>
6
+ <Nullable>enable</Nullable>
7
+ </PropertyGroup>
8
+
9
+ <ItemGroup>
10
+ <PackageReference Include="Google.Protobuf" Version="3.27.2" />
11
+ </ItemGroup>
12
+
13
+ </Project>