dip 3.2.3 → 3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f2589dd2d5ed737bf8c27f106eab0a30208e91d3057408c01019c5190e79481
4
- data.tar.gz: e8f08bfb7d9dc8dbb4aec65f4f5dab3138fe65e0f027d11034877a018f742bf7
3
+ metadata.gz: 39afd269d744387e64e708e2c173c38ffe35605ae8aa4dffa9cd074142e0e9b1
4
+ data.tar.gz: efb60031ad5646986fc5672b4579671d3225624b9bc38d1d26ba142a91b1b3ee
5
5
  SHA512:
6
- metadata.gz: 2e7949d2b0e8af442161bb85413710c6fe8dcb3220ed23a6f98e4e6b3cd584ebe23dd4d36a7780ed2cd2f47d48b438ebce3095eb560d7c7911cea396a66c6025
7
- data.tar.gz: 8439e5601a24bcb1d15bf813a37478c98bdbbab3fcdd9817b613f144144090a09fc8498314e57444f0becfa80f41cff2ab337602a34d2c552a60780859b2f8a9
6
+ metadata.gz: c6d434a4250d5276e4ce91d3ed2393be9cbc93108a8fe32052f3cb6f54b2fd8fd740ee0652352fb32f26310ed30e559dbe17565eb2e16a195d7e6d7f226aaa58
7
+ data.tar.gz: 5a5512fff638facb0f3bf185703a53df02fb009e1d3c29a80803724336607f8198891f4465f0b9b2cd730d6b866225118dd9d2efa59eacc77776038039be64c5
data/README.md CHANGED
@@ -1,4 +1,8 @@
1
- # DIP [![Build Status](https://travis-ci.org/bibendi/dip.svg?branch=master)](https://travis-ci.org/bibendi/dip)
1
+ [![Gem Version](https://badge.fury.io/rb/dip.svg)](https://badge.fury.io/rb/dip)
2
+ [![Build Status](https://travis-ci.org/bibendi/dip.svg?branch=master)](https://travis-ci.org/bibendi/dip)
3
+ [![Maintainability](https://api.codeclimate.com/v1/badges/d0dca854f0930502f7b3/maintainability)](https://codeclimate.com/github/bibendi/dip/maintainability)
4
+
5
+ # DIP
2
6
 
3
7
  Docker Interaction Process
4
8
 
@@ -22,6 +26,10 @@ https://github.com/bibendi/dip/releases
22
26
  - [Ubuntu](docs/docker-ubuntu-install.md)
23
27
  - [Mac OS](docs/docker-for-mac-install.md)
24
28
 
29
+ ## Examples
30
+
31
+ - [Modern Rails application with webpack](https://github.com/bibendi/dip-example-rails)
32
+
25
33
  ## Usage
26
34
 
27
35
  ```sh
@@ -36,48 +44,47 @@ version: '2'
36
44
 
37
45
  environment:
38
46
  COMPOSE_EXT: development
39
- RAILS_ENV: development
40
47
 
41
48
  compose:
42
49
  files:
43
50
  - docker/docker-compose.yml
44
51
  - docker/docker-compose.$COMPOSE_EXT.yml
45
52
  - docker/docker-compose.$DIP_OS.yml
46
- project_name: bear-$RAILS_ENV
53
+ project_name: bear
47
54
 
48
55
  interaction:
49
56
  sh:
50
- service: foo-app
57
+ service: app
51
58
  compose_run_options: [no-deps]
52
59
 
53
60
  bundle:
54
- service: foo-app
61
+ service: app
55
62
  command: bundle
56
63
 
57
64
  rake:
58
- service: foo-app
65
+ service: app
59
66
  command: bundle exec rake
60
67
 
61
68
  rspec:
62
- service: foo-app
69
+ service: app
63
70
  environment:
64
71
  RAILS_ENV: test
65
72
  command: bundle exec rspec
66
73
 
67
74
  rails:
68
- service: foo-app
75
+ service: app
69
76
  command: bundle exec rails
70
77
  subcommands:
71
78
  s:
72
- service: foo-web
79
+ service: web
73
80
  compose_method: up
74
81
 
75
82
  psql:
76
- service: foo-app
83
+ service: app
77
84
  command: psql -h pg -U postgres
78
85
 
79
86
  provision:
80
- - dip compose up -d foo-pg foo-redis
87
+ - dip compose up -d pg redis
81
88
  - dip bundle install
82
89
  - dip rake db:migrate
83
90
  ```
@@ -112,6 +119,28 @@ dip compose COMMAND [OPTIONS]
112
119
  dip compose up -d redis
113
120
  ```
114
121
 
122
+ ### Integration with shell
123
+
124
+ Dip can be injected into your current shell. For now, it supported ZSH only.
125
+
126
+ Inject Dip rc file (by default it saved to ~/.dip_shell_rc) into ZSH:
127
+
128
+ ```sh
129
+ source $(dip console)
130
+ ```
131
+
132
+ After that you can type commands without `dip` prefix. For example:
133
+
134
+ ```sh
135
+ d> <run-command> *any-args
136
+ d> compose *any-compose-arg
137
+ d> up <service>
138
+ d> down
139
+ d> provision
140
+ ```
141
+
142
+ When you change the current directory, all shell aliases will be automatically removed. But when you will enter back to a directory with a dip.yml file, then shell aliases will be renewed.
143
+
115
144
  ### dip ssh
116
145
 
117
146
  Runs ssh-agent container based on https://github.com/whilp/ssh-agent with your ~/.ssh/id_rsa.
data/lib/dip.rb CHANGED
@@ -15,6 +15,11 @@ module Dip
15
15
  @env ||= Dip::Environment.new(config.exist? ? config.environment : {})
16
16
  end
17
17
 
18
+ def bin_path
19
+ # TODO: Maybe there's a better way?
20
+ $PROGRAM_NAME.start_with?("./") ? File.expand_path($PROGRAM_NAME) : $PROGRAM_NAME
21
+ end
22
+
18
23
  %w(test debug).each do |key|
19
24
  define_method("#{key}?") do
20
25
  ENV["DIP_ENV"] == key
@@ -99,5 +99,9 @@ module Dip
99
99
  require_relative 'cli/nginx'
100
100
  desc "nginx", "Nginx reverse proxy server"
101
101
  subcommand :nginx, Dip::CLI::Nginx
102
+
103
+ require_relative 'cli/console'
104
+ desc "console", "Integrate Dip commands into shell (only ZSH is supported now)"
105
+ subcommand :console, Dip::CLI::Console
102
106
  end
103
107
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+ require_relative "../commands/console"
5
+
6
+ module Dip
7
+ class CLI
8
+ class Console < Thor
9
+ desc "start", "Integrate Dip into current shell"
10
+ method_option :help, aliases: '-h', type: :boolean,
11
+ desc: 'Display usage information'
12
+ def start
13
+ if options[:help]
14
+ invoke :help, ['start']
15
+ else
16
+ Dip::Commands::Console::Start.new.execute
17
+ end
18
+ end
19
+
20
+ default_task :start
21
+
22
+ desc "inject", "Inject aliases"
23
+ method_option :help, aliases: '-h', type: :boolean,
24
+ desc: 'Display usage information'
25
+ def inject
26
+ if options[:help]
27
+ invoke :help, ['inject']
28
+ else
29
+ Dip::Commands::Console::Inject.new.execute
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../command'
4
+
5
+ module Dip
6
+ module Commands
7
+ module Console
8
+ class Start < Dip::Command
9
+ def execute
10
+ File.write(rc_file, script_content)
11
+
12
+ puts rc_file
13
+ end
14
+
15
+ private
16
+
17
+ def rc_file
18
+ @rc_file ||= "#{Dir.home}/.dip_shell_rc"
19
+ end
20
+
21
+ def script_content
22
+ <<-SH.gsub(/^[ ]{12}/, '')
23
+ if [ "$DIP_SHELL" != "1" ]; then
24
+ export PS1="${PS1}d> "
25
+ export DIP_SHELL=1
26
+ fi
27
+
28
+ function _dip_remove_aliases() {
29
+ # will be redefined
30
+ }
31
+
32
+ function _dip_source_aliases() {
33
+ #{Dip.bin_path} console inject | source /dev/stdin
34
+ }
35
+
36
+ _dip_source_aliases
37
+
38
+ function chpwd() {
39
+ _dip_remove_aliases
40
+ _dip_source_aliases
41
+ }
42
+ SH
43
+ end
44
+ end
45
+
46
+ class Inject < Dip::Command
47
+ def initialize
48
+ @aliases = []
49
+ @out = []
50
+ end
51
+
52
+ def execute
53
+ if Dip.config.exist?
54
+ alias_interaction if Dip.config.interaction
55
+ alias_compose
56
+ add_alias("provision")
57
+ end
58
+
59
+ fill_removing_aliases
60
+
61
+ puts @out.join("\n\n")
62
+ end
63
+
64
+ private
65
+
66
+ def alias_interaction
67
+ Dip.config.interaction.keys.each do |name|
68
+ add_alias(name)
69
+ end
70
+ end
71
+
72
+ def alias_compose
73
+ %w(compose up down).each do |name|
74
+ add_alias(name)
75
+ end
76
+ end
77
+
78
+ def add_alias(name)
79
+ @aliases << name
80
+ @out << "function #{name}() { #{Dip.bin_path} #{name} $@; }"
81
+ end
82
+
83
+ def fill_removing_aliases
84
+ @out << "function _dip_remove_aliases() { \n" \
85
+ "#{@aliases.map { |a| " unset -f #{a}" }.join("\n")} " \
86
+ "\n}"
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dip
4
- VERSION = "3.2.3"
4
+ VERSION = "3.3.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dip
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.3
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - bibendi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-08 00:00:00.000000000 Z
11
+ date: 2018-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -136,11 +136,13 @@ files:
136
136
  - exe/dip
137
137
  - lib/dip.rb
138
138
  - lib/dip/cli.rb
139
+ - lib/dip/cli/console.rb
139
140
  - lib/dip/cli/dns.rb
140
141
  - lib/dip/cli/nginx.rb
141
142
  - lib/dip/cli/ssh.rb
142
143
  - lib/dip/command.rb
143
144
  - lib/dip/commands/compose.rb
145
+ - lib/dip/commands/console.rb
144
146
  - lib/dip/commands/dns.rb
145
147
  - lib/dip/commands/nginx.rb
146
148
  - lib/dip/commands/provision.rb