makit 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
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>