mgemfile 0.1.3
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 +7 -0
- data/.gitignore +12 -0
- data/README.md +21 -0
- data/Rakefile +2 -0
- data/bin/mgemfile +47 -0
- data/lib/help.yaml +8 -0
- data/lib/mgemfile.rb +98 -0
- data/lib/mgemfile/version.rb +3 -0
- data/mgemfile.gemspec +32 -0
- metadata +98 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fc5b1e97d4152ce660a83f9c13558b2bd71e258c
|
4
|
+
data.tar.gz: 6204c3ff1ebc98b533f0dda4d95e7b9ec375204c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1c527abdb210649ee561eab6561afa025bc0b8848d27f3097763ac26217993d923fdf05948a6195471bf140448f22f232b84b79ab73735c00d49d6ef2da80519
|
7
|
+
data.tar.gz: a18139d58a32169b2a04ce0b77b16c78979281b7cf438d6b26167eb18aeebdd64778dc34b9e23e533b5f76efd50c48de4ddb3f7a38eb0fd4977ce0dd21cf9042
|
data/.gitignore
ADDED
data/README.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
##Description:
|
2
|
+
mgemfile is a CLI Gemfile manager, add,remove gems to any environment and "bundle install" in one CLI.
|
3
|
+
## Installation
|
4
|
+
$ gem install mgemfile
|
5
|
+
|
6
|
+
## Usage
|
7
|
+
### Commands: init,add, (to-do)remove
|
8
|
+
|
9
|
+
|
10
|
+
####Creating Gemfile sourced by rubygems.org
|
11
|
+
$ mgemfile init
|
12
|
+
|
13
|
+
####Adding gem(s) for all enviromnet and bundle install
|
14
|
+
$ mgemfile add gem-name
|
15
|
+
|
16
|
+
####Adding gem(s) for specified enviroment and bundle install
|
17
|
+
$ mgemfile add gem-name --development --test
|
18
|
+
|
19
|
+
## License
|
20
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
21
|
+
|
data/Rakefile
ADDED
data/bin/mgemfile
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require_relative "../lib/mgemfile"
|
3
|
+
require 'thor'
|
4
|
+
require 'yaml'
|
5
|
+
module Mgemfile
|
6
|
+
|
7
|
+
class Base < Thor
|
8
|
+
desc "init","intialize gemfile"
|
9
|
+
def init
|
10
|
+
gem_file_init
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "help","Describe every command"
|
14
|
+
def help
|
15
|
+
#gem_file_init.help
|
16
|
+
puts data_help = <<EOC
|
17
|
+
Usage: \nmgemfile <Command>\n\n
|
18
|
+
Description: mgemfile is a CLI Gemfile manager, add,remove gems to any environment and bundle your installation in one CLI.\n\n
|
19
|
+
Commands: init,add, (to-do)remove\n\n
|
20
|
+
init: creating Gemfile in the current direcotry and sourced using rubygems\n\n
|
21
|
+
add gem-name(s): Adding specified gem(s) to the Gemfile and run <bundle install>\nExample:- mgemfile add rspec --development --test\n\n
|
22
|
+
Note: You can specify multiple environments in the gem(s) installing proccess\nExample:- mgemfile add rspec capybara --development --test\n\n
|
23
|
+
More info: https://github.com/khaledmohammedfares/mgemfile
|
24
|
+
EOC
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "add","Adding new gem"
|
28
|
+
option :development
|
29
|
+
option :test
|
30
|
+
option :production
|
31
|
+
def add *gems
|
32
|
+
unless options.empty?
|
33
|
+
gem_file_init.add_grouped_gems gems,options
|
34
|
+
else
|
35
|
+
gem_file_init.add_gems gems
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
def gem_file_init
|
41
|
+
gemfile = GemFileHandler.new
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
Mgemfile::Base.start ARGV
|
data/lib/help.yaml
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
Usage: \nmgemfile <SubCommand>\n\n
|
2
|
+
Description: mgemfile is a CLI gemFile manager, add,remove gems to any enviroment and bundle your installation in one CLI.\n\n
|
3
|
+
SubCommands: init,add,remove\n\n
|
4
|
+
init: creating Gemfile in the current direcotry and sourced using rubygems
|
5
|
+
add gem-name(s): Adding specified gem(s) to the Gemfile and run <bundle install>\nExample:- mgemfile add rspec capybara --development --test\n\n
|
6
|
+
remove gem-name(s): Removing specified gem(s) from gemFile and run <bundle install>\nEcample:- mgemfile remove rspec capybara --development --test\n\n
|
7
|
+
Note: You can specify multiple enviroments in the gem(s) installing proccess\nExample:- mgemfile add cucumber rspec --development --test --production\n\n
|
8
|
+
More info: Github/wiki.com
|
data/lib/mgemfile.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
require "mgemfile/version"
|
2
|
+
module Mgemfile
|
3
|
+
class GemFileHandler
|
4
|
+
attr_reader :current_Gemfile_path
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@current_Gemfile_path = "#{Dir.pwd}/Gemfile"
|
8
|
+
initialize_Gemfile
|
9
|
+
end
|
10
|
+
|
11
|
+
def help
|
12
|
+
path_to_module = %x[gem path mgemfile]
|
13
|
+
path_to_lib = /.+lib/.match(path_to_module)
|
14
|
+
yaml_help_path = "#{path_to_lib}/help.yaml"
|
15
|
+
data_help = YAML.load_file(yaml_help_path)
|
16
|
+
data_help.each do |key,val|
|
17
|
+
puts "#{key} #{val}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
def add_gems gems
|
21
|
+
gem_file_iterator gems do |gems|
|
22
|
+
gems.each do |gem|
|
23
|
+
add_gem(gem)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def add_grouped_gems gems,options
|
29
|
+
gem_file_iterator gems do |gems|
|
30
|
+
option = ""
|
31
|
+
options.keys.each do |group|
|
32
|
+
option << ":#{group},"
|
33
|
+
end
|
34
|
+
option = option[0...-1]
|
35
|
+
full_group = ""
|
36
|
+
gems.each {|gem| full_group << "\n gem \"#{gem}\""}
|
37
|
+
File.open("Gemfile","a+") do |i|
|
38
|
+
i.write("\ngroup #{option} do\n#{full_group}\nend")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
def initialize_Gemfile
|
45
|
+
create_Gemfile
|
46
|
+
add_source
|
47
|
+
end
|
48
|
+
|
49
|
+
def create_Gemfile
|
50
|
+
#system "touch 'Gemfile'"
|
51
|
+
FileUtils.touch 'Gemfile' unless File.exist?("#{current_Gemfile_path}/Gemfile")
|
52
|
+
end
|
53
|
+
def add_source site="https://rubygems.org/"
|
54
|
+
gemHandler = File.open(current_Gemfile_path,"a+")
|
55
|
+
gemHandler.write("source \"#{site}\"\n") unless sourced?
|
56
|
+
gemHandler.close
|
57
|
+
end
|
58
|
+
|
59
|
+
def sourced?
|
60
|
+
sourced = nil
|
61
|
+
lines = File.open(current_Gemfile_path).read
|
62
|
+
lines.each_line do |line|
|
63
|
+
sourced ||= source_exists_in?(line)
|
64
|
+
end
|
65
|
+
sourced
|
66
|
+
end
|
67
|
+
|
68
|
+
def source_exists_in? line
|
69
|
+
true unless (/^[\w\s]*source\s*(\"|\')(https?):\/\/rubygems\.org\/?\s*(\"|\')/.match(line.to_s).nil?)
|
70
|
+
end
|
71
|
+
def lines
|
72
|
+
File.open("Gemfile").read
|
73
|
+
end
|
74
|
+
|
75
|
+
def gem_file_iterator gems
|
76
|
+
gems_to_install = []
|
77
|
+
gems.each do |gem|
|
78
|
+
exist = nil
|
79
|
+
lines.each_line do |line|
|
80
|
+
exist ||= true unless (/#{gem}/.match(line).nil?)
|
81
|
+
end
|
82
|
+
gems_to_install << gem unless exist
|
83
|
+
end
|
84
|
+
unless gems_to_install.count == 0
|
85
|
+
yield(gems_to_install)
|
86
|
+
system "bundle install"
|
87
|
+
else
|
88
|
+
puts "=====Gem(s) #{gems} already exist(s) in Gemfile====="
|
89
|
+
end
|
90
|
+
end
|
91
|
+
#Will be refactoed to add_gems gems method.
|
92
|
+
def add_gem(gem)
|
93
|
+
File.open("Gemfile","a+") do |i|
|
94
|
+
i.write("\ngem '#{gem}'")
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
data/mgemfile.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'mgemfile/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "mgemfile"
|
7
|
+
spec.version = Mgemfile::VERSION
|
8
|
+
spec.authors = ["khaled0fares"]
|
9
|
+
spec.email = ["kfares29@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = %q{CLI manager for Gemfile}
|
12
|
+
spec.description = %q{Add,Remove gem(s) and "bundle install" in a single CLI}
|
13
|
+
spec.homepage = "https://github.com/khaledmohammedfares/mgemfile"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
17
|
+
# delete this section to allow pushing this gem to any host.
|
18
|
+
=begin if spec.respond_to?(:metadata)
|
19
|
+
spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
20
|
+
else
|
21
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
22
|
+
end
|
23
|
+
=end
|
24
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
25
|
+
spec.bindir = ["bin"]
|
26
|
+
spec.executables = ["mgemfile"]#spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.add_development_dependency "bundler", "~> 1.11"
|
30
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
31
|
+
spec.add_runtime_dependency "thor", "0.19.1"
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mgemfile
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- khaled0fares
|
8
|
+
autorequire:
|
9
|
+
bindir:
|
10
|
+
- bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2016-01-05 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.11'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.11'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '10.0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '10.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: thor
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 0.19.1
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.19.1
|
56
|
+
description: Add,Remove gem(s) and "bundle install" in a single CLI
|
57
|
+
email:
|
58
|
+
- kfares29@gmail.com
|
59
|
+
executables:
|
60
|
+
- mgemfile
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- ".gitignore"
|
65
|
+
- Gemfile
|
66
|
+
- LICENSE.txt
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
69
|
+
- bin/mgemfile
|
70
|
+
- lib/help.yaml
|
71
|
+
- lib/mgemfile.rb
|
72
|
+
- lib/mgemfile/version.rb
|
73
|
+
- mgemfile.gemspec
|
74
|
+
homepage: https://github.com/khaledmohammedfares/mgemfile
|
75
|
+
licenses:
|
76
|
+
- MIT
|
77
|
+
metadata: {}
|
78
|
+
post_install_message:
|
79
|
+
rdoc_options: []
|
80
|
+
require_paths:
|
81
|
+
- lib
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
requirements: []
|
93
|
+
rubyforge_project:
|
94
|
+
rubygems_version: 2.4.5.1
|
95
|
+
signing_key:
|
96
|
+
specification_version: 4
|
97
|
+
summary: CLI manager for Gemfile
|
98
|
+
test_files: []
|