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 +4 -4
- data/ErhuFile +2 -1
- data/Gemfile.lock +1 -1
- data/README.md +6 -0
- data/lib/erhu/app.rb +12 -4
- data/lib/erhu/init.rb +45 -0
- data/lib/erhu/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2b54c925dbff1ea4c1b885d4941dd736c6cc8a6be6efeb5b32590c81e54cf06
|
4
|
+
data.tar.gz: 6f565172d5728ccf9610f79beb25baf59b48103ae0baab8d1d4c85e2749f744c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
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}
|
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
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.
|
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-
|
11
|
+
date: 2023-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tty-platform
|