erhu 0.1.8 → 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: aece6b3c18dbb9b1584bc2d2adb64afe0ba93c39a724260309eb9bba98d77ce7
4
- data.tar.gz: e8f1179dfebb0dbcb879b52f345195834be61ffa91c86ffbe476c14e1bd5c23c
3
+ metadata.gz: b2b54c925dbff1ea4c1b885d4941dd736c6cc8a6be6efeb5b32590c81e54cf06
4
+ data.tar.gz: 6f565172d5728ccf9610f79beb25baf59b48103ae0baab8d1d4c85e2749f744c
5
5
  SHA512:
6
- metadata.gz: 0c435ed69d9ad03f55d1d25eefd24330993a39bc1507129f26e1dbfe2bc6b1e9a67154eaa5aa8d822d25aff97e4bcfdfba6b4abe0cf025d6276326ca7b68c7a0
7
- data.tar.gz: 01224f69ceeb3ceb76ce7b959e5e57568b56dea97184e4980016c447ddd12ae7cb1f98892e7e6dcdf2b7cfcd56fd86f801d4d5099917692ced6bcc2e519a3e41
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,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- erhu (0.1.7)
4
+ erhu (0.1.9)
5
+ dotenv (~> 2.8, >= 2.8.1)
5
6
  down (~> 5.0)
6
7
  git (~> 1.18)
7
8
  http (~> 5.0)
@@ -19,6 +20,7 @@ GEM
19
20
  public_suffix (>= 2.0.2, < 6.0)
20
21
  domain_name (0.5.20190701)
21
22
  unf (>= 0.0.5, < 1.0.0)
23
+ dotenv (2.8.1)
22
24
  down (5.4.0)
23
25
  addressable (~> 2.8)
24
26
  ffi (1.15.5)
data/README.md CHANGED
@@ -1,7 +1,17 @@
1
1
  # Erhu
2
2
 
3
+ <div align="left">
4
+ <a href="https://rubygems.org/gems/erhu" alt="RubyGems Version">
5
+ <img src="https://img.shields.io/gem/v/erhu.svg?style=flat-square&label=current-version" alt="RubyGems Version" />
6
+ </a>
7
+ </div>
8
+
9
+
3
10
  一个创新的包管理,可以用来管理C语言的包,或者管理算法的包,理论可以用在各种地方,目前主要支持C++,算法管理。
4
11
 
12
+ ## 更行记录
13
+ - 0.1.10 增加对tar.gz的支持,如果是编译工具且有文件链接,必须采用 tar.gz
14
+
5
15
  ## install
6
16
  ```
7
17
  gem install erhu
@@ -33,6 +43,10 @@ package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", nam
33
43
 
34
44
  ## 高级用法
35
45
 
46
+ ### 项目环境变量使用
47
+ erhu 集成了dotenv,支持项目中通过.env来指定环境变量,具体可以查看demo目录中的.env文件
48
+ .env文件中的环境变量在 `Rakefile` 和 `erhu exec` 中可以使用
49
+
36
50
  ### 系统判断
37
51
 
38
52
  ```ruby
@@ -69,6 +83,9 @@ package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", nam
69
83
  # 该方法使用TTY::Spinner库来显示进度条,并通过调用Zip::File库中的方法来解压缩zip文件。
70
84
  # 它迭代zip文件中的每个条目,并使用条目名称中的信息来构造目标路径。
71
85
  unzip(package_file_path, "./libs/cjson")
86
+
87
+ # 解压tar.gz
88
+ ungzip(tar_gz_archive, destination)
72
89
  end
73
90
  ```
74
91
 
data/demo/.env ADDED
@@ -0,0 +1,2 @@
1
+ WASM_THINKER_SDK="/path/to/wasm-thinker-sdk"
2
+ WASI_TOOLCHAIN_PATH="/path/to/wasi-sdk-17.0"
data/erhu.gemspec CHANGED
@@ -39,6 +39,7 @@ Gem::Specification.new do |spec|
39
39
  spec.add_dependency "down", "~> 5.0"
40
40
  spec.add_dependency "http", "~> 5.0"
41
41
  spec.add_dependency 'rubyzip', '~> 2.3', '>= 2.3.2'
42
+ spec.add_dependency 'dotenv', '~> 2.8', '>= 2.8.1'
42
43
 
43
44
  # Uncomment to register a new dependency of your gem
44
45
  # spec.add_dependency "example-gem", "~> 1.0"
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/cli.rb CHANGED
@@ -11,6 +11,7 @@ module Erhu
11
11
  puts """
12
12
  erhu init -> init your project
13
13
  erhu install(options) -> install your project depends
14
+ erhu exec -> run some shell (add .env to ENV)
14
15
  """
15
16
  exit
16
17
  end
@@ -46,6 +47,10 @@ module Erhu
46
47
  Erhu::App.new.run
47
48
  end
48
49
 
50
+ subcommands['exec'] = Proc.new do |args|
51
+ exec args.join(" ")
52
+ end
53
+
49
54
  if ARGV.blank?
50
55
  Erhu::App.new.run
51
56
  elsif subcommands.key?(ARGV.first)
data/lib/erhu/init.rb CHANGED
@@ -11,6 +11,10 @@ require 'zip'
11
11
  require 'git'
12
12
  require 'optparse'
13
13
  require "down/http"
14
+ require 'dotenv'
15
+ require 'rubygems/package'
16
+ require 'zlib'
17
+ require 'uri'
14
18
 
15
19
  class Object
16
20
  def blank?
@@ -51,6 +55,37 @@ def unzip(zip_file_path, target_directory)
51
55
  spinner.stop("Done!")
52
56
  end
53
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
+
54
89
  def http
55
90
  http = Down::Http.new
56
91
  end
@@ -74,4 +109,15 @@ class Cmd
74
109
  rescue => e
75
110
  error! e
76
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
77
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.8"
4
+ VERSION = "0.1.10"
5
5
  end
data/lib/erhu.rb CHANGED
@@ -7,4 +7,8 @@ require_relative "erhu/cli"
7
7
  module Erhu
8
8
  class Error < StandardError; end
9
9
  # Your code goes here...
10
- end
10
+
11
+ module_eval do
12
+ Dotenv.load
13
+ end
14
+ 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.8
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
@@ -142,6 +142,26 @@ dependencies:
142
142
  - - ">="
143
143
  - !ruby/object:Gem::Version
144
144
  version: 2.3.2
145
+ - !ruby/object:Gem::Dependency
146
+ name: dotenv
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '2.8'
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: 2.8.1
155
+ type: :runtime
156
+ prerelease: false
157
+ version_requirements: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: '2.8'
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: 2.8.1
145
165
  description: Erhu 是一个动态可编程的包管理系统
146
166
  email:
147
167
  - tywf91@gmail.com
@@ -155,6 +175,7 @@ files:
155
175
  - Gemfile.lock
156
176
  - README.md
157
177
  - Rakefile
178
+ - demo/.env
158
179
  - demo/CMakeLists.txt
159
180
  - demo/ErhuFile
160
181
  - demo/Gemfile