thug 0.1.2 → 0.2.0
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 +4 -4
- data/README.md +18 -17
- data/lib/thug.rb +0 -4
- data/lib/thug/cli.rb +56 -3
- data/lib/thug/gem_detector.rb +1 -1
- data/lib/thug/http_client.rb +1 -1
- data/lib/thug/installer.rb +4 -4
- data/lib/thug/platform/platform_detector.rb +18 -1
- data/lib/thug/version.rb +1 -1
- data/thug.gemspec +5 -5
- metadata +19 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2f51e917bb4972ca4099565696f516b4b27ad6a
|
4
|
+
data.tar.gz: 9b83c8f28d1129902434ae98fdac09581fa5ac0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4fa6be44aa5e01cfe24ec591309446b53adf34d95a8cdc3528b9712e9ce331ff78517a70a8a79d8d2e3ac09776623bbb033c9aa0dd8d8d45a93d96a7634f970
|
7
|
+
data.tar.gz: 15611a8f02cce23f1b80bd9ebedb6da5790b1fd3c592a7b2a03e54a551f6dff8acd432e6b789ba5fcbaa3ba2fbe8da1b618a2aee88b9a3eb77a429efa772b664
|
data/README.md
CHANGED
@@ -1,38 +1,39 @@
|
|
1
1
|
# Thug
|
2
2
|
|
3
|
-
|
3
|
+
Thug resolves all the system level dependencies for you project, by generating the "Gemfile.lock" it fetches the needed dependencies and proceeds to install it.
|
4
4
|
|
5
|
-
|
5
|
+
# Dependencies
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
* [Json](https://rubygems.org/gems/json): for parsing json responses.
|
8
|
+
* [Ohai](https://github.com/opscode/ohai): to detect platform, platform version.
|
9
|
+
* [Thor](https://github.com/erikhuda/thor): for command-line utlilties.
|
10
10
|
|
11
|
-
```ruby
|
12
|
-
gem 'thug'
|
13
|
-
```
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
$ bundle
|
12
|
+
## Installation
|
18
13
|
|
19
|
-
|
14
|
+
Install the gem via terminal using:
|
20
15
|
|
21
16
|
$ gem install thug
|
22
17
|
|
23
18
|
## Usage
|
24
19
|
|
25
|
-
|
20
|
+
Navigate to ruby project then run thug list to list all needed system dependencies:
|
21
|
+
|
22
|
+
$ thug list
|
23
|
+
|
24
|
+
To install dependencies run
|
25
|
+
|
26
|
+
$ thug install
|
26
27
|
|
27
28
|
## Development
|
28
29
|
|
29
|
-
|
30
|
+
Checkout the project and run
|
30
31
|
|
31
|
-
|
32
|
+
$ gem build thug.gemspec
|
32
33
|
|
33
34
|
## Contributing
|
34
35
|
|
35
|
-
|
36
|
+
Thug gem relies on users to keep its system dependencies list up to date, Bug reports and pull requests are welcome on here. or you can [Sign up](http://13.15.15.166:1337/register) at [Thug-Gem](http://13.15.15.166:1337)Thug-gem and start adding gems/dependencies.
|
36
37
|
|
37
38
|
## License
|
38
39
|
|
@@ -40,4 +41,4 @@ The gem is available as open source under the terms of the [MIT License](http://
|
|
40
41
|
|
41
42
|
## Code of Conduct
|
42
43
|
|
43
|
-
Everyone interacting in the Thug project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
44
|
+
Everyone interacting in the Thug project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/sherifalaa55/thug/blob/master/CODE_OF_CONDUCT.md).
|
data/lib/thug.rb
CHANGED
data/lib/thug/cli.rb
CHANGED
@@ -10,12 +10,12 @@ module Thug
|
|
10
10
|
default_task :list
|
11
11
|
|
12
12
|
desc 'thug list', 'lists system dependencies in current project'
|
13
|
-
def list(
|
13
|
+
def list()
|
14
14
|
# detect gem file and create/update gem .lock file
|
15
15
|
gem_detector = Thug::GemDetector.new
|
16
16
|
|
17
17
|
unless gem_detector.has_gem?
|
18
|
-
raise
|
18
|
+
raise "No Gemfile was found in the current directory"
|
19
19
|
end
|
20
20
|
|
21
21
|
# list gems in current project
|
@@ -39,9 +39,62 @@ module Thug
|
|
39
39
|
|
40
40
|
end
|
41
41
|
|
42
|
+
if !dependencies.empty?
|
43
|
+
puts "The following system packages are required by your project."
|
44
|
+
puts dependencies
|
45
|
+
else
|
46
|
+
puts "No system packages are needed."
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
rescue => ex
|
51
|
+
$stderr.puts ex.message
|
52
|
+
end
|
53
|
+
|
54
|
+
desc 'thug install', 'lists system dependencies in current project and installs them via package manager'
|
55
|
+
def install()
|
56
|
+
# detect gem file and create/update gem .lock file
|
57
|
+
gem_detector = Thug::GemDetector.new
|
58
|
+
|
59
|
+
unless gem_detector.has_gem?
|
60
|
+
raise "No Gemfile was found in the current directory"
|
61
|
+
end
|
62
|
+
|
63
|
+
# list gems in current project
|
64
|
+
current_gems = gem_detector.list_gems
|
65
|
+
|
66
|
+
# detect current os, platform and package manager
|
67
|
+
platform_detector = Thug::PlatformDetector.new
|
68
|
+
|
69
|
+
platform = platform_detector.get_platform
|
70
|
+
os = platform_detector.get_os
|
71
|
+
|
72
|
+
# check internet
|
73
|
+
utils = Thug::Utils.new
|
74
|
+
|
75
|
+
if utils.internet?
|
76
|
+
# if connected, request system dependencies
|
77
|
+
client = Thug::HttpClient.new
|
78
|
+
dependencies = client.get_dependencies platform, current_gems
|
79
|
+
else
|
80
|
+
# if not, get system dependencies from local file
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
if !dependencies.empty?
|
85
|
+
puts "The following system packages are required by your project."
|
86
|
+
puts dependencies
|
87
|
+
else
|
88
|
+
puts "No system packages are needed."
|
89
|
+
end
|
90
|
+
|
42
91
|
# run install command to install dependencies
|
92
|
+
pkg_manager = platform_detector.get_package_manager platform
|
43
93
|
installer = Thug::Installer.new
|
44
|
-
|
94
|
+
puts "installing dependencies via #{pkg_manager}"
|
95
|
+
|
96
|
+
installer.install_dependencies(pkg_manager, dependencies)
|
97
|
+
|
45
98
|
rescue => ex
|
46
99
|
$stderr.puts ex.message
|
47
100
|
end
|
data/lib/thug/gem_detector.rb
CHANGED
data/lib/thug/http_client.rb
CHANGED
@@ -5,7 +5,7 @@ module Thug
|
|
5
5
|
class HttpClient
|
6
6
|
|
7
7
|
def get_dependencies platform, gems
|
8
|
-
uri = URI('http://
|
8
|
+
uri = URI('http://13.95.24.166:1337/dependencies')
|
9
9
|
res = Net::HTTP.post_form(uri, 'gems[]' => gems, 'platform' => platform)
|
10
10
|
deps = JSON.parse(res.body)
|
11
11
|
dependencies = deps.map do |dep|
|
data/lib/thug/installer.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
module Thug
|
2
2
|
class Installer
|
3
3
|
|
4
|
-
def install_dependencies dependencies
|
5
|
-
dependencies.
|
6
|
-
|
7
|
-
|
4
|
+
def install_dependencies (pkg, dependencies)
|
5
|
+
deps = dependencies.join(" ")
|
6
|
+
|
7
|
+
puts `sudo #{pkg} install #{deps}`
|
8
8
|
end
|
9
9
|
end
|
10
10
|
end
|
@@ -3,8 +3,14 @@ module Thug
|
|
3
3
|
|
4
4
|
# get platform: ubuntu, debian, centos
|
5
5
|
def get_platform
|
6
|
+
|
7
|
+
if(/darwin/i =~ RUBY_PLATFORM)
|
8
|
+
return "mac"
|
9
|
+
end
|
10
|
+
|
6
11
|
platform = `ohai platform`
|
7
12
|
|
13
|
+
|
8
14
|
if platform =~ /ubuntu/i
|
9
15
|
platform = "ubuntu"
|
10
16
|
elsif platform =~ /debian/i
|
@@ -27,7 +33,18 @@ module Thug
|
|
27
33
|
|
28
34
|
# returns package manager of current platform
|
29
35
|
def get_package_manager platform
|
30
|
-
|
36
|
+
case platform
|
37
|
+
when "ubuntu"
|
38
|
+
pkg = "apt-get"
|
39
|
+
when "debian"
|
40
|
+
pkg = "apt-get"
|
41
|
+
when "centos"
|
42
|
+
pkg = "yum"
|
43
|
+
when "mac"
|
44
|
+
pkg = "brew"
|
45
|
+
end
|
46
|
+
|
47
|
+
pkg
|
31
48
|
end
|
32
49
|
|
33
50
|
|
data/lib/thug/version.rb
CHANGED
data/thug.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["sherif"]
|
10
10
|
spec.email = ["sherif.alaa55@gmail.com"]
|
11
11
|
|
12
|
-
spec.summary = "A thug gem that
|
12
|
+
spec.summary = "A thug gem that installs all the system level dependencies for you."
|
13
13
|
spec.description = "lists all the system level dependencies for you ruby project."
|
14
14
|
spec.homepage = "https://www.github.com"
|
15
15
|
spec.license = "MIT"
|
@@ -37,8 +37,8 @@ Gem::Specification.new do |spec|
|
|
37
37
|
spec.add_development_dependency "rake", "~> 10.0"
|
38
38
|
spec.add_development_dependency "rspec", "~> 3.0"
|
39
39
|
|
40
|
-
spec.add_runtime_dependency "ohai"
|
41
|
-
spec.add_runtime_dependency "thor"
|
42
|
-
spec.add_runtime_dependency "bundler"
|
43
|
-
spec.add_runtime_dependency "json"
|
40
|
+
spec.add_runtime_dependency "ohai", '~> 13.5'
|
41
|
+
spec.add_runtime_dependency "thor", '~> 0.20.0'
|
42
|
+
spec.add_runtime_dependency "bundler", '~> 1.15'
|
43
|
+
spec.add_runtime_dependency "json", '~> 2.1'
|
44
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sherif
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -56,58 +56,58 @@ dependencies:
|
|
56
56
|
name: ohai
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '13.5'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '13.5'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: thor
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 0.20.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 0.20.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: bundler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '1.15'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '1.15'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: json
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '2.1'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '2.1'
|
111
111
|
description: lists all the system level dependencies for you ruby project.
|
112
112
|
email:
|
113
113
|
- sherif.alaa55@gmail.com
|
@@ -160,5 +160,5 @@ rubyforge_project:
|
|
160
160
|
rubygems_version: 2.6.13
|
161
161
|
signing_key:
|
162
162
|
specification_version: 4
|
163
|
-
summary: A thug gem that
|
163
|
+
summary: A thug gem that installs all the system level dependencies for you.
|
164
164
|
test_files: []
|