envGen 0.1.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 +7 -0
- data/bin/envGen +4 -0
- data/lib/envGen.rb +49 -0
- data/lib/envGen/add_file.rb +100 -0
- data/lib/envGen/add_gem.rb +77 -0
- data/lib/envGen/init.rb +66 -0
- metadata +106 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f38fb593fc1b25f7433ffadc996f260b5bd471d4
|
4
|
+
data.tar.gz: 71b3aa3c2a1023dea360e1cd33d22eb6a0929581
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f3ddb5ae959d2acb1442acdebb29c2b64c43dc26bf52166f6eb7c1fcac2d75202e3b59443e3512b0199a9ea22d0b64231f1315c3ae7388fc4018e23ff0f111cf
|
7
|
+
data.tar.gz: 3b30ca0528162626fc3716077cb11b8d4523acea19007daecff859fb02b7857c7bc78de4bc1175b7082e66b386ebfed32568b354f0e443b39ca46f1ac49de41e
|
data/bin/envGen
ADDED
data/lib/envGen.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require_relative "envGen/add_file.rb"
|
2
|
+
require_relative "envGen/add_gem.rb"
|
3
|
+
require_relative "envGen/init.rb"
|
4
|
+
|
5
|
+
class EnvGen
|
6
|
+
@@options = ["init", "file", "dir", "gem", "help"] # all possible commands
|
7
|
+
|
8
|
+
def self.file
|
9
|
+
ARGV.delete_at(0) # gets rid of "file" to isolate files to add
|
10
|
+
AddFile.multiple(ARGV) # adds files individually
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.dir
|
14
|
+
ARGV.delete_at(0) # gets rid of "dir" to isolate dir to add
|
15
|
+
AddFile.dir(ARGV.first) # adds Ruby files in specified directory
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.newGem
|
19
|
+
ARGV.delete_at(0) # gets rid of "gem" to isolate gems to add
|
20
|
+
if ARGV[0] == "-s" # kicks off search
|
21
|
+
new_gem = AddGem.new(ARGV[1])
|
22
|
+
new_gem.gemSearch # searches for gem specified
|
23
|
+
else
|
24
|
+
ARGV.each do |arg|
|
25
|
+
new_gem = AddGem.new(arg) # creates objects for each gem
|
26
|
+
new_gem.gemEntry
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.parse(input) # handles user input from executable, ARGV[0]
|
32
|
+
if !@@options.include?(input)
|
33
|
+
puts "invalid command"
|
34
|
+
else
|
35
|
+
case input
|
36
|
+
when "init"
|
37
|
+
Init.init # handles environment creation
|
38
|
+
when "file"
|
39
|
+
file
|
40
|
+
when "dir"
|
41
|
+
dir
|
42
|
+
when "gem"
|
43
|
+
newGem
|
44
|
+
when "help"
|
45
|
+
Init.help # displays help message
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'pathname' # to generate relative path
|
2
|
+
require 'find' # to find ruby files within a directory
|
3
|
+
require 'pry'
|
4
|
+
|
5
|
+
class PrepareFile
|
6
|
+
attr_accessor :file, :fileName
|
7
|
+
|
8
|
+
def initialize(file)
|
9
|
+
@file = file
|
10
|
+
@fileName = File.basename(file)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.createIfNotInConfig(file) # creates a files object if not exists
|
14
|
+
if !inConfig?(file)
|
15
|
+
PrepareFile.new(file)
|
16
|
+
else
|
17
|
+
puts "'#{File.basename(file)}' already added"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.inConfig?(file) # looks through environment for fileName; doesn't create an object/instance method because it may not be necessary
|
22
|
+
File.readlines("config/environment.rb").grep(/#{File.basename(file)}/).count > 0
|
23
|
+
end
|
24
|
+
|
25
|
+
def write # adds relative path of file to environment
|
26
|
+
File.open("config/environment.rb", "a") {|env|
|
27
|
+
env.puts "require_relative '#{relativePath}'"
|
28
|
+
}
|
29
|
+
puts "Added '#{fileName}'"
|
30
|
+
end
|
31
|
+
|
32
|
+
def isRuby?
|
33
|
+
File.extname(fileName) == ".rb"
|
34
|
+
end
|
35
|
+
|
36
|
+
def notRuby # handles non-Ruby files
|
37
|
+
puts "'#{fileName}' is not a Ruby (.rb) file. Continue? (Y/N)"
|
38
|
+
answer = gets.chomp.strip
|
39
|
+
if answer == "Y"
|
40
|
+
write
|
41
|
+
else
|
42
|
+
puts "'#{fileName}' not added"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def relativePath # finds file path relative to environment
|
47
|
+
dir = Pathname.new (Dir.pwd + "/config")
|
48
|
+
filePathname = Pathname.new File.absolute_path(file)
|
49
|
+
relative = (filePathname.relative_path_from dir).to_s
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
class AddFile
|
54
|
+
|
55
|
+
def self.single(input) # handles writing files
|
56
|
+
# binding.pry
|
57
|
+
new_file = PrepareFile.createIfNotInConfig(input)
|
58
|
+
if new_file # if not nil
|
59
|
+
# binding.pry
|
60
|
+
if File.file?(new_file.file) # check if file with full path of new_file
|
61
|
+
if new_file.isRuby?
|
62
|
+
new_file.write
|
63
|
+
else
|
64
|
+
new_file.notRuby
|
65
|
+
end
|
66
|
+
else
|
67
|
+
puts "'#{new_file.fileName}' not found"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.multiple(*input) # handles writing files
|
73
|
+
input.flatten.each do |f|
|
74
|
+
single(f)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.findRuby(dir) # find all of the Ruby files in the current dir/sub dirs
|
79
|
+
rubyFiles = []
|
80
|
+
Find.find(dir) do |path|
|
81
|
+
if File.extname(path) == ".rb"
|
82
|
+
rubyFiles << path # and compile a list
|
83
|
+
end
|
84
|
+
end
|
85
|
+
rubyFiles
|
86
|
+
end
|
87
|
+
|
88
|
+
def self.dir(dir) # takes in dir name, adds all Ruby files in dir
|
89
|
+
files = self.findRuby(dir)
|
90
|
+
# binding.pry
|
91
|
+
files.each do |file|
|
92
|
+
if file.include?(".rb") && File.file?(file)
|
93
|
+
self.single(file)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
f = PrepareFile.new("/Users/asiega/Development/immersive/personal-projects/envGen/lib/envGen.rb")
|
100
|
+
f.relativePath
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'pry'
|
2
|
+
|
3
|
+
class AddGem
|
4
|
+
attr_accessor :gemName, :gemsFound
|
5
|
+
|
6
|
+
@@gems = `gem list --remote`.split("\n") # gets updated list of all current RubyGems gems
|
7
|
+
|
8
|
+
def self.gems
|
9
|
+
@@gems
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(input) # input is gem name, called with @gemName
|
13
|
+
@gemName = input
|
14
|
+
end
|
15
|
+
|
16
|
+
def inConfig? # looks through environment for gem
|
17
|
+
# binding.pry
|
18
|
+
File.readlines("config/environment.rb").grep("gem '#{gemName}'\n").count > 0
|
19
|
+
end
|
20
|
+
|
21
|
+
def exactGem?(gemString) # takes in a search term and a gem to match against
|
22
|
+
gemString.split(" ").first == gemName.downcase
|
23
|
+
end
|
24
|
+
|
25
|
+
def gemExists?
|
26
|
+
@@gems.select {|gem| gem.split(" ").first == gemName }.count > 0
|
27
|
+
end
|
28
|
+
|
29
|
+
def write
|
30
|
+
File.open("config/environment.rb", "a") {|env|
|
31
|
+
env.puts "gem '#{gemName}'"
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def writeExactGem
|
36
|
+
write
|
37
|
+
puts "Added '#{gemName}'"
|
38
|
+
end
|
39
|
+
|
40
|
+
def noExactGem
|
41
|
+
puts "No exact match for '#{gemName}' found"
|
42
|
+
puts "Search for partial gem name with 'gem -s [gem]'"
|
43
|
+
end
|
44
|
+
|
45
|
+
def gemEntry # handles gem entry
|
46
|
+
if !inConfig? && gemExists?
|
47
|
+
writeExactGem
|
48
|
+
elsif inConfig? && gemExists? # add gem if doesn't exist
|
49
|
+
puts "'#{gemName}' already added"
|
50
|
+
else
|
51
|
+
noExactGem
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def findPartialNames # partial name search
|
56
|
+
gemsFound = []
|
57
|
+
puts "Searching through #{@@gems.count} gems..."
|
58
|
+
AddGem.gems.each do |gemString| # searching through gems + version numbers
|
59
|
+
if exactGem?(gemString)
|
60
|
+
gemsFound.unshift("** #{gemString}") # highlights exact match
|
61
|
+
elsif gemString.include?(gemName.downcase)
|
62
|
+
gemsFound << gemString
|
63
|
+
end
|
64
|
+
end
|
65
|
+
gemsFound
|
66
|
+
end
|
67
|
+
|
68
|
+
def gemSearch
|
69
|
+
gemsFound = findPartialNames
|
70
|
+
if gemsFound.count == 0
|
71
|
+
puts "No exact match for '#{gemName.downcase}' found"
|
72
|
+
else
|
73
|
+
puts "\nFound #{gemsFound.count} gems:"
|
74
|
+
gemsFound.each {|gem| puts gem}
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/lib/envGen/init.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
class Init
|
2
|
+
|
3
|
+
attr_accessor :config
|
4
|
+
|
5
|
+
def self.usage
|
6
|
+
puts "\nUSAGE:\n envGen [option]"
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.help
|
10
|
+
usage
|
11
|
+
puts "\nOPTIONS:"
|
12
|
+
puts " init : Initialize environment.rb file"
|
13
|
+
puts " file [file], [file] : Add file to environment, e.g. 'lib/test1.rb'"
|
14
|
+
puts " dir [dir] : Add all .rb files in directory to environment"
|
15
|
+
puts " gem [gem], [gem] : Add gem to environment using exact name"
|
16
|
+
puts " gem -s [gem] : Search on partial gem name"
|
17
|
+
puts " help : Display this message \n"
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.init # if not exist: write config directory and environment file
|
21
|
+
puts "INITIALIZING CONFIG/ENVIRONMENT.RB..."
|
22
|
+
puts "\nChecking for 'config' directory:"
|
23
|
+
self.config
|
24
|
+
puts "\nChecking for 'config/environment.rb' file:"
|
25
|
+
self.environment
|
26
|
+
self.headers
|
27
|
+
`atom config/environment.rb`
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def self.config # checks for/creates config directory
|
34
|
+
config = Dir.pwd + "/config"
|
35
|
+
if Dir.exists?(config)
|
36
|
+
puts " Config directory already exists"
|
37
|
+
else
|
38
|
+
Dir.mkdir("config")
|
39
|
+
puts " Created directory '#{config}'"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.environment # checks for/creates environment file
|
44
|
+
env = Dir.pwd + "/config/environment.rb"
|
45
|
+
if File.exists?(env)
|
46
|
+
puts " Environment file already exists"
|
47
|
+
else
|
48
|
+
File.new(env, "w+")
|
49
|
+
puts " Created file '#{env}'"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.headers
|
54
|
+
File.open("config/environment.rb", "w+") {|file|
|
55
|
+
file.puts "# AUTO INSTALL GEMS VIA BUNDLER\nrequire 'bundler'\nBundler.require
|
56
|
+
\n\n# GEM DEPENDENCIES (require [gem])
|
57
|
+
\n\n# FILE DEPENDENCIES (require [file])
|
58
|
+
\n\n#! ACTION: Dependencies to sort"
|
59
|
+
}
|
60
|
+
puts "\nWriting 'environment.rb' file:
|
61
|
+
Added bundler
|
62
|
+
Added gem header
|
63
|
+
Added file header
|
64
|
+
Added to-sort header"
|
65
|
+
end
|
66
|
+
end
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: envGen
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alex Siega
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-05-04 00:00:00.000000000 Z
|
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: '1.11'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description:
|
70
|
+
email:
|
71
|
+
- alexandra.siega@flatironschool.com
|
72
|
+
executables:
|
73
|
+
- envGen
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- bin/envGen
|
78
|
+
- lib/envGen.rb
|
79
|
+
- lib/envGen/add_file.rb
|
80
|
+
- lib/envGen/add_gem.rb
|
81
|
+
- lib/envGen/init.rb
|
82
|
+
homepage: https://github.com/alemosie/envGen
|
83
|
+
licenses:
|
84
|
+
- MIT
|
85
|
+
metadata: {}
|
86
|
+
post_install_message:
|
87
|
+
rdoc_options: []
|
88
|
+
require_paths:
|
89
|
+
- lib
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
requirements: []
|
101
|
+
rubyforge_project:
|
102
|
+
rubygems_version: 2.4.8
|
103
|
+
signing_key:
|
104
|
+
specification_version: 4
|
105
|
+
summary: Generates simple config/environment files for file and gem dependency handling
|
106
|
+
test_files: []
|