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.
- checksums.yaml +7 -0
- data/.makit.project.json +4 -0
- data/.makit.project.yml +2 -0
- data/.rubocop.yml +22 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +8 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/LICENSE +21 -0
- data/README.md +119 -0
- data/Rakefile +190 -0
- data/docs/Commands.md +50 -0
- data/docs_/Commands.md +166 -0
- data/docs_/Minitest.Timeouts.md +332 -0
- data/examples/protoc/Rakefile +31 -0
- data/examples/rake_default/Rakefile +5 -0
- data/examples/rubygem-foo/.gitkeep +0 -0
- data/examples/rubygem-foo/Rakefile +3 -0
- data/examples/run_mp/Rakefile +8 -0
- data/exe/makit +5 -0
- data/lib/makit/apache.rb +32 -0
- data/lib/makit/cli/clean.rb +14 -0
- data/lib/makit/cli/clone.rb +59 -0
- data/lib/makit/cli/init.rb +38 -0
- data/lib/makit/cli/main.rb +33 -0
- data/lib/makit/cli/make.rb +54 -0
- data/lib/makit/cli/new.rb +37 -0
- data/lib/makit/cli/nuget_cache.rb +38 -0
- data/lib/makit/cli/pull.rb +31 -0
- data/lib/makit/cli/setup.rb +71 -0
- data/lib/makit/cli/work.rb +21 -0
- data/lib/makit/command_runner.rb +237 -0
- data/lib/makit/commands.rb +21 -0
- data/lib/makit/content/default_gitignore.rb +5 -0
- data/lib/makit/content/default_gitignore.txt +222 -0
- data/lib/makit/content/default_rakefile.rb +11 -0
- data/lib/makit/content/gem_rakefile.rb +14 -0
- data/lib/makit/content/ruby_gitlab-ci.yml +15 -0
- data/lib/makit/data.rb +50 -0
- data/lib/makit/directories.rb +140 -0
- data/lib/makit/directory.rb +120 -0
- data/lib/makit/dotnet.rb +16 -0
- data/lib/makit/environment.rb +123 -0
- data/lib/makit/files.rb +47 -0
- data/lib/makit/git.rb +66 -0
- data/lib/makit/gitlab_runner.rb +60 -0
- data/lib/makit/humanize.rb +89 -0
- data/lib/makit/logging.rb +96 -0
- data/lib/makit/markdown.rb +75 -0
- data/lib/makit/mp/basic_object_mp.rb +16 -0
- data/lib/makit/mp/project_mp.rb +160 -0
- data/lib/makit/mp/string_mp.rb +101 -0
- data/lib/makit/nuget.rb +57 -0
- data/lib/makit/protoc.rb +61 -0
- data/lib/makit/serializer.rb +70 -0
- data/lib/makit/storage.rb +131 -0
- data/lib/makit/symbols.rb +149 -0
- data/lib/makit/tasks.rb +63 -0
- data/lib/makit/tree.rb +37 -0
- data/lib/makit/v1/makit.v1.proto +103 -0
- data/lib/makit/v1/makit.v1_pb.rb +30 -0
- data/lib/makit/v1/makit.v1_services_pb.rb +26 -0
- data/lib/makit/version.rb +12 -0
- data/lib/makit/wix.rb +92 -0
- data/lib/makit/zip.rb +17 -0
- data/lib/makit.rb +243 -0
- data/makit.generated.sln +30 -0
- data/makit.sln +69 -0
- data/pages/.gitignore +5 -0
- data/pages/404.html +25 -0
- data/pages/Gemfile +33 -0
- data/pages/Gemfile.lock +88 -0
- data/pages/_config.yml +55 -0
- data/pages/_layouts/default.html +1 -0
- data/pages/_posts/2024-10-05-welcome-to-jekyll.markdown +29 -0
- data/pages/about.markdown +18 -0
- data/pages/index.markdown +6 -0
- data/sig/makit.rbs +4 -0
- data/src/ClassLib/Class1.cs +6 -0
- data/src/ClassLib/ClassLib.csproj +13 -0
- 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
|
data/makit.generated.sln
ADDED
@@ -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
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]
|
data/pages/Gemfile.lock
ADDED
@@ -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
|
data/sig/makit.rbs
ADDED
@@ -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>
|