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