erhu 0.1.8 → 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: 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