heroku_whiz 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5800f5f32cb8db97a0533705239764f93beda9e9f5bd05440d2e3a29c82e2b68
4
+ data.tar.gz: 6e3b4e3ff383822c3c6db9b62f4010f422e3a85cec747f70eba7f4d6e61885e1
5
+ SHA512:
6
+ metadata.gz: '049384d28472b0b534610be275db670e977509be3af49132907ad6f5b6825ea20ae9c13a1f8e6a88196d023e27e1456fccc418ac250f506d89e96e6f7580f507'
7
+ data.tar.gz: feef8ec4211b1e8e9d7a790a5ae06c35997b5fb62f2da53eec1d0eb91f68cbef49eee1e3914e8a21a251d22cb30a2e72f00483c4a7f4bbc8e43e217239737546
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ ��g�5�+ *Vd�6h��0�p����3f��_�r�A��kv����������pr�3"{Չ�T$����(;c�i.j�Eb��H�5�AJrhǰ�������ڻ&��no�_�9���* ��t��c�%V��[?t۶|`����p<��ĕ0��~U��Ý�I�es1���
2
+ ���Dl�w �C�9��o�?m��QA�����;�]E�F@����f�tcZ��z�K�P�7��8�?��_�FӲ\+w ��I��.ob�ܱѣ���e��-f�=��s�~�{����خ8߯-���c� -���oG�Ek��A�V�s�I��%��.Ir�Yw��eK�B��?#���#�4�5��6�C&�L�x5!۷��
@@ -0,0 +1,184 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: heroku_whiz.rb
4
+
5
+ # created: 8th March 2022
6
+ # description: Handy (experimental) Heroku gem for noobs to create a
7
+ # simple Heroku app in a whiz!
8
+
9
+ # note: If this gem becomes outdated because of a change in the Heroku app
10
+ # setup process, please inform the owner of this project via *Issues*
11
+ # on GitHub (https://github.com/jrobertson/heroku_whiz).
12
+
13
+
14
+ require 'open-uri'
15
+ require 'fileutils'
16
+ require 'clipboard'
17
+
18
+
19
+ # Resources
20
+ #
21
+ # * [Deploying Rack-based Apps](https://devcenter.heroku.com/articles/rack#pure-rack-apps)
22
+
23
+
24
+ # Example usage:
25
+ #
26
+ # hw = HerokuWhiz.new dir: '/home/james/heroku', template: 'rack', appname: 'hello2', debug: true
27
+ #
28
+ # hw.wipe_clean # removes the previous local app file directory
29
+ # hw.create # creates the local app file directory
30
+ # #hw.local_run # runs the web app locally
31
+ # hw.local_testrun # tests the local web app returns the correct page
32
+ # hw.deploy # creates the new app on Heroku
33
+ # hw.app_url #=> e.g. https://frozen-dusk-65820.herokuapp.com/
34
+
35
+
36
+ class HerokuWhiz
37
+
38
+ def initialize(dir: '.', template: 'rack', appname: 'myapp',
39
+ verbose: true, debug: false)
40
+
41
+ @dir, @template, @appname, @verbose = dir, template, appname, verbose
42
+
43
+ @app_path = File.join(@dir, @appname)
44
+
45
+
46
+ end
47
+
48
+ def app_url()
49
+
50
+ app = `heroku config`.lines.first.split[1]
51
+ s = "https://#{app}.herokuapp.com/"
52
+
53
+ Clipboard.copy s
54
+ puts 'app URL copied to clipboard.'
55
+
56
+ return s
57
+
58
+ end
59
+
60
+ def create()
61
+
62
+ case @template.to_sym
63
+ when :rack
64
+ create_rack()
65
+ else
66
+ return puts 'template not recognised!'
67
+ end
68
+
69
+ # build
70
+ `bundle install`
71
+ sleep 1
72
+
73
+ end
74
+
75
+ def wipe_clean(setup=:local)
76
+
77
+ return unless File.exists? @app_path
78
+
79
+ # remove the app files
80
+ #
81
+ %w(Gemfile config.ru Gemfile.lock).each do |file|
82
+
83
+ puts 'removing file ' + file if @debug
84
+ rm File.join(@app_path, file)
85
+ sleep 0.5
86
+
87
+ end
88
+
89
+ rm_rf File.join(@app_path, '.git')
90
+ rmdir File.join(@app_path, '.git')
91
+ rmdir @app_path
92
+
93
+ return unless setup == :both
94
+
95
+ app = `heroku config`.lines.first.split[1]
96
+ `heroku apps:destroy --confirm #{app}`
97
+
98
+ end
99
+
100
+ def deploy()
101
+
102
+ `git init`
103
+ sleep 0.5
104
+
105
+ `git add .`
106
+ sleep 0.5
107
+
108
+ `git commit -m 'pure rack app'`
109
+ sleep 0.5
110
+
111
+ #`heroku create #{@appname}`
112
+
113
+ # the above statement was commented out because there's a
114
+ # high probability the appname you have chosen has already been taken
115
+ # e.g. hello2 => hello2.herokuapp.com
116
+
117
+ `heroku create`
118
+ sleep 2
119
+
120
+ r = `git push heroku master`
121
+
122
+ end
123
+
124
+ def local_run()
125
+ `bundle exec rackup -p 9292 config.ru &`
126
+ end
127
+
128
+ def local_testrun()
129
+
130
+ r = IO.popen( "bundle exec rackup -p 9292 config.ru" )
131
+ puts 'r: ' + r.inspect if @debug
132
+ sleep 2
133
+
134
+ s = URI.open('http://127.0.0.1:9292').read
135
+ sleep 1
136
+
137
+ Process.kill('QUIT', r.pid)
138
+
139
+
140
+ puts 'SUCCESS! Ready to deploy' if s == "Hello World!\n"
141
+
142
+ end
143
+
144
+ private
145
+
146
+ def create_rack()
147
+
148
+ FileUtils.mkdir_p @app_path
149
+ FileUtils.chdir @app_path
150
+
151
+ # write the config.ru file
152
+ #
153
+ config = %q(
154
+ run lambda do |env|
155
+ [200, {'Content-Type'=>'text/plain'}, StringIO.new("Hello World!\n")]
156
+ end)
157
+ File.write File.join(@app_path, 'config.ru'), config
158
+
159
+ # write the Gemfile
160
+ #
161
+ gemfile = %q(
162
+ source 'https://rubygems.org'
163
+ gem 'rack'
164
+ gem 'puma'
165
+ )
166
+ File.write File.join(@app_path, 'Gemfile'), gemfile
167
+ sleep 0.5
168
+
169
+ end
170
+
171
+ def rm(file)
172
+ FileUtils.rm file if File.exists? file
173
+ end
174
+
175
+ def rm_rf(file)
176
+ FileUtils.rm_rf file if File.exists? file
177
+ end
178
+
179
+ def rmdir(file)
180
+ FileUtils.rmdir file if File.exists? file
181
+ end
182
+
183
+ end
184
+
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: heroku_whiz
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMzA4MTk1NzM4WhcN
15
+ MjMwMzA4MTk1NzM4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDIXmoN
17
+ nJ9L8ZoIT/ZvxHs1M52kxfArnddz64ZS0k8HzaWfgUT3rWLis4b/RJDvsb1uxMis
18
+ Wkeg1V5K0H/g5mvKyrVT8d+rmGzTEM08eC+PymxyZ4TcN1UAVz2s1PJUrAW0Qeku
19
+ vno1JbszRuhLFwQXxSp1bRbdsfx80PrklP9WPFHh2iR/F6NTlQ+SAIirfCfDhMki
20
+ mrunqADCvnAKnsuKiEnnjDua24nmsCdcTJHZ8TdLXqqJXGY5Iyyc5COVaj8SLYgJ
21
+ XkZFCHwcNQkKn94QSTERVRU6cnK/ZfSWAao+IDkQhZVLHMYTHTLvVJ5DXEAFdrjL
22
+ FT4wNJhdHVVIcyjoPyGQk/xHxWtJsdF67TKJ52vaDPoPxuBFPZuLii+s5oXWuL5D
23
+ B8NTOauLDyjcxKpxYGE2bneTck7DsWsTne0zRASfXbMryOpCGPdimeSHPSN4rrTn
24
+ G35h1O+yBvC0XUoZOEBLPmlGQmyFvpC/OJ9FomWTpUxC7znOyiap19Lw97MCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUUBL6U84l
26
+ 5lJD+C8Wcktyhr2496owJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAGKCIZf7JdlUrF7FEaPSpXjJhnx1a2ycmtVM1cj5O
29
+ TI16sjKyBkrMjtufJ/D5uf5SvAjOznr0LKZZIdkmRBciAzj53zCDM6lNbWc1WR/k
30
+ QAYBzE15bELAd1odOnYa0H1vhRkeRpsPZKDVai66d1+rlVFOCygDoWPVEPkjlY3X
31
+ wX6OpHH0h0PnNBJgc6vztzxXhafYfFcrti+KPmXCl0yNl7f3lrJm5j2rFNKFAGpK
32
+ xLDt4NtIIgydn7uADv30WdE3eAlWbBiSndaPS786B9m95xLr9g+A+jNCKsYOOTfq
33
+ HwyJjXghKUSwQhLtXoMkXFZpn9sYgA8uyyxfk8gOS4d10aqVkkGxsEvM8oierBnc
34
+ ZwoeMRnUgam0t4/OfCefewn2lcvIEQ7qXRqrZ8KuTQoIO7gT5e6DrVzaGt/1+egO
35
+ n5lICiaMyvvvMKfV1rE1Pz0tCPqOu++rZFRC9XbrR+Vio0ha4mHPPAUsvY2f9DtE
36
+ ZOz9jhKlb8t2o3xNUKH/e3WN
37
+ -----END CERTIFICATE-----
38
+ date: 2022-03-08 00:00:00.000000000 Z
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: clipboard
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.3'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 1.3.6
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.3'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.3.6
60
+ description:
61
+ email: digital.robertson@gmail.com
62
+ executables: []
63
+ extensions: []
64
+ extra_rdoc_files: []
65
+ files:
66
+ - lib/heroku_whiz.rb
67
+ homepage: https://github.com/jrobertson/heroku_whiz
68
+ licenses:
69
+ - MIT
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubygems_version: 3.2.22
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Handy (experimental) Heroku gem for noobs to create a simple Heroku app in
90
+ a whiz!
91
+ test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1 @@
1
+ 9��a��}�<�'c~GU�_�scb�K��_ �'���2���'(�~C�N@u �\z���ھঢ���,�0�q�R^�����HިIM ���ׇU�2Ob ������8��3�+XЦf�e�!៼��T���j�c�����P��l�)��4Z1)E����פ�ɼy8�s�O���{3%hf�qg����g�gu