dce 0.0.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/dce +13 -132
  3. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b63433f17a92dff67527d1fa36c7f0098bd8a572
4
- data.tar.gz: e35543115353f30be2f5985c73cb588e10e2c0c6
3
+ metadata.gz: fbf00e5fba8316d9b49e3ddec96306f03a04d6aa
4
+ data.tar.gz: a4226ca5bbca2c08333a9dc62c1abeb03f091709
5
5
  SHA512:
6
- metadata.gz: 3d9cef81059cebb0f360b421ba212cf779ef31ee6e2d7bcf03af8c6772e8b4070dea2289a69e0f57979155ef773eb8aac7f71f0fc18fc3485f1ca333a5f2cee6
7
- data.tar.gz: 464c3fb73e8c1725fdfe44b6748783fdeba2b88276f14e52863ebe737617f77c8b56b9473c38702e8f297cf4dd5408ff9c5205de0e7de3fc8dbc925be03d7cf8
6
+ metadata.gz: 3019a466710734d02250d5e0694caaa81fef083db39f70ae6621a671cdfa9ef6236e5f45575ec1a4a6538bd28ed64e430ef8cca9426571fdaa6c2d3219862cbf
7
+ data.tar.gz: 36529e899d0fcf4ecaa0dc587e3e6c49c39588ec56f5d7cb0729c0b623edf5e10158cb910a36868c5d1bfa0f8fb5146d8deb4e1bc7f12bb4409d63cd603aa8c3
data/bin/dce CHANGED
@@ -1,145 +1,26 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # Wishlist:
4
- # Option to delete .dce_container.
5
- # Option for using run instead of exec?
6
-
7
3
  require 'yaml'
4
+ if ENV['COVERAGE']
5
+ require 'simplecov'
8
6
 
9
- class DCE
10
- # Run the command
11
- def run
12
- parse_args
13
-
14
- @conf_file = File.join(File.dirname(docker_compose_file), '.dce_container')
15
- config_container = nil
16
- if File.exists? @conf_file
17
- config_container = File.read @conf_file
18
- end
19
-
20
- if @query
21
- if config_container
22
- STDOUT.puts(config_container)
23
- exit
24
- else
25
- STDERR.puts("No container saved.")
26
- exit!
27
- end
28
- end
29
-
30
- if !@container
31
- @container = config_container ? config_container : query_container
32
- end
33
-
34
- if @container != config_container
35
- File.write(@conf_file, @container)
36
- end
37
-
38
- # If no command given, open a shell.
39
- if (@command.strip.empty?)
40
- @command = "if [ -e /usr/bin/fish ]; then /usr/bin/fish; elif [ -e /bin/bash ]; then /bin/bash; else /bin/sh; fi"
41
- end
42
-
43
- args = '-i'
44
- args += 't' if STDIN.tty?
45
- container_id = %x{docker-compose ps -q #{@container}}.chomp
46
- command = "docker exec #{args} #{container_id} sh -c '#{@command}'"
47
- STDERR.puts "Exec'ing: " + command if @verbose
48
- exec command unless @dry_run
49
- end
50
-
51
- # Return path to the docker-compose.yml file
52
- # Will exit with an error if not found
53
- def docker_compose_file
54
- unless @compose_file
55
- dir = Dir.pwd()
56
- while dir != "/"
57
- file = File.join(dir, 'docker-compose.yml')
58
- if FileTest.exists?(file)
59
- @compose_file = file
60
- break;
61
- end
62
- dir = File.dirname(dir)
63
- end
7
+ # Redefine exec to save coverage first.
8
+ module Kernel
9
+ alias_method :exec_real, :exec
64
10
 
65
- if !@compose_file
66
- STDERR.puts "No docker-compose.yml file found."
67
- exit!
68
- end
11
+ def exec(command)
12
+ SimpleCov.result
13
+ exec_real command
69
14
  end
70
-
71
- return @compose_file
72
15
  end
73
16
 
74
- # Parse command line arguments
75
- def parse_args
76
- # Not using a proper option parse library, as it will get confused
77
- # by options for the command given. We use a simple parser.
78
- while /^-/ =~ ARGV[0]
79
- option = ARGV.shift
80
- case option
81
- when '-c', '--container'
82
- @container = ARGV.shift
83
- if !get_containers.include? @container
84
- STDERR.puts "Unknown container #{@container}"
85
- exit!
86
- end
87
- when '-v', '--verbose'
88
- @verbose = true
89
- when '-n', '--dry-run'
90
- @verbose = true
91
- @dry_run = true
92
- when '-?', '--print-service'
93
- @query = true
94
- when '-h', '--help'
95
- STDERR.puts <<-HEREDOC
96
- Usage: #{File.basename($0)} [OPTIONS]... COMMAND
97
- Runs COMMAND in docker-compose container.
98
-
99
- On first run, asks for the service container to use and saves it to .dce_container next
100
- to the docker-compose.yml file.
101
-
102
- If no command given, opens a shell.
103
-
104
- Options:
105
- -c, --container SERVICE use the container of the specified service
106
- replaces the selected container in the .dce_container
107
- -v, --verbose print exec'ed command
108
- -n, --dry-run only print exec'ed command, don't run
109
- -?, --print-service print the service saved
110
- -h, --help print this help and exit
111
-
112
- HEREDOC
113
- exit
114
- else
115
- STDERR.puts "Unknown option #{option}"
116
- exit!
117
- end
118
- end
119
-
120
- @command = ARGV.join(' ')
121
- end
122
-
123
- # Ask the user to select a container
124
- # The options are taken from the docker-compose.yml file
125
- def query_container
126
- containers = get_containers
127
- STDERR.puts "Please select container [#{containers.join(', ')}]"
128
- choice = STDIN.gets.strip
129
- exit if choice.empty?
130
- if !containers.include?(choice)
131
- STDERR.puts "Illegal choice."
132
- exit!
133
- end
134
- choice
135
- end
136
-
137
- # Read containers from docker-compose.yml
138
- def get_containers
139
- content = YAML::load(File.read(docker_compose_file))
140
- content.has_key?('version') ? content['services'].keys : content.keys
17
+ SimpleCov.at_exit do
18
+ SimpleCov.result
141
19
  end
142
20
  end
143
21
 
22
+ # Possibly not the right way to load file.
23
+ require_relative '../lib/dce.rb'
24
+
144
25
  app = DCE.new
145
26
  app.run
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dce
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Fini Hansen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-16 00:00:00.000000000 Z
11
+ date: 2020-02-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: 'Run shell commands in docker '
13
+ description: Run shell commands in docker.
14
14
  email: xen@xen.dk
15
15
  executables:
16
16
  - dce
@@ -38,7 +38,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
38
38
  version: '0'
39
39
  requirements: []
40
40
  rubyforge_project:
41
- rubygems_version: 2.5.2
41
+ rubygems_version: 2.6.14.4
42
42
  signing_key:
43
43
  specification_version: 4
44
44
  summary: DCE