picobox 0.2.6 → 0.3.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 +4 -4
- data/.gitignore +1 -0
- data/README.md +1 -0
- data/lib/picobox.rb +6 -1
- data/lib/picobox/box.rb +4 -4
- data/lib/picobox/boxes/{unpacker.rb → installer.rb} +2 -2
- data/lib/picobox/commands/add_box.rb +2 -4
- data/lib/picobox/commands/add_service.rb +1 -3
- data/lib/picobox/commands/initialize_project.rb +9 -14
- data/lib/picobox/commands/install_config.rb +17 -0
- data/lib/picobox/commands/list_boxes.rb +1 -1
- data/lib/picobox/commands/remove_service.rb +1 -3
- data/lib/picobox/commands/remove_setup_shell.rb +2 -13
- data/lib/picobox/commands/restart.rb +3 -4
- data/lib/picobox/commands/setup_shell.rb +1 -5
- data/lib/picobox/commands/ssh_instance.rb +2 -5
- data/lib/picobox/commands/start.rb +1 -4
- data/lib/picobox/commands/start_uninstall.rb +2 -7
- data/lib/picobox/commands/stop.rb +1 -4
- data/lib/picobox/commands/update_packages.rb +30 -0
- data/lib/picobox/constants.rb +11 -8
- data/lib/picobox/handlers/stdout_handler.rb +16 -3
- data/lib/picobox/os/abstract.rb +4 -0
- data/lib/picobox/os/distro.rb +11 -5
- data/lib/picobox/project.rb +3 -0
- data/lib/picobox/service.rb +4 -0
- data/lib/picobox/shell/ini_file.rb +38 -0
- data/lib/picobox/shell/startup_script.rb +4 -2
- data/lib/picobox/system.rb +5 -0
- data/lib/picobox/utils/output.rb +2 -1
- data/lib/picobox/utils/packages.rb +37 -0
- data/picobox.gemspec +2 -1
- metadata +21 -23
- data/lib/picobox/boxes/packages/elixir/Dockerfile +0 -52
- data/lib/picobox/boxes/packages/elixir/docker-compose.yml +0 -26
- data/lib/picobox/boxes/packages/elixir/info +0 -18
- data/lib/picobox/boxes/packages/elixir/start +0 -3
- data/lib/picobox/boxes/packages/python/Dockerfile +0 -29
- data/lib/picobox/boxes/packages/python/docker-compose.yml +0 -14
- data/lib/picobox/boxes/packages/python/start +0 -3
- data/lib/picobox/boxes/packages/rails/Dockerfile +0 -74
- data/lib/picobox/boxes/packages/rails/docker-compose.yml +0 -47
- data/lib/picobox/boxes/packages/rails/start +0 -9
- data/lib/picobox/boxes/packages/ruby/Dockerfile +0 -46
- data/lib/picobox/boxes/packages/ruby/docker-compose.yml +0 -20
- data/lib/picobox/boxes/packages/ruby/start +0 -3
- data/lib/picobox/services/packages/elasticsearch/config.yml +0 -14
- data/lib/picobox/services/packages/memcached/config.yml +0 -9
- data/lib/picobox/services/packages/mongodb/config.yml +0 -13
- data/lib/picobox/services/packages/mysql/config.yml +0 -17
- data/lib/picobox/services/packages/postgres/config.yml +0 -16
- data/lib/picobox/services/packages/redis/config.yml +0 -7
- data/lib/picobox/templates/shell_extensions.bash +0 -135
@@ -18,7 +18,7 @@ module Picobox
|
|
18
18
|
@post_install_messages = (@post_install_messages || Array.new).push message
|
19
19
|
end
|
20
20
|
|
21
|
-
def post_install_messages
|
21
|
+
def post_install_messages
|
22
22
|
display_line ''
|
23
23
|
|
24
24
|
@post_install_messages.each do |message|
|
@@ -54,7 +54,7 @@ module Picobox
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def install_docker_start()
|
57
|
-
Utils::Spinner.new('Installing Docker')
|
57
|
+
Utils::Spinner.new('Installing Docker')
|
58
58
|
end
|
59
59
|
|
60
60
|
def install_docker_complete()
|
@@ -99,7 +99,7 @@ module Picobox
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def build_service_start(service)
|
102
|
-
Utils::Spinner.new("Building Service #{service} (5-10min)")
|
102
|
+
Utils::Spinner.new("Building Service #{service} (5-10min)")
|
103
103
|
end
|
104
104
|
|
105
105
|
def build_service_stop
|
@@ -161,6 +161,19 @@ module Picobox
|
|
161
161
|
display_info("Getting shell", :green)
|
162
162
|
display_status('open', "Running \e[33m#{service}\e[0m shell", :green)
|
163
163
|
end
|
164
|
+
|
165
|
+
def update_packages_start
|
166
|
+
Utils::Spinner.new('Updating packages')
|
167
|
+
end
|
168
|
+
|
169
|
+
def update_packages_stop
|
170
|
+
Utils::Spinner.stop
|
171
|
+
display_info("Packages updated!", :green)
|
172
|
+
end
|
173
|
+
|
174
|
+
def config_setup_start
|
175
|
+
display_info("Setting up Config", :green)
|
176
|
+
end
|
164
177
|
end
|
165
178
|
end
|
166
179
|
end
|
data/lib/picobox/os/abstract.rb
CHANGED
@@ -25,6 +25,10 @@ module Picobox
|
|
25
25
|
|
26
26
|
def project_root() Utils::Project.new(self).root end
|
27
27
|
def reload_shell() system("exec #{user_shell} -l") end
|
28
|
+
|
29
|
+
def picobox_installed?() File.exist? config_dir end
|
30
|
+
def project_initialized?() Utils::Project.new(self).project_initialized? end
|
31
|
+
def project_running?() Utils::Project.new(self).running? end
|
28
32
|
end
|
29
33
|
end
|
30
34
|
end
|
data/lib/picobox/os/distro.rb
CHANGED
@@ -16,18 +16,24 @@ module Picobox
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def su(os)
|
19
|
-
su ||= if os.user
|
20
|
-
'sh -c'
|
21
|
-
elsif TTY::Which.exist?('sudo')
|
19
|
+
su ||= if TTY::Which.exist?('sudo') && os.user != 'root'
|
22
20
|
'sudo -E sh -c'
|
21
|
+
elsif os.user == 'root'
|
22
|
+
message = <<-END.gsub(/^\s+\|/, '')
|
23
|
+
|Not a great idea to install things as root user.
|
24
|
+
|
|
25
|
+
| You need to:
|
26
|
+
| * Install sudo and add yourself to sudoers
|
27
|
+
|
|
28
|
+
END
|
29
|
+
raise StandardError, message
|
23
30
|
else
|
24
31
|
message = <<-END.gsub(/^\s+\|/, '')
|
25
32
|
|This installer needs the ability to run commands as root.
|
26
33
|
| We are unable to find 'sudo' available to make this happen.
|
27
34
|
|
|
28
|
-
|
|
35
|
+
| You need to:
|
29
36
|
| * Install sudo and add yourself to sudoers
|
30
|
-
| * Run as root
|
31
37
|
|
|
32
38
|
END
|
33
39
|
raise StandardError, message
|
data/lib/picobox/project.rb
CHANGED
data/lib/picobox/service.rb
CHANGED
@@ -55,7 +55,11 @@ module Picobox
|
|
55
55
|
|
56
56
|
|
57
57
|
def list()
|
58
|
+
accept(Commands::UpdatePackages.new)
|
58
59
|
accept(Commands::ListServices.new)
|
60
|
+
rescue Errors::PicoboxNotInstalled
|
61
|
+
display_picobox_not_installed
|
62
|
+
exit 1
|
59
63
|
rescue StandardError => e
|
60
64
|
display_info(e, :red)
|
61
65
|
exit 1
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Picobox
|
2
|
+
module Shell
|
3
|
+
class IniFile
|
4
|
+
class << self
|
5
|
+
def get(os)
|
6
|
+
self.new(os)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize(os)
|
11
|
+
@os = os
|
12
|
+
end
|
13
|
+
|
14
|
+
def install
|
15
|
+
TTY::File.create_file filename do |content|
|
16
|
+
"[packages]\nversion=v0.0\nlast_update=#{Time.now.to_i}\n"
|
17
|
+
end unless File.exist? filename
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def [](key)
|
22
|
+
ini_file[key]
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
def []=(section, value)
|
27
|
+
ini_file[section.to_s] = value
|
28
|
+
ini_file.save
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
attr_reader :os
|
33
|
+
|
34
|
+
def filename() "#{os.config_dir}/#{Picobox::PICOBOX_INI}" end
|
35
|
+
def ini_file() @ini_file ||= ::IniFile.load(filename) end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -23,7 +23,7 @@ module Picobox
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def install_extensions
|
26
|
-
source = "#{Picobox.
|
26
|
+
source = "#{Picobox.extensions_dir}/extensions.bash"
|
27
27
|
dest = os.shell_extensions
|
28
28
|
|
29
29
|
TTY::File.copy_file source, dest
|
@@ -34,14 +34,16 @@ module Picobox
|
|
34
34
|
)
|
35
35
|
end
|
36
36
|
|
37
|
+
|
37
38
|
def uninstall_extensions
|
38
39
|
TTY::File.gsub_file filename, /#{Regexp.escape(extension)}/ do
|
39
40
|
"# picobox removed #{Time.now}"
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
44
|
+
|
43
45
|
def filename
|
44
|
-
raise ::NotImplementedError, 'must filename'
|
46
|
+
raise ::NotImplementedError, 'must have filename'
|
45
47
|
end
|
46
48
|
|
47
49
|
private
|
data/lib/picobox/system.rb
CHANGED
@@ -14,6 +14,8 @@ module Picobox
|
|
14
14
|
accept(Commands::GetRootPermission.new)
|
15
15
|
accept(Commands::DownloadDocker.new)
|
16
16
|
accept(Commands::InstallDocker.new)
|
17
|
+
accept(Commands::InstallConfig.new)
|
18
|
+
accept(Commands::UpdatePackages.new)
|
17
19
|
accept(Commands::SetupShell.new)
|
18
20
|
accept(Commands::FinishInstall.new)
|
19
21
|
accept(Commands::ReloadShell.new)
|
@@ -66,6 +68,9 @@ module Picobox
|
|
66
68
|
|
67
69
|
def restart
|
68
70
|
accept(Commands::Restart.new)
|
71
|
+
rescue Errors::ProjectNotInitialized
|
72
|
+
display_project_not_initialized
|
73
|
+
exit 1
|
69
74
|
rescue StandardError => e
|
70
75
|
display_info(e, :red)
|
71
76
|
exit 1
|
data/lib/picobox/utils/output.rb
CHANGED
@@ -19,7 +19,7 @@ module Picobox
|
|
19
19
|
|
20
20
|
def display_project_not_initialized
|
21
21
|
display_status('error', 'no project found', :red)
|
22
|
-
display_info("Run
|
22
|
+
display_info("Run 'picobox init [BOX]'", :yellow)
|
23
23
|
end
|
24
24
|
|
25
25
|
|
@@ -58,6 +58,7 @@ module Picobox
|
|
58
58
|
|
59
59
|
def display_picobox_not_installed
|
60
60
|
display_info "Picobox not installed!", :red
|
61
|
+
display_info "Run: picobox install", :yellow
|
61
62
|
end
|
62
63
|
|
63
64
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Picobox
|
2
|
+
module Utils
|
3
|
+
class Packages
|
4
|
+
def version() info['tag_name'] end
|
5
|
+
def url() info['tarball_url'] end
|
6
|
+
|
7
|
+
def initialize(os)
|
8
|
+
@os = os
|
9
|
+
end
|
10
|
+
|
11
|
+
def update?
|
12
|
+
installed_version = Picobox::Shell::IniFile.get(os)['packages']['version']
|
13
|
+
available_version = version
|
14
|
+
|
15
|
+
available_version > installed_version
|
16
|
+
end
|
17
|
+
|
18
|
+
def download
|
19
|
+
IO.copy_stream(
|
20
|
+
open(url),
|
21
|
+
"#{os.tmp_dir}/packages_#{version}.tar"
|
22
|
+
)
|
23
|
+
|
24
|
+
"#{os.tmp_dir}/packages_#{version}.tar"
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
attr_reader :os
|
29
|
+
|
30
|
+
def info
|
31
|
+
@info ||= JSON.parse(
|
32
|
+
open(Picobox::PACKAGES_INFO_URL).read
|
33
|
+
)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/picobox.gemspec
CHANGED
@@ -31,10 +31,11 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_development_dependency 'aruba-turnip', '0.1.1'
|
32
32
|
spec.add_development_dependency 'turnip'
|
33
33
|
spec.add_development_dependency 'aruba-doubles'
|
34
|
-
spec.add_development_dependency 'aruba',
|
34
|
+
spec.add_development_dependency 'aruba', '0.14.2'
|
35
35
|
spec.add_development_dependency 'rb-readline'
|
36
36
|
spec.add_development_dependency 'guard'
|
37
37
|
spec.add_development_dependency 'guard-rspec'
|
38
|
+
spec.add_development_dependency 'webmock'
|
38
39
|
|
39
40
|
|
40
41
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: picobox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Surzycki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: webmock
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: thor
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -315,21 +329,8 @@ files:
|
|
315
329
|
- bin/setup
|
316
330
|
- lib/picobox.rb
|
317
331
|
- lib/picobox/box.rb
|
332
|
+
- lib/picobox/boxes/installer.rb
|
318
333
|
- lib/picobox/boxes/manifest.rb
|
319
|
-
- lib/picobox/boxes/packages/elixir/Dockerfile
|
320
|
-
- lib/picobox/boxes/packages/elixir/docker-compose.yml
|
321
|
-
- lib/picobox/boxes/packages/elixir/info
|
322
|
-
- lib/picobox/boxes/packages/elixir/start
|
323
|
-
- lib/picobox/boxes/packages/python/Dockerfile
|
324
|
-
- lib/picobox/boxes/packages/python/docker-compose.yml
|
325
|
-
- lib/picobox/boxes/packages/python/start
|
326
|
-
- lib/picobox/boxes/packages/rails/Dockerfile
|
327
|
-
- lib/picobox/boxes/packages/rails/docker-compose.yml
|
328
|
-
- lib/picobox/boxes/packages/rails/start
|
329
|
-
- lib/picobox/boxes/packages/ruby/Dockerfile
|
330
|
-
- lib/picobox/boxes/packages/ruby/docker-compose.yml
|
331
|
-
- lib/picobox/boxes/packages/ruby/start
|
332
|
-
- lib/picobox/boxes/unpacker.rb
|
333
334
|
- lib/picobox/cli.rb
|
334
335
|
- lib/picobox/commands/add_box.rb
|
335
336
|
- lib/picobox/commands/add_service.rb
|
@@ -339,6 +340,7 @@ files:
|
|
339
340
|
- lib/picobox/commands/finish_uninstall.rb
|
340
341
|
- lib/picobox/commands/get_root_permission.rb
|
341
342
|
- lib/picobox/commands/initialize_project.rb
|
343
|
+
- lib/picobox/commands/install_config.rb
|
342
344
|
- lib/picobox/commands/install_docker.rb
|
343
345
|
- lib/picobox/commands/list_boxes.rb
|
344
346
|
- lib/picobox/commands/list_services.rb
|
@@ -352,6 +354,7 @@ files:
|
|
352
354
|
- lib/picobox/commands/start_install.rb
|
353
355
|
- lib/picobox/commands/start_uninstall.rb
|
354
356
|
- lib/picobox/commands/stop.rb
|
357
|
+
- lib/picobox/commands/update_packages.rb
|
355
358
|
- lib/picobox/constants.rb
|
356
359
|
- lib/picobox/dns.rb
|
357
360
|
- lib/picobox/docker_compose/config.rb
|
@@ -367,20 +370,15 @@ files:
|
|
367
370
|
- lib/picobox/service.rb
|
368
371
|
- lib/picobox/services/installer.rb
|
369
372
|
- lib/picobox/services/manifest.rb
|
370
|
-
- lib/picobox/services/packages/elasticsearch/config.yml
|
371
|
-
- lib/picobox/services/packages/memcached/config.yml
|
372
|
-
- lib/picobox/services/packages/mongodb/config.yml
|
373
|
-
- lib/picobox/services/packages/mysql/config.yml
|
374
|
-
- lib/picobox/services/packages/postgres/config.yml
|
375
|
-
- lib/picobox/services/packages/redis/config.yml
|
376
373
|
- lib/picobox/shell/dot_bashrc.rb
|
377
374
|
- lib/picobox/shell/dot_profile.rb
|
378
375
|
- lib/picobox/shell/dot_zshrc.rb
|
376
|
+
- lib/picobox/shell/ini_file.rb
|
379
377
|
- lib/picobox/shell/startup_script.rb
|
380
378
|
- lib/picobox/system.rb
|
381
|
-
- lib/picobox/templates/shell_extensions.bash
|
382
379
|
- lib/picobox/utils/domain_event_publisher.rb
|
383
380
|
- lib/picobox/utils/output.rb
|
381
|
+
- lib/picobox/utils/packages.rb
|
384
382
|
- lib/picobox/utils/progress_bar.rb
|
385
383
|
- lib/picobox/utils/project.rb
|
386
384
|
- lib/picobox/utils/shell.rb
|
@@ -1,52 +0,0 @@
|
|
1
|
-
# picobox with elixir
|
2
|
-
#
|
3
|
-
# VERSION 0.1.0
|
4
|
-
|
5
|
-
# Change this for different versions of ruby (see https://hub.docker.com/_/elixir/)
|
6
|
-
# FROM elixir:1.4-slim
|
7
|
-
# FROM elixir:1.3-slim
|
8
|
-
|
9
|
-
FROM elixir:slim
|
10
|
-
MAINTAINER Stefan Surzycki <stefan.surzycki@gmail.com>
|
11
|
-
|
12
|
-
ENV HOSTNAME picobox
|
13
|
-
ENV APP_HOME /var/www
|
14
|
-
|
15
|
-
# silence deb warnings
|
16
|
-
ENV DEBIAN_FRONTEND noninteractive
|
17
|
-
ENV HOSTNAME picobox
|
18
|
-
|
19
|
-
# do install here
|
20
|
-
RUN mkdir -p /tmp
|
21
|
-
WORKDIR /tmp
|
22
|
-
|
23
|
-
# add repository software
|
24
|
-
RUN apt-get update
|
25
|
-
|
26
|
-
# install nodejs
|
27
|
-
# nodejs
|
28
|
-
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
|
29
|
-
RUN apt-get install -y nodejs
|
30
|
-
|
31
|
-
# utils
|
32
|
-
RUN apt-get install -y nano git build-essential
|
33
|
-
|
34
|
-
# make nano work
|
35
|
-
RUN echo "export TERM=xterm" >> /etc/bash.bashrc
|
36
|
-
|
37
|
-
# get inotify
|
38
|
-
RUN apt-get install -y inotify-tools
|
39
|
-
|
40
|
-
# update mix
|
41
|
-
RUN mix local.hex --force
|
42
|
-
RUN mix local.rebar --force
|
43
|
-
|
44
|
-
# phoenix
|
45
|
-
RUN mix archive.install --force https://github.com/phoenixframework/archives/raw/master/phx_new.ez
|
46
|
-
|
47
|
-
# working dir
|
48
|
-
RUN mkdir -p $APP_HOME
|
49
|
-
WORKDIR $APP_HOME
|
50
|
-
|
51
|
-
# hook up source
|
52
|
-
ONBUILD ADD . $APP_HOME
|
@@ -1,26 +0,0 @@
|
|
1
|
-
---
|
2
|
-
version: '2'
|
3
|
-
volumes:
|
4
|
-
db-data:
|
5
|
-
external: false
|
6
|
-
services:
|
7
|
-
dev:
|
8
|
-
build: "."
|
9
|
-
entrypoint: ".picobox/start"
|
10
|
-
volumes:
|
11
|
-
- ".:/var/www:cached"
|
12
|
-
hostname: picobox
|
13
|
-
environment:
|
14
|
-
MIX_ENV: dev
|
15
|
-
ports:
|
16
|
-
- 80:4000
|
17
|
-
- 4000:4000
|
18
|
-
test:
|
19
|
-
build: "."
|
20
|
-
entrypoint: ".picobox/start"
|
21
|
-
volumes:
|
22
|
-
- ".:/var/www:cached"
|
23
|
-
environment:
|
24
|
-
MIX_ENV: test
|
25
|
-
hostname: picobox_test
|
26
|
-
|