syslibgem 0.1.1 → 0.1.3

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
  SHA1:
3
- metadata.gz: c44275ac6cad0da93606abbfa831b9c7f0c38515
4
- data.tar.gz: 5ee5c624e9b1a37201caac4ae35b13967709a8eb
3
+ metadata.gz: 24834ca2cc0d69c81006520934c4f5d120abd2a2
4
+ data.tar.gz: fa511f21615b969d6c944bfa0a63e4318c373f88
5
5
  SHA512:
6
- metadata.gz: 16a3062ce047197af47ccf0513101abd62f1d7587a16801501f150ce82f0c0e9c06d056b06bd7b2c8bb05c89a48c614a69289d65d9953b1f5643565764b4ea69
7
- data.tar.gz: 77166d1fcbff040df13138e59e2e88e004d2458263cc5e9a4e1ceab31da2cdd89e48d584eff01178d16d7be32d3124d300471ff23eba338b42cbaccdab3e3786
6
+ metadata.gz: a36395336f0b9c4c4dcc3f19b0a574b3b8346fd423fe1824090a5a6c93e3f2c7a0487d8d6fdc358bc76d0ca3b60bacd17bb963790d44cd2b99285857dbfffdf5
7
+ data.tar.gz: 8a1734fd43d6b224bd45abf0bc4a09470b229d1a47c8676412637dd339cdb832c7bba9ad61b30bdb42d8b0362afb69e4c3608d8bee61fcb2af9f0f7326ec86ab
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in syslibgem.gemspec
6
6
  gemspec
data/Gemfile.lock CHANGED
@@ -1,13 +1,34 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- syslibgem (0.1.0)
4
+ syslibgem (0.1.2)
5
+ bundler (~> 1.16.a)
6
+ colorize
7
+ httparty
8
+ json
9
+ os
5
10
  thor (~> 0.20)
6
11
 
7
12
  GEM
8
13
  remote: https://rubygems.org/
9
14
  specs:
15
+ ast (2.3.0)
16
+ colorize (0.8.1)
10
17
  diff-lcs (1.3)
18
+ httparty (0.15.6)
19
+ multi_xml (>= 0.5.2)
20
+ json (2.1.0)
21
+ mini_portile2 (2.3.0)
22
+ multi_xml (0.6.0)
23
+ nokogiri (1.8.1)
24
+ mini_portile2 (~> 2.3.0)
25
+ os (1.0.0)
26
+ parallel (1.12.0)
27
+ parser (2.4.0.0)
28
+ ast (~> 2.2)
29
+ powerpack (0.1.1)
30
+ rainbow (2.2.2)
31
+ rake
11
32
  rake (10.5.0)
12
33
  rspec (3.7.0)
13
34
  rspec-core (~> 3.7.0)
@@ -22,15 +43,25 @@ GEM
22
43
  diff-lcs (>= 1.2.0, < 2.0)
23
44
  rspec-support (~> 3.7.0)
24
45
  rspec-support (3.7.0)
46
+ rubocop (0.51.0)
47
+ parallel (~> 1.10)
48
+ parser (>= 2.3.3.1, < 3.0)
49
+ powerpack (~> 0.1)
50
+ rainbow (>= 2.2.2, < 3.0)
51
+ ruby-progressbar (~> 1.7)
52
+ unicode-display_width (~> 1.0, >= 1.0.1)
53
+ ruby-progressbar (1.9.0)
25
54
  thor (0.20.0)
55
+ unicode-display_width (1.3.0)
26
56
 
27
57
  PLATFORMS
28
58
  ruby
29
59
 
30
60
  DEPENDENCIES
31
- bundler (~> 1.16.a)
61
+ nokogiri
32
62
  rake (~> 10.0)
33
63
  rspec (~> 3.0)
64
+ rubocop (~> 0.51.0)
34
65
  syslibgem!
35
66
 
36
67
  BUNDLED WITH
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "syslibgem"
3
+ require 'bundler/setup'
4
+ require 'syslibgem'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "syslibgem"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
data/exe/syslibgem CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "syslibgem"
3
+ require 'syslibgem'
4
4
 
5
5
  Syslibgem::CLI.start(ARGV)
@@ -0,0 +1,36 @@
1
+ require 'httparty'
2
+ require 'json'
3
+ require 'os'
4
+
5
+ # This class handel the server requests
6
+ class Server
7
+ include HTTParty
8
+
9
+ $uri = 'https://desolate-refuge-66236.herokuapp.com'
10
+ # $URI = 'http://localhost:3000'
11
+
12
+ def self.create(gem, deps)
13
+ json = { gem_name: gem, os_name: find_os, deps: deps }
14
+ HTTParty.post(
15
+ $URI + '/api/v1/deps',
16
+ body: json.to_json,
17
+ headers: { 'Content-Type' => 'application/json',
18
+ 'Accept' => 'application/json' }
19
+ )
20
+ end
21
+
22
+ def self.load(gems)
23
+ json = { gems: gems, os_name: find_os }
24
+ HTTParty.get($URI + '/api/v1/deps', query: json)
25
+ end
26
+
27
+ def self.find_os
28
+ if OS.mac?
29
+ 'mac'
30
+ elsif OS.linux?
31
+ 'lunix'
32
+ else
33
+ 'unknown'
34
+ end
35
+ end
36
+ end
@@ -1,3 +1,3 @@
1
1
  module Syslibgem
2
- VERSION = "0.1.1"
2
+ VERSION = '0.1.3'.freeze
3
3
  end
data/lib/syslibgem.rb CHANGED
@@ -1,15 +1,80 @@
1
- require "syslibgem/version"
1
+ require 'syslibgem/version'
2
+ require 'syslibgem/server'
2
3
  require 'syslibgem'
3
4
  require 'thor'
5
+ require 'colorize'
6
+ require 'bundler'
4
7
 
5
8
  module Syslibgem
9
+ # The user cli usin thor
6
10
  class CLI < Thor
7
- desc "hello [name]", "say my name"
8
- def hello(name)
9
- if name == "Heisenberg"
10
- puts "you are goddman right"
11
+ desc 'show', 'show required system libraries'
12
+ def show
13
+ gems = Bundler.load.specs.map(&:name)
14
+ respose = Server.load(gems)
15
+ libraries = respose['data']['dependencies']
16
+ unknown = respose['data']['unknown']
17
+ os_name = Server.find_os
18
+ system_libraries_install(os_name, libraries)
19
+ ask_to_learn(unknown)
20
+ end
21
+ desc 'system_libraries_install', 'handel instalation'
22
+ def system_libraries_install(os_name, libraries)
23
+ puts 'Your system needs to install these libraries
24
+ to be able to run bundle install'.yellow
25
+ puts libraries.join(', ').red
26
+ if os_name == 'lunix'
27
+ install_lunix(libraries)
28
+ elsif os_name == 'mac'
29
+ install_mac(libraries)
30
+ else
31
+ abort 'sorry your os is not supported'.red
32
+ end
33
+ end
34
+ desc 'install_lunix', 'install list of system libraries'
35
+ def install_lunix(libraries)
36
+ libraries.each do |pkg|
37
+ puts "Do you want to install #{pkg} library? (y/n)".blue
38
+ system("sudo apt-get -y install #{pkg}") if input
39
+ end
40
+ end
41
+ desc 'install_mac', 'install list of system libraries'
42
+ def install_mac(libraries)
43
+ libraries.each do |pkg|
44
+ puts "Do you want to install #{pkg} library? (y/n)".blue
45
+ system("bower install #{pkg} --no-interactive") if input
46
+ end
47
+ end
48
+ desc 'ask_to_learn', 'asks the user to teach the gem'
49
+ def ask_to_learn(gems)
50
+ puts 'I don\'t know about these gems would
51
+ you like to help me? (y/n)'.yellow
52
+ puts gems.join(', ').red
53
+ learn(gems) if input
54
+ end
55
+ desc 'learn', 'let the user to introduce gems dependencies'
56
+ def learn(gems)
57
+ gems.each do |gem|
58
+ puts "Do you want teach me #{gem} libraries? (y/n)".blue
59
+ push_new_gem(gem) if input
60
+ end
61
+ end
62
+ desc 'push_new_gem', 'teachs the servers a new gem'
63
+ def push_new_gem(gem)
64
+ puts 'add the dependencies names sperated by comma'.blue
65
+ STDOUT.flush
66
+ line = STDIN.gets.chomp
67
+ deps = line.delete(' ').split(',')
68
+ Server.create(gem, deps) unless deps.empty?
69
+ end
70
+ desc 'input', 'reads user input'
71
+ def input
72
+ STDOUT.flush
73
+ input = STDIN.gets.chomp
74
+ if 'yY'.include? input
75
+ true
11
76
  else
12
- puts "say my name"
77
+ false
13
78
  end
14
79
  end
15
80
  end
data/syslibgem.gemspec CHANGED
@@ -1,31 +1,36 @@
1
1
 
2
- lib = File.expand_path("../lib", __FILE__)
2
+ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "syslibgem/version"
4
+ require 'syslibgem/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "syslibgem"
7
+ spec.name = 'syslibgem'
8
8
  spec.version = Syslibgem::VERSION
9
- spec.authors = ["abdelkarim00"]
10
- spec.email = ["kimoacm@gmail.com"]
11
-
12
- spec.summary = %q{Write a short summary, because RubyGems requires one.}
13
- spec.description = %q{Write a longer description or delete this line.}
14
- spec.homepage = "https://github.com/abdelkarim00/syslibgem"
15
- spec.license = "MIT"
9
+ spec.authors = ['abdelkarim00']
10
+ spec.email = ['kimoacm@gmail.com']
16
11
 
12
+ spec.summary = '{Write a short summary, because RubyGems requires one.}'
13
+ spec.description = '{Write a longer description or delete this line.}'
14
+ spec.homepage = 'https://github.com/abdelkarim00/syslibgem'
15
+ spec.license = 'MIT'
17
16
 
18
17
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
18
  f.match(%r{^(test|spec|features)/})
20
19
  end
21
- spec.bindir = "exe"
20
+ spec.bindir = 'exe'
22
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
- spec.require_paths = ["lib"]
22
+ spec.require_paths = ['lib']
24
23
 
25
- spec.add_dependency "thor", "~> 0.20"
24
+ spec.add_dependency 'bundler'
25
+ spec.add_dependency 'colorize'
26
+ spec.add_dependency 'httparty'
27
+ spec.add_dependency 'json'
28
+ spec.add_dependency 'os'
29
+ spec.add_dependency 'thor', '~> 0.20'
26
30
 
27
- spec.add_development_dependency "bundler", "~> 1.16.a"
28
- spec.add_development_dependency "rake", "~> 10.0"
29
- spec.add_development_dependency "rspec", "~> 3.0"
30
- spec.add_development_dependency "syslibgem"
31
+ spec.add_development_dependency 'nokogiri'
32
+ spec.add_development_dependency 'rake', '~> 10.0'
33
+ spec.add_development_dependency 'rspec', '~> 3.0'
34
+ spec.add_development_dependency 'rubocop', '~> 0.51.0'
35
+ spec.add_development_dependency 'syslibgem'
31
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syslibgem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - abdelkarim00
@@ -10,6 +10,76 @@ bindir: exe
10
10
  cert_chain: []
11
11
  date: 2017-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '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'
27
+ - !ruby/object:Gem::Dependency
28
+ name: colorize
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: httparty
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: json
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: os
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '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'
13
83
  - !ruby/object:Gem::Dependency
14
84
  name: thor
15
85
  requirement: !ruby/object:Gem::Requirement
@@ -25,19 +95,19 @@ dependencies:
25
95
  - !ruby/object:Gem::Version
26
96
  version: '0.20'
27
97
  - !ruby/object:Gem::Dependency
28
- name: bundler
98
+ name: nokogiri
29
99
  requirement: !ruby/object:Gem::Requirement
30
100
  requirements:
31
- - - "~>"
101
+ - - ">="
32
102
  - !ruby/object:Gem::Version
33
- version: 1.16.a
103
+ version: '0'
34
104
  type: :development
35
105
  prerelease: false
36
106
  version_requirements: !ruby/object:Gem::Requirement
37
107
  requirements:
38
- - - "~>"
108
+ - - ">="
39
109
  - !ruby/object:Gem::Version
40
- version: 1.16.a
110
+ version: '0'
41
111
  - !ruby/object:Gem::Dependency
42
112
  name: rake
43
113
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +136,20 @@ dependencies:
66
136
  - - "~>"
67
137
  - !ruby/object:Gem::Version
68
138
  version: '3.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.51.0
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.51.0
69
153
  - !ruby/object:Gem::Dependency
70
154
  name: syslibgem
71
155
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +164,7 @@ dependencies:
80
164
  - - ">="
81
165
  - !ruby/object:Gem::Version
82
166
  version: '0'
83
- description: Write a longer description or delete this line.
167
+ description: "{Write a longer description or delete this line.}"
84
168
  email:
85
169
  - kimoacm@gmail.com
86
170
  executables:
@@ -101,6 +185,7 @@ files:
101
185
  - bin/setup
102
186
  - exe/syslibgem
103
187
  - lib/syslibgem.rb
188
+ - lib/syslibgem/server.rb
104
189
  - lib/syslibgem/version.rb
105
190
  - syslibgem.gemspec
106
191
  homepage: https://github.com/abdelkarim00/syslibgem
@@ -126,5 +211,5 @@ rubyforge_project:
126
211
  rubygems_version: 2.6.14
127
212
  signing_key:
128
213
  specification_version: 4
129
- summary: Write a short summary, because RubyGems requires one.
214
+ summary: "{Write a short summary, because RubyGems requires one.}"
130
215
  test_files: []