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.
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