erhu 0.1.9 → 0.1.10

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