54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# File 'lib/cli/frameworks.rb', line 54
def detect(path, available_frameworks)
if !File.directory? path
if path.end_with?('.war')
return detect_framework_from_war path
elsif path.end_with?('.zip')
return detect_framework_from_zip path, available_frameworks
elsif available_frameworks.include?(["standalone"])
return Framework.lookup('Standalone')
else
return nil
end
end
Dir.chdir(path) do
if File.exist?('config/environment.rb')
return Framework.lookup('Rails')
elsif File.exist?('config.ru') && available_frameworks.include?(["rack"])
return Framework.lookup('Rack')
elsif Dir.glob('*.war').first
return detect_framework_from_war(Dir.glob('*.war').first)
elsif File.exist?('WEB-INF/web.xml')
return detect_framework_from_war
elsif !Dir.glob('*.rb').empty?
matched_file = nil
Dir.glob('*.rb').each do |fname|
next if matched_file
File.open(fname, 'r') do |f|
str = f.read matched_file = fname if (str && str.match(/^\s*require[\s\(]*['"]sinatra(\/base)?['"]/))
end
end
if matched_file
f = Framework.lookup('Sinatra')
f.exec = "ruby #{matched_file}"
return f
end
elsif !Dir.glob('*.php').empty?
return Framework.lookup('PHP')
elsif !Dir.glob('releases/*/*.rel').empty? && !Dir.glob('releases/*/*.boot').empty?
return Framework.lookup('Erlang/OTP Rebar')
elsif File.exist?('manage.py') && File.exist?('settings.py')
return Framework.lookup('Django')
elsif !Dir.glob('wsgi.py').empty?
return Framework.lookup('WSGI')
elsif !Dir.glob('web.config').empty?
return Framework.lookup('dotNet')
elsif !Dir.glob('*.js').empty?
if File.exist?('server.js') || File.exist?('app.js') || File.exist?('index.js') || File.exist?('main.js')
return Framework.lookup('Node')
end
elsif Dir.glob('*.zip').first
zip_file = Dir.glob('*.zip').first
return detect_framework_from_zip zip_file, available_frameworks
end
return Framework.lookup('Standalone') if available_frameworks.include?(["standalone"])
end
end
|