makit 0.0.0 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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
data/lib/makit/tasks.rb CHANGED
@@ -1,63 +1,67 @@
1
- # frozen_string_literal: true
2
- require "digest"
3
- require "rake/clean"
4
- #require "sqlite3"
5
-
6
- # Register the at_exit hook for cleanup
7
- at_exit do
8
- puts "Performing cleanup for Makit..."
9
- # Add your cleanup code here
10
- # For example, close files, remove temporary files, etc.
11
- # store current state of Makit::PROJECT to a file
12
- #json_filename = File.join(Makit::Directories::PROJECT_ROOT, ".makit.project.json")
13
- #puts "Saving project state to #{json_filename}"
14
- #Makit::PROJECT.save_as(json_filename)
15
- yml_filename = File.join(Makit::Directories::PROJECT_ROOT, ".makit.project.yml")
16
- puts "Saving project state to #{yml_filename}"
17
- Makit::PROJECT.save_as(yml_filename)
18
- end
19
-
20
- # This module provides classes for the Makit gem.
21
- module Makit
22
- # This class provide methods for managing persistent data for the makit gem
23
- class Tasks
24
- def self.run_default_commands(task_name)
25
- Makit::LOGGER.debug("Running default commands for task: #{task_name}")
26
- end
27
- end
28
- end
29
-
30
- desc "Remove any temporary products."
31
- task :clean do
32
- puts ":clean".colorize(:blue)
33
- Makit::RUNNER.run(Makit::RUNNER.parse_command_request("git clean -dXf"))
34
- end
35
-
36
- desc "Integrate changes into the git repository."
37
- task :integrate do
38
- puts ":integrate".colorize(:blue)
39
- Makit::Git.integrate
40
- end
41
-
42
- desc "Sync changes with the git repository."
43
- task :sync do
44
- puts ":sync".colorize(:blue)
45
- Makit::Git.sync
46
- end
47
-
48
- desc "Format source code."
49
- task :format do
50
- puts ":format".colorize(:blue)
51
- Makit::RUNNER.try("rufo .") if File.exist?("Gemfile") || File.exist?("Rakefile")
52
- end
53
-
54
- desc "Update dependencies."
55
- task :update do
56
- puts ":update".colorize(:blue)
57
- system("bundle update") if File.exist?("Gemfile")
58
- # glob all *.csproj files
59
- Dir.glob("**/*.csproj").each do |file|
60
- "dotnet format #{file}".run
61
- end
62
- end
63
-
1
+ # frozen_string_literal: true
2
+ require "digest"
3
+ require "rake/clean"
4
+ #require "sqlite3"
5
+
6
+ # Register the at_exit hook for cleanup
7
+ at_exit do
8
+ puts "Performing cleanup for Makit..."
9
+ # Add your cleanup code here
10
+ # For example, close files, remove temporary files, etc.
11
+ # store current state of Makit::PROJECT to a file
12
+ #json_filename = File.join(Makit::Directories::PROJECT_ROOT, ".makit.project.json")
13
+ #puts "Saving project state to #{json_filename}"
14
+ #Makit::PROJECT.save_as(json_filename)
15
+ #yml_filename = File.join(Makit::Directories::PROJECT_ROOT, ".makit.project.yml")
16
+ #puts "Saving project state to #{yml_filename}"
17
+ # Makit::PROJECT.save_as(yml_filename)
18
+ end
19
+
20
+ # This module provides classes for the Makit gem.
21
+ module Makit
22
+ # This class provide methods for managing persistent data for the makit gem
23
+ class Tasks
24
+ def self.run_default_commands(task_name)
25
+ Makit::LOGGER.debug("Running default commands for task: #{task_name}")
26
+ end
27
+ end
28
+ end
29
+
30
+ desc "Remove any temporary products."
31
+ task :clean do
32
+ puts ":clean".colorize(:blue)
33
+ Makit::RUNNER.run(Makit::RUNNER.parse_command_request("git clean -dXf"))
34
+ end
35
+
36
+ desc "Integrate changes into the git repository."
37
+ task :integrate do
38
+ puts ":integrate".colorize(:blue)
39
+ Makit::Git.integrate
40
+ end
41
+
42
+ desc "Sync changes with the git repository."
43
+ task :sync do
44
+ puts ":sync".colorize(:blue)
45
+ Makit::Git.sync
46
+ end
47
+
48
+ desc "Format source code."
49
+ task :format do
50
+ puts ":format".colorize(:blue)
51
+ Makit::RUNNER.try("rufo .") if File.exist?("Gemfile") || File.exist?("Rakefile")
52
+ end
53
+
54
+ desc "Update dependencies."
55
+ task :update do
56
+ puts ":update".colorize(:blue)
57
+ system("bundle update") if File.exist?("Gemfile")
58
+ # glob all *.csproj files
59
+ Dir.glob("**/*.csproj").each do |file|
60
+ "dotnet format #{file}".run
61
+ end
62
+ end
63
+
64
+ # Register the at_exit hook for cleanup
65
+ at_exit do
66
+ puts "at_exit in tasks.rb...."
67
+ end
data/lib/makit/tree.rb CHANGED
@@ -1,37 +1,37 @@
1
- # frozen_string_literal: true
2
-
3
- # This module provides classes for the Makit gem.
4
- module Makit
5
- class Tree
6
- def get_source_tree
7
- files = `git ls-files`.split("\n")
8
- tree = {}
9
-
10
- # Build a nested hash representing the file structure
11
- files.each do |file|
12
- parts = file.split("/")
13
- current = tree
14
-
15
- parts.each_with_index do |part, index|
16
- current[part] ||= (index == parts.length - 1 ? nil : {})
17
- current = current[part] unless current[part].nil?
18
- end
19
- end
20
-
21
- generate_tree_string(tree)
22
- end
23
-
24
- def generate_tree_string(tree, indent = "")
25
- result = ""
26
- tree.each do |key, value|
27
- if value.is_a?(Hash)
28
- result << "#{indent}#{key}/\n"
29
- result << generate_tree_string(value, "#{indent} ")
30
- else
31
- result << "#{indent}#{key}\n"
32
- end
33
- end
34
- result
35
- end
36
- end
37
- end
1
+ # frozen_string_literal: true
2
+
3
+ # This module provides classes for the Makit gem.
4
+ module Makit
5
+ class Tree
6
+ def get_source_tree
7
+ files = `git ls-files`.split("\n")
8
+ tree = {}
9
+
10
+ # Build a nested hash representing the file structure
11
+ files.each do |file|
12
+ parts = file.split("/")
13
+ current = tree
14
+
15
+ parts.each_with_index do |part, index|
16
+ current[part] ||= (index == parts.length - 1 ? nil : {})
17
+ current = current[part] unless current[part].nil?
18
+ end
19
+ end
20
+
21
+ generate_tree_string(tree)
22
+ end
23
+
24
+ def generate_tree_string(tree, indent = "")
25
+ result = ""
26
+ tree.each do |key, value|
27
+ if value.is_a?(Hash)
28
+ result << "#{indent}#{key}/\n"
29
+ result << generate_tree_string(value, "#{indent} ")
30
+ else
31
+ result << "#{indent}#{key}\n"
32
+ end
33
+ end
34
+ result
35
+ end
36
+ end
37
+ end
@@ -2,13 +2,12 @@
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # source: lib/makit/v1/makit.v1.proto
4
4
 
5
- require 'google/protobuf'
5
+ require "google/protobuf"
6
6
 
7
- require 'google/protobuf/timestamp_pb'
8
- require 'google/protobuf/duration_pb'
7
+ require "google/protobuf/timestamp_pb"
8
+ require "google/protobuf/duration_pb"
9
9
 
10
-
11
- descriptor_data = "\n\x1blib/makit/v1/makit.v1.proto\x12\x08makit.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\"?\n\rDotNetProject\x12\x10\n\x08template\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06output\x18\x03 \x01(\t\"a\n\x07Project\x12\x16\n\x0egit_remote_url\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x30\n\x0f\x64otnet_projects\x18\x05 \x03(\x0b\x32\x17.makit.v1.DotNetProject\"\xa5\x01\n\x0e\x43ommandRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\targuments\x18\x02 \x03(\t\x12+\n\x07timeout\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tdirectory\x18\x04 \x01(\t\x12\x0c\n\x04task\x18\x05 \x01(\t\x12\r\n\x05input\x18\x06 \x01(\x0c\x12\x15\n\rexit_on_error\x18\x07 \x01(\x08\"\x91\x02\n\x07\x43ommand\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\targuments\x18\x03 \x03(\t\x12\x11\n\texit_code\x18\x04 \x01(\x05\x12\r\n\x05input\x18\x05 \x01(\x0c\x12\x0e\n\x06output\x18\x06 \x01(\x0c\x12\r\n\x05\x65rror\x18\x07 \x01(\x0c\x12.\n\nstarted_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04user\x18\n \x01(\t\x12\x0e\n\x06\x64\x65vice\x18\x0b \x01(\t\x12\n\n\x02os\x18\x0c \x01(\t\x12\x11\n\tdirectory\x18\r \x01(\t\"I\n\rConfiguration\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x08\x63ommands\x18\x02 \x03(\x0b\x32\x18.makit.v1.CommandRequest\"3\n\rGitRepository\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x15\n\rrelative_path\x18\x02 \x01(\t\"h\n\x0bGitLogEntry\x12\x0e\n\x06\x63ommit\x18\x01 \x01(\t\x12\x0e\n\x06\x61uthor\x18\x02 \x01(\t\x12(\n\x04\x64\x61te\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07message\x18\x04 \x01(\t\"\xc8\x01\n\nMakeResult\x12\x12\n\nrepository\x18\x01 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x02 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x03 \x01(\t\x12\x0b\n\x03tag\x18\x04 \x01(\t\x12\x0e\n\x06\x64\x65vice\x18\x05 \x01(\t\x12\x1a\n\x12runtime_identifier\x18\x06 \x01(\t\x12#\n\x08\x63ommands\x18\x07 \x03(\x0b\x32\x11.makit.v1.Command\x12\x14\n\x0cinitial_size\x18\x08 \x01(\x05\x12\x12\n\nfinal_size\x18\t \x01(\x05\"?\n\rDotNetNewArgs\x12\x10\n\x08template\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06output\x18\x03 \x01(\t**\n\x08Language\x12\x08\n\x04RUBY\x10\x00\x12\n\n\x06\x43SHARP\x10\x01\x12\x08\n\x04RUST\x10\x02*,\n\x0bPackageType\x12\x07\n\x03GEM\x10\x00\x12\t\n\x05NUGET\x10\x01\x12\t\n\x05\x43RATE\x10\x03\x32H\n\x0e\x43ommandService\x12\x36\n\x07\x45xecute\x12\x18.makit.v1.CommandRequest\x1a\x11.makit.v1.Commandb\x06proto3"
10
+ descriptor_data = "\n\x1blib/makit/v1/makit.v1.proto\x12\x08makit.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\"\x8c\x01\n\rDotNetProject\x12\x10\n\x08template\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06output\x18\x03 \x01(\t\x12\x10\n\x08packages\x18\x04 \x03(\t\x12\n\n\x02os\x18\x05 \x01(\t\x12-\n\nbuild_args\x18\x06 \x03(\x0b\x32\x19.makit.v1.DotNetBuildArgs\"8\n\x0f\x44otNetBuildArgs\x12\x15\n\rconfiguration\x18\x01 \x01(\t\x12\x0e\n\x06output\x18\x02 \x01(\t\"a\n\x07Project\x12\x16\n\x0egit_remote_url\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x30\n\x0f\x64otnet_projects\x18\x05 \x03(\x0b\x32\x17.makit.v1.DotNetProject\"\xa5\x01\n\x0e\x43ommandRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\targuments\x18\x02 \x03(\t\x12+\n\x07timeout\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tdirectory\x18\x04 \x01(\t\x12\x0c\n\x04task\x18\x05 \x01(\t\x12\r\n\x05input\x18\x06 \x01(\x0c\x12\x15\n\rexit_on_error\x18\x07 \x01(\x08\"\x91\x02\n\x07\x43ommand\x12\n\n\x02id\x18\x01 \x01(\x03\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\targuments\x18\x03 \x03(\t\x12\x11\n\texit_code\x18\x04 \x01(\x05\x12\r\n\x05input\x18\x05 \x01(\x0c\x12\x0e\n\x06output\x18\x06 \x01(\x0c\x12\r\n\x05\x65rror\x18\x07 \x01(\x0c\x12.\n\nstarted_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\x08\x64uration\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0c\n\x04user\x18\n \x01(\t\x12\x0e\n\x06\x64\x65vice\x18\x0b \x01(\t\x12\n\n\x02os\x18\x0c \x01(\t\x12\x11\n\tdirectory\x18\r \x01(\t\"I\n\rConfiguration\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x08\x63ommands\x18\x02 \x03(\x0b\x32\x18.makit.v1.CommandRequest\"3\n\rGitRepository\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x15\n\rrelative_path\x18\x02 \x01(\t\"h\n\x0bGitLogEntry\x12\x0e\n\x06\x63ommit\x18\x01 \x01(\t\x12\x0e\n\x06\x61uthor\x18\x02 \x01(\t\x12(\n\x04\x64\x61te\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07message\x18\x04 \x01(\t\"\xc8\x01\n\nMakeResult\x12\x12\n\nrepository\x18\x01 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x02 \x01(\t\x12\x0e\n\x06\x62ranch\x18\x03 \x01(\t\x12\x0b\n\x03tag\x18\x04 \x01(\t\x12\x0e\n\x06\x64\x65vice\x18\x05 \x01(\t\x12\x1a\n\x12runtime_identifier\x18\x06 \x01(\t\x12#\n\x08\x63ommands\x18\x07 \x03(\x0b\x32\x11.makit.v1.Command\x12\x14\n\x0cinitial_size\x18\x08 \x01(\x05\x12\x12\n\nfinal_size\x18\t \x01(\x05\"?\n\rDotNetNewArgs\x12\x10\n\x08template\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06output\x18\x03 \x01(\t**\n\x08Language\x12\x08\n\x04RUBY\x10\x00\x12\n\n\x06\x43SHARP\x10\x01\x12\x08\n\x04RUST\x10\x02*,\n\x0bPackageType\x12\x07\n\x03GEM\x10\x00\x12\t\n\x05NUGET\x10\x01\x12\t\n\x05\x43RATE\x10\x03\x32H\n\x0e\x43ommandService\x12\x36\n\x07\x45xecute\x12\x18.makit.v1.CommandRequest\x1a\x11.makit.v1.Commandb\x06proto3"
12
11
 
13
12
  pool = Google::Protobuf::DescriptorPool.generated_pool
14
13
  pool.add_serialized_file(descriptor_data)
@@ -16,6 +15,7 @@ pool.add_serialized_file(descriptor_data)
16
15
  module Makit
17
16
  module V1
18
17
  DotNetProject = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetProject").msgclass
18
+ DotNetBuildArgs = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.DotNetBuildArgs").msgclass
19
19
  Project = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Project").msgclass
20
20
  CommandRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.CommandRequest").msgclass
21
21
  Command = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("makit.v1.Command").msgclass
@@ -1,26 +1,25 @@
1
- # Generated by the protocol buffer compiler. DO NOT EDIT!
2
- # Source: lib/makit/v1/makit.v1.proto for package 'makit.v1'
3
-
4
- require 'grpc'
5
- require_relative 'makit.v1_pb'
6
-
7
- module Makit
8
- module V1
9
- module CommandService
10
- # Service to execute commands on devices.
11
- class Service
12
-
13
- include ::GRPC::GenericService
14
-
15
- self.marshal_class_method = :encode
16
- self.unmarshal_class_method = :decode
17
- self.service_name = 'makit.v1.CommandService'
18
-
19
- # Execute a command on a device.
20
- rpc :Execute, ::Makit::V1::CommandRequest, ::Makit::V1::Command
21
- end
22
-
23
- Stub = Service.rpc_stub_class
24
- end
25
- end
26
- end
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: lib/makit/v1/makit.v1.proto for package 'makit.v1'
3
+
4
+ require "grpc"
5
+ require_relative "makit.v1_pb"
6
+
7
+ module Makit
8
+ module V1
9
+ module CommandService
10
+ # Service to execute commands on devices.
11
+ class Service
12
+ include ::GRPC::GenericService
13
+
14
+ self.marshal_class_method = :encode
15
+ self.unmarshal_class_method = :decode
16
+ self.service_name = "makit.v1.CommandService"
17
+
18
+ # Execute a command on a device.
19
+ rpc :Execute, ::Makit::V1::CommandRequest, ::Makit::V1::Command
20
+ end
21
+
22
+ Stub = Service.rpc_stub_class
23
+ end
24
+ end
25
+ end
data/lib/makit/version.rb CHANGED
@@ -1,12 +1,12 @@
1
- # frozen_string_literal: true
2
-
3
- module Makit
4
- VERSION = "0.0.0"
5
-
6
- class Version
7
- # given an array of version strings, return the highest version
8
- def self.get_highest_version(versions)
9
- versions.sort { |a, b| Gem::Version.new(a) <=> Gem::Version.new(b) }.last
10
- end
11
- end
12
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Makit
4
+ VERSION = "0.0.2"
5
+
6
+ class Version
7
+ # given an array of version strings, return the highest version
8
+ def self.get_highest_version(versions)
9
+ versions.sort { |a, b| Gem::Version.new(a) <=> Gem::Version.new(b) }.last
10
+ end
11
+ end
12
+ end
data/lib/makit/wix.rb CHANGED
@@ -1,92 +1,95 @@
1
- require "securerandom"
2
-
3
- module Makit
4
- # This class provide methods for working with the Nuget package cache
5
- #
6
- # Example:
7
- #
8
- # Makit::Directory.cache("Google.Protobuf", "3.27.2")
9
- #
10
- # dotnet nuget locals all --list
11
- # dotnet nuget locals all --clear
12
- #
13
- class Wix
14
- def self.setup
15
- if (Makit::Environment.is_windows?)
16
- # test if dotnet is installed
17
- if !Makit::DotNet::is_installed? # !File.exist?(Makit::Environment.which("dotnet"))
18
- puts "dotnet does not appear to be installed"
19
- else
20
- "dotnet tool install --global wix".run
21
- puts " Wix version " + "#{Wix::version}".colorize(:green)
22
- # display the link to https://wixtoolset.org/
23
- puts " https://wixtoolset.org/".colorize(:green)
24
- # display the link to https://marketplace.visualstudio.com/items?itemName=FireGiant.FireGiantHeatWaveDev17
25
- puts " https://marketplace.visualstudio.com/items?itemName=FireGiant.FireGiantHeatWaveDev17".colorize(:green)
26
- end
27
- else
28
- puts "Wix is not supported on non-Windows platforms"
29
- end
30
- end
31
-
32
- def self.version
33
- `wix --version`.strip.split("+").first
34
- end
35
-
36
- def self.setup_package(name, path, files)
37
- # create the path if it does not exist
38
- FileUtils.mkdir_p(path) unless File.directory?(path)
39
- # create the #{name}.wixproj file
40
- File.open("#{path}/#{name}.wixproj", "w") do |f|
41
- f.puts "<Project Sdk=\"WixToolset.Sdk/#{Wix::version}\">"
42
- f.puts "</Project>"
43
- end
44
- # create the Package.wxs file
45
- File.open("#{path}/Package.wxs", "w") do |f|
46
- f.puts "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">"
47
- f.puts " <Package Name=\"#{name}\" Manufacturer=\"Acme\" Version=\"0.0.0.0\" UpgradeCode=\"#{SecureRandom.uuid}\">"
48
- #f.puts " <MajorUpgrade DowngradeErrorMessage=\"!(loc.DowngradeError)\" />"
49
- f.puts " <Files Include=\"#{files}\" />"
50
- #f.puts " <Feature Id=\"Main\">"
51
- #f.puts " <ComponentGroupRef Id=\"Components\" />"
52
- #f.puts " </Feature>"
53
- f.puts " </Package>"
54
- f.puts "</Wix>"
55
- end
56
- end
57
- end # class Wix
58
- end # module Makit
59
-
60
- # Package.wxs with File harvesting
61
- #<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
62
- # <Package Name="MyProduct" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="B0B15C00-1DC4-0374-A1D1-E902240936D5">
63
- # <Files Include="path\to\files\**" />
64
- # </Package>
65
- #</Wix>
66
-
67
- #<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
68
- # <Package Name="Msi.Demo" Manufacturer="Acme" Version="1.0.0.0" UpgradeCode="a87571ec-8be3-447e-ae23-b3a94a85b727">
69
- # <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
70
-
71
- # <Feature Id="Main">
72
- # <ComponentGroupRef Id="Components" />
73
- # </Feature>
74
- # </Package>
75
- #</Wix>
76
-
77
- #<Project Sdk="WixToolset.Sdk/5.0.1">
78
- #</Project>
79
-
80
- # Components.wxs
81
- #<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
82
- # <Fragment>
83
- # <ComponentGroup Id="Components" Directory="INSTALLFOLDER">
84
- # <Component Guid="b8085fb3-3718-46df-8bf6-ecf9f968dd3d">
85
- # <File Source="../../artifacts/Msi.Demo.exe" />
86
- # <File Source="../../artifacts/Msi.Demo.dll" />
87
- # <File Source="../../artifacts/Msi.Demo.deps.json" />
88
- # <File Source="../../artifacts/Msi.Demo.runtimeconfig.json" />
89
- # </Component>
90
- # </ComponentGroup>
91
- # </Fragment>
92
- #</Wix>
1
+ require "securerandom"
2
+
3
+ module Makit
4
+ # This class provide methods for working with the Nuget package cache
5
+ #
6
+ # Example:
7
+ #
8
+ # Makit::Directory.cache("Google.Protobuf", "3.27.2")
9
+ #
10
+ # dotnet nuget locals all --list
11
+ # dotnet nuget locals all --clear
12
+ #
13
+ class Wix
14
+ def self.setup
15
+ if (Makit::Environment.is_windows?)
16
+ # test if dotnet is installed
17
+ if !Makit::DotNet::is_installed? # !File.exist?(Makit::Environment.which("dotnet"))
18
+ puts "dotnet does not appear to be installed"
19
+ else
20
+ # test if wix is already installed
21
+ if !`dotnet tool list --global`.include?("wix")
22
+ "dotnet tool install --global wix".run
23
+ end
24
+ puts " Wix version " + "#{Wix::version}".colorize(:green)
25
+ # display the link to https://wixtoolset.org/
26
+ puts " https://wixtoolset.org/".colorize(:green)
27
+ # display the link to https://marketplace.visualstudio.com/items?itemName=FireGiant.FireGiantHeatWaveDev17
28
+ puts " https://marketplace.visualstudio.com/items?itemName=FireGiant.FireGiantHeatWaveDev17".colorize(:green)
29
+ end
30
+ else
31
+ puts "Wix is not supported on non-Windows platforms"
32
+ end
33
+ end
34
+
35
+ def self.version
36
+ `wix --version`.strip.split("+").first
37
+ end
38
+
39
+ def self.setup_package(name, path, files)
40
+ # create the path if it does not exist
41
+ FileUtils.mkdir_p(path) unless File.directory?(path)
42
+ # create the #{name}.wixproj file
43
+ File.open("#{path}/#{name}.wixproj", "w") do |f|
44
+ f.puts "<Project Sdk=\"WixToolset.Sdk/#{Wix::version}\">"
45
+ f.puts "</Project>"
46
+ end
47
+ # create the Package.wxs file
48
+ File.open("#{path}/Package.wxs", "w") do |f|
49
+ f.puts "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">"
50
+ f.puts " <Package Name=\"#{name}\" Manufacturer=\"Acme\" Version=\"0.0.0.0\" UpgradeCode=\"#{SecureRandom.uuid}\">"
51
+ #f.puts " <MajorUpgrade DowngradeErrorMessage=\"!(loc.DowngradeError)\" />"
52
+ f.puts " <Files Include=\"#{files}\" />"
53
+ #f.puts " <Feature Id=\"Main\">"
54
+ #f.puts " <ComponentGroupRef Id=\"Components\" />"
55
+ #f.puts " </Feature>"
56
+ f.puts " </Package>"
57
+ f.puts "</Wix>"
58
+ end
59
+ end
60
+ end # class Wix
61
+ end # module Makit
62
+
63
+ # Package.wxs with File harvesting
64
+ #<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
65
+ # <Package Name="MyProduct" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="B0B15C00-1DC4-0374-A1D1-E902240936D5">
66
+ # <Files Include="path\to\files\**" />
67
+ # </Package>
68
+ #</Wix>
69
+
70
+ #<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
71
+ # <Package Name="Msi.Demo" Manufacturer="Acme" Version="1.0.0.0" UpgradeCode="a87571ec-8be3-447e-ae23-b3a94a85b727">
72
+ # <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
73
+
74
+ # <Feature Id="Main">
75
+ # <ComponentGroupRef Id="Components" />
76
+ # </Feature>
77
+ # </Package>
78
+ #</Wix>
79
+
80
+ #<Project Sdk="WixToolset.Sdk/5.0.1">
81
+ #</Project>
82
+
83
+ # Components.wxs
84
+ #<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
85
+ # <Fragment>
86
+ # <ComponentGroup Id="Components" Directory="INSTALLFOLDER">
87
+ # <Component Guid="b8085fb3-3718-46df-8bf6-ecf9f968dd3d">
88
+ # <File Source="../../artifacts/Msi.Demo.exe" />
89
+ # <File Source="../../artifacts/Msi.Demo.dll" />
90
+ # <File Source="../../artifacts/Msi.Demo.deps.json" />
91
+ # <File Source="../../artifacts/Msi.Demo.runtimeconfig.json" />
92
+ # </Component>
93
+ # </ComponentGroup>
94
+ # </Fragment>
95
+ #</Wix>
data/lib/makit/zip.rb CHANGED
@@ -1,17 +1,17 @@
1
- # frozen_string_literal: true
2
-
3
- require "zip"
4
- require "fileutils"
5
-
6
- module Makit
7
- # Zip a directory
8
- class Zip
9
- def self.zip_directory(directory, zip_file)
10
- ::Zip::File.open(zip_file, ::Zip::File::CREATE) do |zipfile|
11
- Dir[File.join(directory, "**", "**")].each do |file|
12
- zipfile.add(file.sub("#{directory}/", ""), file)
13
- end
14
- end
15
- end
16
- end
17
- end
1
+ # frozen_string_literal: true
2
+
3
+ require "zip"
4
+ require "fileutils"
5
+
6
+ module Makit
7
+ # Zip a directory
8
+ class Zip
9
+ def self.zip_directory(directory, zip_file)
10
+ ::Zip::File.open(zip_file, ::Zip::File::CREATE) do |zipfile|
11
+ Dir[File.join(directory, "**", "**")].each do |file|
12
+ zipfile.add(file.sub("#{directory}/", ""), file)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end