Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

erhu

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

erhu

  • 0.1.10
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Erhu

RubyGems Version

一个创新的包管理,可以用来管理C语言的包,或者管理算法的包,理论可以用在各种地方,目前主要支持C++,算法管理。

更行记录

  • 0.1.10 增加对tar.gz的支持,如果是编译工具且有文件链接,必须采用 tar.gz

install

gem install erhu

如何使用

在根目录里面建立ErhuFile, 当前也可以使用erhu init用于拉取依赖

target "./thirdparty"
git "https://github.com/Tencent/rapidjson", tag: "v1.1.0"
git "https://github.com/DaveGamble/cJSON", tag: "v1.7.15"
git "https://github.com/catchorg/Catch2", tag: "v3.3.2"

package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", name: "cjson"

然后就在项目目录中使用 erhu 命令即可拉取对应的代码

示例项目可以看 demo 目录

注意事项

  1. 请不要随便用git来做依赖管理
  2. package只支持zip压缩包,暂时没有计划做其他
  3. ErhuFile着色采用ruby编程语言即可,同时整个文件均可执行ruby脚本
  4. 判断系统安装对应的包,请看高级用法的系统判断
  5. 下载后可以有高级使用办法,比如进入里面继续cmake等等,具体请看高级用法的安装后处理

高级用法

项目环境变量使用

erhu 集成了dotenv,支持项目中通过.env来指定环境变量,具体可以查看demo目录中的.env文件 .env文件中的环境变量在 Rakefileerhu exec 中可以使用

系统判断

# platform.windows?  # => false
# platform.unix?     # => true
# platform.linux?    # => false
# platform.mac?      # => true
if platform.windows?
  package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", name: "cjson"
end

安装后处理

警告一般不建议这么做,而是采用Rakefile的方式来做处理

# 方法定义 git(repository_url, branch: nil, name: nil, tag: nil, &block) 
git "https://github.com/Tencent/rapidjson", tag: "v1.1.0" do |repo, env|
  # repo 的接口请看 https://rubydoc.info/gems/git/Git/Base
  # env 的接口请看 https://github.com/mjason/erhu/blob/main/lib/erhu/app.rb
  # 还有一些高级接口 https://github.com/mjason/erhu/blob/main/lib/erhu/init.rb
end

# 方法定义 package(package_url, name: nil, &block)
package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", name: "cjson" do |package_file_path, env|
  # package_file_path 下载包的地址,String类型,你得自己解压
  # env 同上

  # 解压示例
  # 
  # zip_file_path: String类型,包含要解压缩的zip文件的路径
  # target_directory: String类型,包含要提取zip文件的位置
  #
  # 该方法使用TTY::Spinner库来显示进度条,并通过调用Zip::File库中的方法来解压缩zip文件。
  # 它迭代zip文件中的每个条目,并使用条目名称中的信息来构造目标路径。
  unzip(package_file_path, "./libs/cjson")

  # 解压tar.gz
  ungzip(tar_gz_archive, destination)
end

具体使用案例,可以查看项目里的 demo 目录

总结

这是一个很灵活的包管理,希望你用的开心,开源协议MIT

FAQs

Package last updated on 31 Mar 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc