schroot 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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/schroot.rb +63 -3
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7c8344ab350d85298cc3ee02134b8584d1ff28e8
4
- data.tar.gz: 3971740eff2aee0033b80f010dc46de4a6cfb5c8
3
+ metadata.gz: 386cca6227e48646b9b8fdfddc2460f554e91ce3
4
+ data.tar.gz: ce78042ae3f8533cc7f4544471a7b7b23e742391
5
5
  SHA512:
6
- metadata.gz: e68fee16a58a19b4c58f3b9e79b66738fd4df2786784a2b16061c9f7c35c923cb08408e0f33c18666702adc6d76eeb88875b27240fe81acf202b627afcae9daf
7
- data.tar.gz: 44eb9e29f58f9dd11e47ea1d0e465abae41e0cc86a1ec0b353d35910ee03bf36ef3ffa4ee64d67fd2d4bffebf102878dd688441b767315efa8dca17fbbc57939
6
+ metadata.gz: 52a6f1a2e3a437dbcb0561f48a00e20da570aec93ad3b0abe3b4063759807cfa15549e379038ebe1d368e51a27fa7863ff868e7b37c86df6d5d8ce5807cc6e79
7
+ data.tar.gz: ff1c07b323dc5f10ee658be82d4d96ba86795b7b96b76e040fbb1e784c97fedef88fe587ab5d36f66c41f3b73dee57735b26905bba770e9875935e82168a7e20
data/lib/schroot.rb CHANGED
@@ -1,5 +1,65 @@
1
+ require 'open3'
2
+
3
+ SCHROOT_BASE="/var/lib/schroot"
4
+
5
+ class SchrootError < StandardError
6
+ end
7
+
1
8
  class Schroot
2
- def self.hi
3
- puts "Hello world!"
9
+ def initialize(chroot_name = 'default')
10
+ start(chroot_name)
4
11
  end
5
- end
12
+
13
+ def safe_run(cmd)
14
+ stdin, stdout, stderr, wait_thr = Open3.popen3(cmd)
15
+ if wait_thr.value != 0
16
+ raise SchrootError, "\ncmd=\"%s\"\nreturn_code= %i\nstdout= \"%s\"" % [cmd, wait_thr.value, stdout.gets]
17
+ end
18
+ return stdin, stdout, stderr
19
+ end
20
+
21
+ def command(cmd, kwargs = {})
22
+ raise SchrootError, "No current session" unless @session
23
+ command = ['schroot', '-r', '-c', @session]
24
+ if kwargs.has_key? :user
25
+ command << '-u'
26
+ command << kwargs[:user]
27
+ end
28
+ if kwargs.has_key? :preserve_environment
29
+ command << '-p'
30
+ end
31
+ command << '--'
32
+ command << cmd
33
+ return command.join(" ")
34
+ end
35
+
36
+ def run(cmd, kwargs = {})
37
+ return safe_run(command(cmd,kwargs))
38
+ # TBD
39
+ end
40
+
41
+ def clone
42
+ return Schroot.new(@chroot)
43
+ end
44
+
45
+ def start(chroot_name = 'default')
46
+ stop if @session
47
+ command = ['schroot', '-b', '-c', chroot_name]
48
+ ObjectSpace.define_finalizer(self, proc { stop })
49
+ stdin, stdout, stderr = safe_run("schroot -b -c %s" % chroot_name)
50
+ @chroot = chroot_name
51
+ @session = stdout.gets.strip
52
+ stdin, stdout, stderr = safe_run("schroot --location -c session:%s" % @session)
53
+ @location = stdout.gets.strip
54
+ return @session
55
+ end
56
+
57
+ def stop
58
+ stdin, stdout, stderr = safe_run("schroot -e -c %s" % @session)
59
+ @session = nil
60
+ @location = nil
61
+ end
62
+
63
+ private :safe_run, :command
64
+ attr_reader :session, :location, :chroot
65
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schroot
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
  - Daniil Guzanov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-23 00:00:00.000000000 Z
11
+ date: 2014-05-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Schroot bindings
14
14
  email: melkor217@gmail.com