dry-stack 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4062fa15735d0dc9e08fc19a5fcbd0296a15e999fd18993a7b755b79c979bca2
4
- data.tar.gz: f74d61dda0cdf31c8fd3f7e371caa27fbf58885e25e74aba2047d24cefacd3d2
3
+ metadata.gz: 55d5a06106fbacfedcb2f6fab9517028453f90f6fbf0f0b8c3eda23c1092d0d3
4
+ data.tar.gz: 3508abce4e446048dd3bba5d85ad46c76fba5a2daafb4e1ff32f1986317b57c1
5
5
  SHA512:
6
- metadata.gz: a444ad20bee842da84d5975f7a0ca5693fc321685711690f36ca1d381a19c67dd4e71ed9b42c061543bb6e755f93e5211f982c0b3fbf6ad829ee0794ccf5267c
7
- data.tar.gz: 50cb5cc162083924ca72b4ec504f92c28f90a8dfd3ed30610a514ee45b6147956608de08d059f771066976d1efd06e0045cddc843fc1f4dae5b66421f0a02429
6
+ metadata.gz: 1c10e24510f36e8fa58b11fc1e738e503583ca186501aa0233902d3a4e448e6a1df662f88e4e61a6c1808a4391f4500634e6d06fd77b67df15bff881039a6f6c
7
+ data.tar.gz: 992a925a38a5a256497999e6d01d99883efaa011d321fcd8ca7429367932221cfcca071eea749ac48c1c496fa078d8360024e01ab26f669b510ed7e42b6b0230
data/bin/dry-stack CHANGED
@@ -4,7 +4,8 @@ $LOAD_PATH << lib
4
4
  #$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  require 'dry-stack'
7
+ require 'dry-stack/command_line'
8
+ require 'dry-stack/command_compose'
7
9
  include Dry
8
10
 
9
-
10
- Dry::Stack.command_line ARGV
11
+ Dry::CommandLine.run ARGV
data/bin/stack.drs ADDED
@@ -0,0 +1,19 @@
1
+ Stack :simple_stack do
2
+
3
+ HttpFront services: {admin: 'admin.*', operator: 'operator.*', reports: 'reports.*',
4
+ navigator: 'navigator.*', backend: 'admin.*, operator.*, navigator.*'}
5
+
6
+ PublishPorts admin: 4000, operator: 4001, navigator: 4002, reports: 7000 # mode: ingress, protocol: tcp
7
+
8
+ Service :admin, image: 'frontend', env: {APP: 'admin'}, ports: 5000
9
+ Service :operator, image: 'frontend', env: {APP: 'operator'}, ports: 5000
10
+ Service :navigator, image: 'frontend', env: {APP: 'navigator'}, ports: 5000
11
+
12
+ Service :backend, image: 'backend', ports: 3000 do
13
+ env APP_PORT: 3000, NODE_ENV: 'development', SKIP_GZ: true, DB_URL: '$DB_URL'
14
+ end
15
+
16
+ Service :reports, image: 'reports:0.1', env: {DB_URL: '$DB_URL'}, ports: 7000
17
+
18
+ Network :default, attachable: true
19
+ end
@@ -0,0 +1,11 @@
1
+ require_relative 'command_line'
2
+
3
+ Dry::CommandLine::COMMANDS[:compose] = Class.new do
4
+ def run(stack, args)
5
+ $stdout.puts stack.to_compose
6
+ end
7
+
8
+ def help = 'Print stack in docker compose format'
9
+ end.new
10
+
11
+
@@ -0,0 +1,45 @@
1
+
2
+ module Dry
3
+ module CommandLine
4
+ COMMANDS = {}
5
+
6
+ class << self
7
+ def run(args)
8
+ stack_file = false
9
+ stack_file = STDIN.read unless $stdin.tty?
10
+
11
+ ARGV << '-h' if ARGV.empty?
12
+ OptionParser.new do |o|
13
+ usage = [
14
+ 'dry-stack -s stackfile [options] COMMAND',
15
+ 'cat stackfile | dry-stack COMMAND',
16
+ 'dry-stack COMMAND < stack.drs'
17
+ ]
18
+ o.banner = "Usage:\n\t#{usage.join "\n\t"}"
19
+ o.separator ''
20
+ o.separator 'Commands:'
21
+ COMMANDS.each { |name, cmd| o.separator "#{' ' * 5}#{name} - #{cmd.help}" }
22
+
23
+ o.separator ''
24
+ o.separator 'Options:'
25
+
26
+ # in all caps are required
27
+ o.on('-s', '--stack STACK_NAME', 'Stack file') { |v| stack_file = v }
28
+ o.on('-h', '--help') { puts o; exit }
29
+ o.parse! args
30
+
31
+ raise 'Stack file not defined' unless stack_file
32
+
33
+ command = args.shift
34
+ raise "Unknown command: #{command}" unless COMMANDS.key?(command.to_sym)
35
+
36
+ eval $stdin.tty? ? File.read(stack_file) : stack_file
37
+ COMMANDS[command.to_sym].run Stack.last_stack, args
38
+ rescue => e
39
+ puts e.message
40
+ exit 1
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require 'yaml'
3
+ require 'optparse'
3
4
 
4
5
  module Dry
5
6
 
@@ -16,13 +17,6 @@ module Dry
16
17
  class Stack
17
18
  class << self
18
19
  attr_accessor :last_stack
19
-
20
- def command_line(argv)
21
- if argv[1] == 'compose'
22
- load argv[0]
23
- $stdout.puts Stack.last_stack.to_compose
24
- end
25
- end
26
20
  end
27
21
 
28
22
  def initialize(name)
data/lib/version.rb ADDED
@@ -0,0 +1,5 @@
1
+ module Dry
2
+ module Stack
3
+ VERSION = '0.0.2'
4
+ end
5
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-28 00:00:00.000000000 Z
11
+ date: 2022-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -102,8 +102,12 @@ extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
104
  - bin/dry-stack
105
+ - bin/stack.drs
105
106
  - lib/dry-stack.rb
107
+ - lib/dry-stack/command_compose.rb
108
+ - lib/dry-stack/command_line.rb
106
109
  - lib/dry-stack/stack.rb
110
+ - lib/version.rb
107
111
  homepage: https://rubygems.org/gems/dry-stack
108
112
  licenses:
109
113
  - Nonstandard