erhu 0.1.3 → 0.1.5

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: 227adb4306e0ba58bcd720a8bcefa6ff095a549120691e12caf82ed5617f45d3
4
- data.tar.gz: 9c513925800b676c24a3416260d852123d5a513cad06a340e2b8e082387a0ca1
3
+ metadata.gz: 825a09bb2a8491c0d8a761c46a186be8c584e7e9b07c529de6c3ed462000fd08
4
+ data.tar.gz: e1cabbaa754f6b8b3e894c67af432a65b0dfc702ee48671ef9dbf71d012481f6
5
5
  SHA512:
6
- metadata.gz: 9dbcbd06bc4f7d18aff1493648b50b832426b7c39b4276a489c1c1318d46fe145af501c9361361d090957c8f6252be1d3cf112beb93fe368746d0ca4061370b5
7
- data.tar.gz: c13fb491276df6ea20c70d1572ec245f7afed0be2ac1244380d00dc11d0b7eff3168fb5c9eeff869730a211d57c3ea0e75387e937803d34e8b2de6d943e47ae1
6
+ metadata.gz: 8ab03cada045123a1db0363084204d43fc478f7189b7e4fbbdc83eadf444d469bbe6f8e9ba4f3c35614a009c2b6ca577a1cfbbb2fdb71eca6a1638f00703cdc9
7
+ data.tar.gz: 0bfeda9e72ccf4cdb29dc8e74bb5e1dadf0a5dbfdfbd464b3b191e93121f330f2dd6766d608afde101dde2a1597ee587a56948dcd6def9699f5fa52f69d92dca
data/Gemfile CHANGED
@@ -6,14 +6,14 @@ source "https://rubygems.org"
6
6
  gemspec
7
7
 
8
8
  gem "rake", "~> 13.0"
9
- gem 'tty-platform'
10
- gem "tty-command"
11
- gem "tty-progressbar"
12
- gem "tty-spinner"
9
+ # gem 'tty-platform'
10
+ # gem "tty-command"
11
+ # gem "tty-progressbar"
12
+ # gem "tty-spinner"
13
13
 
14
- gem "pastel"
15
- gem "rugged"
14
+ # gem "pastel"
15
+ # gem "rugged"
16
16
 
17
- gem 'faraday'
18
- gem 'faraday-follow_redirects'
19
- gem 'rubyzip'
17
+ # gem 'faraday'
18
+ # gem 'faraday-follow_redirects'
19
+ # gem 'rubyzip'
data/Gemfile.lock CHANGED
@@ -1,23 +1,43 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- erhu (0.1.1)
4
+ erhu (0.1.4)
5
+ faraday (~> 2.7, >= 2.7.4)
6
+ faraday-follow_redirects (~> 0.3.0)
7
+ git (~> 1.18)
8
+ pastel (~> 0.8.0)
9
+ rubyzip (~> 2.3, >= 2.3.2)
10
+ tty-command (~> 0.10.1)
11
+ tty-platform (~> 0.3.0)
12
+ tty-progressbar (~> 0.18.2)
13
+ tty-spinner (~> 0.9.3)
5
14
 
6
15
  GEM
7
16
  remote: https://rubygems.org/
8
17
  specs:
18
+ addressable (2.8.1)
19
+ public_suffix (>= 2.0.2, < 6.0)
20
+ coderay (1.1.3)
9
21
  faraday (2.7.4)
10
22
  faraday-net_http (>= 2.0, < 3.1)
11
23
  ruby2_keywords (>= 0.0.4)
12
24
  faraday-follow_redirects (0.3.0)
13
25
  faraday (>= 1, < 3)
14
26
  faraday-net_http (3.0.2)
27
+ git (1.18.0)
28
+ addressable (~> 2.8)
29
+ rchardet (~> 1.8)
30
+ method_source (1.0.0)
15
31
  pastel (0.8.0)
16
32
  tty-color (~> 0.5)
33
+ pry (0.14.2)
34
+ coderay (~> 1.1)
35
+ method_source (~> 1.0)
36
+ public_suffix (5.0.1)
17
37
  rake (13.0.6)
38
+ rchardet (1.8.0)
18
39
  ruby2_keywords (0.0.5)
19
40
  rubyzip (2.3.2)
20
- rugged (1.6.2)
21
41
  strings-ansi (0.2.0)
22
42
  tty-color (0.6.0)
23
43
  tty-command (0.10.1)
@@ -36,19 +56,13 @@ GEM
36
56
 
37
57
  PLATFORMS
38
58
  arm64-darwin-22
59
+ ruby
60
+ x86_64-linux
39
61
 
40
62
  DEPENDENCIES
41
63
  erhu!
42
- faraday
43
- faraday-follow_redirects
44
- pastel
64
+ pry
45
65
  rake (~> 13.0)
46
- rubyzip
47
- rugged
48
- tty-command
49
- tty-platform
50
- tty-progressbar
51
- tty-spinner
52
66
 
53
67
  BUNDLED WITH
54
68
  2.4.6
data/README.md CHANGED
@@ -7,9 +7,11 @@
7
7
  gem install erhu
8
8
  ```
9
9
 
10
+ 注意:你的系统必须有cmake和pkg-config,mac用户可以用homebrew安装
11
+
10
12
  ## 如何使用
11
13
 
12
- 在根目录里面建立`ErhuFile`,用于拉取依赖
14
+ 在根目录里面建立`ErhuFile`, 当前也可以使用`erhu init`用于拉取依赖
13
15
 
14
16
  ```ruby
15
17
  target "./thirdparty"
data/erhu.gemspec CHANGED
@@ -30,6 +30,16 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ["lib"]
32
32
 
33
+ spec.add_dependency "tty-platform", '~> 0.3.0'
34
+ spec.add_dependency 'tty-command', '~> 0.10.1'
35
+ spec.add_dependency 'tty-progressbar', '~> 0.18.2'
36
+ spec.add_dependency 'tty-spinner', '~> 0.9.3'
37
+ spec.add_dependency 'pastel', '~> 0.8.0'
38
+ spec.add_dependency 'git', '~> 1.18'
39
+ spec.add_dependency 'faraday', '~> 2.7', '>= 2.7.4'
40
+ spec.add_dependency 'faraday-follow_redirects', '~> 0.3.0'
41
+ spec.add_dependency 'rubyzip', '~> 2.3', '>= 2.3.2'
42
+
33
43
  # Uncomment to register a new dependency of your gem
34
44
  # spec.add_dependency "example-gem", "~> 1.0"
35
45
 
data/exe/erhu CHANGED
@@ -4,4 +4,4 @@
4
4
  require "bundler/setup"
5
5
  require_relative "../lib/erhu"
6
6
 
7
- Erhu::App.new.run
7
+ Erhu.cli
data/lib/erhu/app.rb CHANGED
@@ -40,26 +40,25 @@ module Erhu
40
40
  FileUtils.rm_rf("#{@target}/#{name}")
41
41
  end
42
42
 
43
- bar = TTY::ProgressBar.new("clone #{name} [:bar] :percent", total: 50)
44
- transfer_progress = lambda do |total_objects, indexed_objects, received_objects, local_objects, total_deltas, indexed_deltas, received_bytes|
45
- bar.ratio = indexed_objects / total_objects.to_f
46
- end
47
-
48
- repo = Rugged::Repository.clone_at(repository_url,
49
- "#{@target}/#{name}",
50
- depth: 1,
51
- checkout_branch: branch,
52
- transfer_progress: transfer_progress
53
- )
54
- if ! tag.blank? && ! repo.tags[tag].blank?
55
- tag_repo = repo.tags[tag]
56
- target = tag_repo.target
57
- repo.checkout(target.oid, strategy: :safe)
43
+ warn!("Do not use Git for version control without careful consideration.")
44
+
45
+ spinner = TTY::Spinner.new("[:spinner] git clone #{repository_url} ...")
46
+ spinner.auto_spin
47
+ repo = Git.clone(repository_url, "#{@target}/#{name}", branch: branch)
48
+ unless tag.blank?
49
+
50
+ tags = repo.tags
51
+ if tags.map { |tag| tag.name }.include?(tag)
52
+ commit_id = tags.select { |node| node.name == tag }.first.objectish
53
+ repo.checkout(tag, start_point: commit_id, new_branch: true)
54
+ end
58
55
  end
56
+ spinner.stop("Done!")
57
+
59
58
  block.call(repo, self) unless block.blank?
60
59
 
61
- self.database[name] = {repository_url: repository_url,
62
- branch: branch, name: name, tag: tag, commit: repo.head.target.oid
60
+ self.database[name] = {repository_url: repository_url,
61
+ branch: branch, name: name, tag: tag, commit: repo.revparse('HEAD')
63
62
  }
64
63
  rescue => e
65
64
  error! e
@@ -108,6 +107,7 @@ module Erhu
108
107
 
109
108
  def zip(package_file_path, package_name)
110
109
  spinner = TTY::Spinner.new("[:spinner] extracted :title ...", format: :pulse_2)
110
+ spinner.auto_spin
111
111
 
112
112
  Zip::File.open(package_file_path) do |zip_file|
113
113
  zip_file.each do |entry|
data/lib/erhu/cli.rb ADDED
@@ -0,0 +1,58 @@
1
+ module Erhu
2
+ module_function
3
+ def cli()
4
+ options = {}
5
+ subcommands = {}
6
+
7
+ OptionParser.new do |opts|
8
+ opts.banner = "Usage: erhu [command]"
9
+
10
+ opts.on("-h", "--help", "Prints help") do
11
+ puts """
12
+ erhu init -> init your project
13
+ erhu install(options) -> install your project depends
14
+ """
15
+ exit
16
+ end
17
+
18
+ # Define global options here
19
+
20
+ end.parse!
21
+
22
+ subcommands['init'] = Proc.new do |args|
23
+ File.open("Erhufile", "w") do |f|
24
+ f.puts 'target "./thirdparty"'
25
+ f.puts 'git "https://github.com/Tencent/rapidjson", tag: "v1.1.0"'
26
+ f.puts 'package "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.15.zip", name: "cjson"'
27
+ end
28
+
29
+ # Create Rakefile
30
+ File.open("Rakefile", "w") do |f|
31
+ f.puts 'require "erhu"'
32
+ f.puts
33
+ f.puts 'task :build do |t|'
34
+ f.puts ' Cmd.new().chdir("./build")'
35
+ f.puts ' .run("cmake", "..")'
36
+ f.puts ' .run("make")'
37
+ f.puts 'end'
38
+ f.puts
39
+ f.puts 'task run: [:build] do |t|'
40
+ f.puts ' Cmd.new().chdir("./target").run("./Erhu")'
41
+ f.puts 'end'
42
+ end
43
+ end
44
+
45
+ subcommands['install'] = Proc.new do |args|
46
+ Erhu::App.new.run
47
+ end
48
+
49
+ if ARGV.blank?
50
+ Erhu::App.new.run
51
+ elsif subcommands.key?(ARGV.first)
52
+ subcommands[ARGV.first].call(ARGV[1..-1])
53
+ else
54
+ puts "Invalid command. Use -h or --help for usage information."
55
+ end
56
+
57
+ end
58
+ end
data/lib/erhu/init.rb CHANGED
@@ -4,13 +4,14 @@ require "tty-progressbar"
4
4
  require "tty-spinner"
5
5
  require "pastel"
6
6
  require 'fileutils'
7
- require 'rugged'
8
7
  require "uri"
9
8
  require 'yaml'
10
9
  require 'faraday'
11
10
  require 'faraday/follow_redirects'
12
11
  require 'tempfile'
13
12
  require 'zip'
13
+ require 'git'
14
+ require 'optparse'
14
15
 
15
16
  class Object
16
17
  def blank?
@@ -28,12 +29,17 @@ end
28
29
 
29
30
  def error!(*args)
30
31
  error = pastel.red.bold.detach
31
- puts "error: #{error.(*args)}"
32
+ puts "Error: #{error.(*args)}"
33
+ end
34
+
35
+ def warn!(*args)
36
+ warning = pastel.yellow.detach
37
+ puts "Warning: #{warning.(*args)}"
32
38
  end
33
39
 
34
40
  class Cmd
35
- def initialize(pty: true, uuid: false, color: true)
36
- @cmd = TTY::Command.new(pty: pty, uuid: uuid, color: color)
41
+ def initialize(pty: true, uuid: false, color: true, printer: :pretty)
42
+ @cmd = TTY::Command.new(pty: pty, uuid: uuid, color: color, pretty: printer)
37
43
  end
38
44
 
39
45
  def chdir(path)
@@ -50,4 +56,4 @@ class Cmd
50
56
  rescue => e
51
57
  error! e
52
58
  end
53
- end
59
+ 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.3"
4
+ VERSION = "0.1.5"
5
5
  end
data/lib/erhu.rb CHANGED
@@ -2,6 +2,7 @@
2
2
  require_relative "erhu/init"
3
3
  require_relative "erhu/version"
4
4
  require_relative "erhu/app"
5
+ require_relative "erhu/cli"
5
6
 
6
7
  module Erhu
7
8
  class Error < StandardError; end
metadata CHANGED
@@ -1,15 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erhu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
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-24 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2023-03-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: tty-platform
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.3.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.3.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: tty-command
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.10.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.10.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: tty-progressbar
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.18.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.18.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: tty-spinner
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.3
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.9.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: pastel
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.8.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.8.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: git
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.18'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.18'
97
+ - !ruby/object:Gem::Dependency
98
+ name: faraday
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.7'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 2.7.4
107
+ type: :runtime
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '2.7'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 2.7.4
117
+ - !ruby/object:Gem::Dependency
118
+ name: faraday-follow_redirects
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: 0.3.0
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: 0.3.0
131
+ - !ruby/object:Gem::Dependency
132
+ name: rubyzip
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '2.3'
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: 2.3.2
141
+ type: :runtime
142
+ prerelease: false
143
+ version_requirements: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - "~>"
146
+ - !ruby/object:Gem::Version
147
+ version: '2.3'
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: 2.3.2
13
151
  description: Erhu 是一个动态可编程的包管理系统
14
152
  email:
15
153
  - tywf91@gmail.com
@@ -26,6 +164,7 @@ files:
26
164
  - exe/erhu
27
165
  - lib/erhu.rb
28
166
  - lib/erhu/app.rb
167
+ - lib/erhu/cli.rb
29
168
  - lib/erhu/init.rb
30
169
  - lib/erhu/version.rb
31
170
  - sig/erhu.rbs