erhu 0.1.9 → 0.1.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: effacda7257f189d3c30347c41dfad2ac24be6bb118177f3d0f8255e322c3304
4
- data.tar.gz: 3d7316750b2ad60f0381e7adc361a92f16577d0715c7352f5067e88177a7dbcc
3
+ metadata.gz: b2b54c925dbff1ea4c1b885d4941dd736c6cc8a6be6efeb5b32590c81e54cf06
4
+ data.tar.gz: 6f565172d5728ccf9610f79beb25baf59b48103ae0baab8d1d4c85e2749f744c
5
5
  SHA512:
6
- metadata.gz: 5f501481fc3001590e11cbaad5a3a4aab581b8897e97594926da3650b224a1d5841b972887540cd50b934d051f26fc51c22d371261ca2acae6b85d1f7e84cdb5
7
- data.tar.gz: b25282c0fe08383fbdc3b513544775573481b1cd3cc0b5f6cbedc8f74ca70fc2f2e4d38d8df38c744479f38f20c2ba7a5065240e4b421b01f75f2765bc425748
6
+ metadata.gz: ecf3bff1ce932df65807a9d2de315695ebdac3949ad8854e700cb736704b21563db930f9ac978fbe5bfa34bd9c4e6ba3d91508b804644bd020e5502cb1c03bbc
7
+ data.tar.gz: edd37e9c4d8d97b2ac78db95e34454a127cbea7fe89015f838fb3581049956ccac92413a7c1b01557bb6af73f5a3a24a3bcb6e9297410f41cb6a2fbe162a9706
data/ErhuFile CHANGED
@@ -1,3 +1,4 @@
1
1
  target "./thirdparty"
2
2
  # git "https://github.com/Tencent/rapidjson", tag: "v1.1.0"
3
- package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", name: "cjson"
3
+ # package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", name: "cjson"
4
+ package "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-17/wasi-sdk-17.0-macos.tar.gz", name: "wasi"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- erhu (0.1.8)
4
+ erhu (0.1.9)
5
5
  dotenv (~> 2.8, >= 2.8.1)
6
6
  down (~> 5.0)
7
7
  git (~> 1.18)
data/README.md CHANGED
@@ -9,6 +9,9 @@
9
9
 
10
10
  一个创新的包管理,可以用来管理C语言的包,或者管理算法的包,理论可以用在各种地方,目前主要支持C++,算法管理。
11
11
 
12
+ ## 更行记录
13
+ - 0.1.10 增加对tar.gz的支持,如果是编译工具且有文件链接,必须采用 tar.gz
14
+
12
15
  ## install
13
16
  ```
14
17
  gem install erhu
@@ -80,6 +83,9 @@ package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", nam
80
83
  # 该方法使用TTY::Spinner库来显示进度条,并通过调用Zip::File库中的方法来解压缩zip文件。
81
84
  # 它迭代zip文件中的每个条目,并使用条目名称中的信息来构造目标路径。
82
85
  unzip(package_file_path, "./libs/cjson")
86
+
87
+ # 解压tar.gz
88
+ ungzip(tar_gz_archive, destination)
83
89
  end
84
90
  ```
85
91
 
data/lib/erhu/app.rb CHANGED
@@ -64,13 +64,20 @@ module Erhu
64
64
  error! e
65
65
  end
66
66
 
67
- def package(package_url, name: nil, &block)
67
+ def package(package_url, name: nil, extension: nil, &block)
68
68
  raise "package url is required" if package_url.blank?
69
69
  raise "name: 'package name' is required" if name.blank?
70
-
70
+
71
+ _extension = extract_extension(package_url)
72
+ if _extension == ".zip" or _extension == ".tar.gz"
73
+ extension ||= _extension
74
+ else
75
+ extension ||= ".zip"
76
+ end
77
+
71
78
  package_name = name
72
79
  package_hex = name.unpack('H*').first
73
- package_file_path = "#{@erhu_path}/#{package_name}-#{package_hex}.zip"
80
+ package_file_path = "#{@erhu_path}/#{package_name}-#{package_hex}#{extension}"
74
81
 
75
82
  if File.exist?(package_file_path)
76
83
  puts "ignored #{package_url}"
@@ -96,7 +103,8 @@ module Erhu
96
103
  return
97
104
  end
98
105
 
99
- self.zip(package_file_path, package_name)
106
+ self.zip(package_file_path, package_name) if extension == ".zip"
107
+ ungzip(package_file_path, File.join(@target, package_name)) if extension == ".tar.gz"
100
108
  end
101
109
 
102
110
  def zip(package_file_path, package_name)
data/lib/erhu/init.rb CHANGED
@@ -12,6 +12,9 @@ require 'git'
12
12
  require 'optparse'
13
13
  require "down/http"
14
14
  require 'dotenv'
15
+ require 'rubygems/package'
16
+ require 'zlib'
17
+ require 'uri'
15
18
 
16
19
  class Object
17
20
  def blank?
@@ -52,6 +55,37 @@ def unzip(zip_file_path, target_directory)
52
55
  spinner.stop("Done!")
53
56
  end
54
57
 
58
+ def ungzip(tar_gz_archive, destination)
59
+ spinner = TTY::Spinner.new("[:spinner] extracted :title ...")
60
+ spinner.auto_spin
61
+ Gem::Package::TarReader.new( Zlib::GzipReader.open tar_gz_archive) do |tar|
62
+ dest = nil
63
+ tar.each do |entry|
64
+ spinner.update title: entry.full_name
65
+ if entry.full_name == '././@LongLink'
66
+ dest = File.join destination, entry.read.strip
67
+ next
68
+ end
69
+ dest ||= File.join destination, entry.full_name.split('/')[1..-1].join('/')
70
+ if entry.directory?
71
+ FileUtils.rm_rf dest unless File.directory? dest
72
+ FileUtils.mkdir_p dest, :mode => entry.header.mode, :verbose => false
73
+ elsif entry.file?
74
+ FileUtils.rm_rf dest unless File.file? dest
75
+ File.open dest, "wb" do |f|
76
+ f.print entry.read
77
+ end
78
+ FileUtils.chmod entry.header.mode, dest, :verbose => false
79
+ elsif entry.header.typeflag == '2' #Symlink!
80
+ File.symlink entry.header.linkname, dest
81
+ end
82
+ dest = nil
83
+ end
84
+ end
85
+ spinner.update title: "ALL"
86
+ spinner.stop("Done!")
87
+ end
88
+
55
89
  def http
56
90
  http = Down::Http.new
57
91
  end
@@ -75,4 +109,15 @@ class Cmd
75
109
  rescue => e
76
110
  error! e
77
111
  end
112
+ end
113
+
114
+ def extract_extension(url)
115
+ uri = URI.parse(url)
116
+ path = uri.path
117
+
118
+ if path.end_with?('.tar.gz')
119
+ '.tar.gz'
120
+ else
121
+ File.extname(path)
122
+ end
78
123
  end
data/lib/erhu/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Erhu
4
- VERSION = "0.1.9"
4
+ VERSION = "0.1.10"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erhu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - MJ
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-30 00:00:00.000000000 Z
11
+ date: 2023-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tty-platform