mini-heroku 0.2.0 → 0.2.1
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 +4 -4
- data/lib/mini-heroku.rb +59 -50
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd91fcfa20f2fe1bbd25eeafbdeda695c382d5d0
|
4
|
+
data.tar.gz: 8319d32570abb4bef06a2674f28f54af9483a583
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cef6950a50a94026fa9462c76f20124192b0d9ad8201abb3f6ab4bc8c9687bf51179986fa029c9ba55379effe65723290d9930450771707e574e05428f392597
|
7
|
+
data.tar.gz: 4178b1287d394d4be75e6d4086880d6a9a9d87f7bf3eaf67c75bb6df265bfb8d40bd68d87f9c7f454503593a77f7a736b3749bc562164d9e2e53eb3afc3e4d89
|
data/lib/mini-heroku.rb
CHANGED
@@ -2,26 +2,41 @@ require "rubygems"
|
|
2
2
|
require "json"
|
3
3
|
|
4
4
|
module MiniHeroku
|
5
|
-
|
6
5
|
DEFAULT_PROCFILE = "web: bundle exec ruby server.rb -p $PORT"
|
7
|
-
|
8
|
-
DEFAULT_GITIGNORE = [".env","mhenvironment.json"].join("\n")
|
6
|
+
DEFAULT_GITIGNORE = ["mhenvironment.json"].join("\n")
|
9
7
|
DEFAULT_SERVER = [
|
10
8
|
"require 'sinatra'",
|
9
|
+
"require 'mini-heroku'",
|
11
10
|
"",
|
12
11
|
"get '/' do",
|
13
|
-
" \"Hello world! Your variable defaultKey is (probably empty): \#{
|
12
|
+
" \"Hello world! Your variable defaultKey is (probably empty): \#{MH.env('defaultKey')} \#{MH.env('defaultKey').inspect}\"",
|
14
13
|
"end"
|
15
14
|
]
|
16
15
|
DEFAULT_CONFIG = {
|
17
16
|
devUsesProdEnviromnent: true,
|
17
|
+
mhVersion: "0.2.1",
|
18
18
|
environmentKeys: [
|
19
19
|
:defaultKey
|
20
|
-
]
|
20
|
+
],
|
21
|
+
customGems: {
|
22
|
+
"rack/ssl": "rack-ssl"
|
23
|
+
}
|
21
24
|
}
|
22
25
|
|
26
|
+
def self.readJSON(filename)
|
27
|
+
return JSON.parse(File.read(filename), :symbolize_names => true)
|
28
|
+
end
|
29
|
+
|
23
30
|
def self.start()
|
24
|
-
|
31
|
+
puts "MH: Loading environment"
|
32
|
+
environment = :development
|
33
|
+
environment = readJSON("mhconfig.json")[:devUsesProdEnviromnent] ? :production : :development
|
34
|
+
environment = readJSON("mhenvironment.json")[environment]
|
35
|
+
environment.each do |key, val|
|
36
|
+
ENV[key.to_s] = val.gsub("\n", "\\n")
|
37
|
+
end
|
38
|
+
puts "MH: Starting server"
|
39
|
+
system("ruby server.rb")
|
25
40
|
end
|
26
41
|
|
27
42
|
def self.create(name)
|
@@ -35,7 +50,7 @@ module MiniHeroku
|
|
35
50
|
installed = `gem list`.split("\n")
|
36
51
|
installed.map! do |g|
|
37
52
|
name, rest = g.split(" (")
|
38
|
-
version = rest.scan(
|
53
|
+
version = rest.scan(/^(\D)*((\d|\.)*)/)[0][1]
|
39
54
|
[name, version]
|
40
55
|
end
|
41
56
|
return Hash[installed]
|
@@ -44,9 +59,11 @@ module MiniHeroku
|
|
44
59
|
def self.refresh()
|
45
60
|
#config
|
46
61
|
config = DEFAULT_CONFIG
|
47
|
-
if File.file?("mhconfig.json")
|
48
|
-
config.merge!(
|
49
|
-
puts("MH:
|
62
|
+
if File.file?("mhconfig.json")
|
63
|
+
config.merge!(readJSON("mhconfig.json"))
|
64
|
+
puts("MH: Found config")
|
65
|
+
else
|
66
|
+
puts "MH: Creating default config"
|
50
67
|
end
|
51
68
|
File.open("mhconfig.json", "wb") do |f|
|
52
69
|
f.write JSON.pretty_generate(config)
|
@@ -63,77 +80,71 @@ module MiniHeroku
|
|
63
80
|
end
|
64
81
|
if File.file?("mhenvironment.json")
|
65
82
|
puts "MH: Found environment"
|
66
|
-
old =
|
67
|
-
environment.merge(old)
|
83
|
+
old = readJSON("mhenvironment.json")
|
84
|
+
environment.merge!(old)
|
68
85
|
else
|
69
|
-
puts "MH: Creating environment"
|
86
|
+
puts "MH: Creating default environment"
|
70
87
|
end
|
71
88
|
File.open("mhenvironment.json", "wb") do |f|
|
72
89
|
f.write(JSON.pretty_generate(environment))
|
73
90
|
end
|
74
91
|
|
75
|
-
#env file
|
76
|
-
File.open(".env", "w") do |f|
|
77
|
-
vars = {}
|
78
|
-
if config[:devUsesProdEnviromnent]
|
79
|
-
vars = environment[:production]
|
80
|
-
else
|
81
|
-
vars = environment[:development]
|
82
|
-
end
|
83
|
-
vars.each do |key, value|
|
84
|
-
f.puts("#{key}=#{value}")
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
92
|
#procfile
|
89
93
|
if File.file?("Procfile")
|
90
|
-
puts "MH:
|
94
|
+
puts "MH: Found procfile"
|
91
95
|
else
|
92
|
-
puts "MH: Creating
|
96
|
+
puts "MH: Creating default procfile"
|
93
97
|
File.open("Procfile", "w") do |f|
|
94
98
|
f.puts(DEFAULT_PROCFILE)
|
95
99
|
end
|
96
100
|
end
|
97
101
|
|
98
|
-
if File.file?("Procfile.dev")
|
99
|
-
puts "MH: Dev Procfile found"
|
100
|
-
else
|
101
|
-
puts "MH: Creating Dev Procfile"
|
102
|
-
File.open("Procfile.dev", "w") do |f|
|
103
|
-
f.puts(DEFAULT_PROCFILE_DEV)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
102
|
#gitignore
|
108
103
|
if File.file?(".gitignore")
|
109
|
-
puts "MH: .gitignore
|
104
|
+
puts "MH: Found .gitignore"
|
110
105
|
else
|
111
|
-
puts "MH: Creating .gitignore"
|
106
|
+
puts "MH: Creating default .gitignore"
|
112
107
|
File.open(".gitignore", "w") do |f|
|
113
108
|
f.puts(DEFAULT_GITIGNORE)
|
114
109
|
end
|
115
110
|
end
|
116
111
|
|
117
112
|
#gems
|
118
|
-
gems = ["sinatra"]
|
113
|
+
gems = ["sinatra", "mini-heroku"]
|
114
|
+
files = ["server"]
|
119
115
|
if File.file?("server.rb")
|
120
|
-
puts "MH:
|
121
|
-
|
122
|
-
|
116
|
+
puts "MH: Found server file, checking gems" #^(\s*?)(require(\s*?)("|'))(\.\/)(.*?)("|')
|
117
|
+
until files.size == 0
|
118
|
+
filename = files.pop
|
119
|
+
for line in File.read(filename + ".rb").split("\n") do
|
120
|
+
# (start of line)(any amount of indentation)(begin quote)(gem name, but not .)(end quote)
|
121
|
+
gem = line.scan(/^(\s*?)(require(\s*?)("|'))([^\.]*?)("|')/).dig(0, 4)
|
122
|
+
gems << gem if gem
|
123
|
+
file = line.scan(/^(\s*?)(require(\s*?)("|'))(\.\/)(.*?)("|')/).dig(0, 5)
|
124
|
+
files << file.gsub(".rb", "") if file
|
125
|
+
file = line.scan(/^(\s*?)(require_relative(\s*?)("|'))(.*?)("|')/).dig(0, 4)
|
126
|
+
files << file.gsub(".rb", "") if file
|
127
|
+
end
|
123
128
|
end
|
124
|
-
gems.
|
129
|
+
gems.uniq!
|
125
130
|
else
|
126
|
-
puts "MH: Creating
|
131
|
+
puts "MH: Creating default server file"
|
127
132
|
File.open("server.rb", "w") do |f|
|
128
133
|
f.puts(DEFAULT_SERVER)
|
129
134
|
end
|
130
135
|
end
|
136
|
+
config[:customGems].each do |key, val|
|
137
|
+
if gems.include?(key.to_s)
|
138
|
+
gems.delete(key.to_s)
|
139
|
+
gems << val.to_s
|
140
|
+
end
|
141
|
+
end
|
131
142
|
installedGems = getGems()
|
132
143
|
didInstall = false
|
133
144
|
for gem in gems
|
134
145
|
if !(installedGems.keys.include?(gem))
|
135
146
|
puts "MH: Installing Gem #{gem}"
|
136
|
-
system("gem install #{gem}")
|
147
|
+
system("gem install #{gem} --no-document")
|
137
148
|
didInstall = true
|
138
149
|
end
|
139
150
|
end
|
@@ -156,7 +167,7 @@ module MiniHeroku
|
|
156
167
|
end
|
157
168
|
|
158
169
|
def self.setProductionEnvironment()
|
159
|
-
environment =
|
170
|
+
environment = readJSON("mhenvironment.json")[:production]
|
160
171
|
out = "heroku config:set"
|
161
172
|
environment.each do |key, val|
|
162
173
|
out += " #{key}=\"#{val.gsub("\n", "\\n")}\""
|
@@ -178,6 +189,4 @@ module MiniHeroku
|
|
178
189
|
return ENV[key].gsub("\\n", "\n")
|
179
190
|
end
|
180
191
|
end
|
181
|
-
MH = MiniHeroku
|
182
|
-
#MiniHeroku.create("mini-heroku-test")
|
183
|
-
#MiniHeroku.setProductionEnvironment()
|
192
|
+
MH = MiniHeroku
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini-heroku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Larsson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: Makes it easy to create, update and
|
13
|
+
description: Makes it easy to create, update and deploy a sinatra webserver to heroku.
|
14
14
|
Be warned, this gem might run over your files if something goes worng. see 'mh help'
|
15
15
|
for commands
|
16
16
|
email: martin.99.larsson@telia.com
|