erhu 0.1.3 → 0.1.5

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: 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