mini-heroku 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mini-heroku.rb +59 -50
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4864763dbc5e62ff86ddd7c66bd1fc62afaf9dd1
4
- data.tar.gz: 4ea1d614b5cd4d7c0978f07a13836cc7547bec47
3
+ metadata.gz: dd91fcfa20f2fe1bbd25eeafbdeda695c382d5d0
4
+ data.tar.gz: 8319d32570abb4bef06a2674f28f54af9483a583
5
5
  SHA512:
6
- metadata.gz: 6c85b238a2e6af1ad1eddffd2478499072c6615a4cbccaa1d34e07b9ff1df69c6c6d68bc64ee581606a58401cd40a667e118ffbeee07082e04b7923a2728efca
7
- data.tar.gz: 9fda6f9faeea3dc478aa3dd0533c597c0870a2b7a8450090e2cb2647d22c94902c1876cc72e79357bf545c0a6c057295b44b7c4da22d24c5cc318ebcdf815d38
6
+ metadata.gz: cef6950a50a94026fa9462c76f20124192b0d9ad8201abb3f6ab4bc8c9687bf51179986fa029c9ba55379effe65723290d9930450771707e574e05428f392597
7
+ data.tar.gz: 4178b1287d394d4be75e6d4086880d6a9a9d87f7bf3eaf67c75bb6df265bfb8d40bd68d87f9c7f454503593a77f7a736b3749bc562164d9e2e53eb3afc3e4d89
@@ -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
- DEFAULT_PROCFILE_DEV = "web: bundle exec ruby server.rb"
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): \#{ENV['defaultKey']}\"",
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
- system("heroku local -f Procfile.dev")
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(/(^)((\d|\.)*)/)[0][1]
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!(JSON.parse(File.read("mhconfig.json"), :symbolize_names => true))
49
- puts("MH: Config found")
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 = JSON.parse(File.read("mhenvironment.json"), :symbolize_names => true)
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: Procfile found"
94
+ puts "MH: Found procfile"
91
95
  else
92
- puts "MH: Creating Procfile"
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 found"
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: Checking Gems from server file"
121
- gems = File.read("server.rb").split("\n").map do |line|
122
- line.scan(/^([^#]*?)(require(\s*?)("|'))(.*?)("|')/).map{|match| match[4]}
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.flatten!
129
+ gems.uniq!
125
130
  else
126
- puts "MH: Creating Default server file"
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 = JSON.parse(File.read("mhenvironment.json"), :symbolize_names => true)[:production]
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.0
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-06-26 00:00:00.000000000 Z
11
+ date: 2018-07-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Makes it easy to create, update and deply a sinatra webserver to heroku.
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