mgemfile 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ **/.DS_Store
11
+ Gemfile
12
+ LICENSE.txt
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
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ task :default => :spec
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
@@ -0,0 +1,3 @@
1
+ module Mgemfile
2
+ VERSION = "0.1.3"
3
+ 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: []