dyn-ruby-launchctl 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1 -0
  3. data/bin/dyn-daemon +91 -0
  4. metadata +49 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f7bf1cc2e0dc0245cbdf517893520740041b776c
4
+ data.tar.gz: b9bcc0fa115cf31ce9718889e61baaa02519f6ac
5
+ SHA512:
6
+ metadata.gz: 66b6433dbc685c0d572459e1f407b56178259350e56007f512e1f020b354ffbb32608491f0da836690af468a5d7a189e616c5ab17c86500be7fe56677fb59a23
7
+ data.tar.gz: 573e6854a43716ee48a2fee670d6747828e2dc7a429006066d9475ed7397c014992687aba2009127a191f7caa68eaab689fe805d146cfd6c333bdd04200f5adf
@@ -0,0 +1 @@
1
+ # Dyn Daemon for MacOSX
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby
2
+ require "fileutils"
3
+ SRV=ARGV[0].strip
4
+ exit! unless ["srv","dyntask","help","path","status"].include? SRV
5
+ CMD={ "srv" => "dyn-srv", "dyntask" => "dyntask-server"}[SRV]
6
+ if CMD
7
+ FileUtils.mkdir_p File.join(ENV["HOME"],"dyndoc","log")
8
+ DYN_DAEMON_ERR_FILE = File.join(ENV["HOME"],"dyndoc","log","launchctl_")+CMD+".err"
9
+ DYN_DAEMON_OUT_FILE = File.join(ENV["HOME"],"dyndoc","log","launchctl_")+CMD+".out"
10
+ end
11
+
12
+ unless RUBY_PLATFORM =~ /darwin/
13
+ puts "Only available for MacOSX!"
14
+ exit!
15
+ end
16
+
17
+ case SRV
18
+ when "help"
19
+ puts <<-DOC
20
+ Service helpers to launch dyn-srv or dyntask service.
21
+ Usage:
22
+ dyn-daemon srv|dyntask new|load => create when not existing the dyntask service
23
+ dyn-daemon srv|dyntask delete|unload => unload existing service
24
+ dyn-daemon srv|dyntask start/stop => start/stop the dyntask service
25
+ dyn-daemon srv|dyntask log => to watch log files
26
+
27
+ dyn-daemon status|list => status of dyntask service
28
+ dyn-daemon path get|set => set PATH env to $PATH
29
+ DOC
30
+ when "path"
31
+ mode=ARGV[1]
32
+ mode="get" if !mode or mode.empty?
33
+ if mode=="get"
34
+ puts `launchctl getenv PATH`
35
+ elsif mode=="set"
36
+ `launchctl setenv PATH $PATH`
37
+ end
38
+ when "status", "list"
39
+ puts `launchctl list | grep dyn`
40
+ else
41
+ dyn_plist=File.expand_path("~/Library/LaunchAgents/#{CMD}.plist")
42
+ mode=ARGV[1]
43
+ mode="list" if !mode or mode.empty?
44
+ case mode
45
+ when "load","new"
46
+ unless File.exists? dyn_plist
47
+ plist= <<-END.sub(/CMD/,CMD).sub(/DYNCMD/,`which #{CMD}`.strip).sub(/ERR_FILE/,DYN_DAEMON_ERR_FILE).sub(/OUT_FILE/,DYN_DAEMON_OUT_FILE)
48
+ <?xml version="1.0" encoding="UTF-8"?>
49
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
50
+ <plist version="1.0">
51
+ <dict>
52
+ <key>Label</key>
53
+ <string>CMD</string>
54
+ <key>ProgramArguments</key>
55
+ <array>
56
+ <string>DYNCMD</string>
57
+ </array>
58
+ <key>RunAtLoad</key>
59
+ <true/>
60
+ <key>KeepAlive</key>
61
+ <dict>
62
+ <key>Crashed</key>
63
+ <true/>
64
+ </dict>
65
+ <key>StandardErrorPath</key>
66
+ <string>ERR_FILE</string>
67
+ <key>StandardOutPath</key>
68
+ <string>OUT_FILE</string>
69
+ </dict>
70
+ </plist>
71
+ END
72
+ File.open(dyn_plist,"w") do |f|
73
+ f << plist
74
+ end
75
+ end
76
+ `launchctl load #{dyn_plist}`
77
+ when "unload","delete"
78
+ if File.exists? dyn_srv_plist
79
+ `launchctl unload #{dyn_plist}`
80
+ else
81
+ puts "Service #{CMD} not available. Create it first: dyn-daemon #{SRV} new"
82
+ end
83
+ when "start", "stop"
84
+ `launchctl #{mode} #{CMD}`
85
+ when "log"
86
+ puts "Error:"
87
+ puts File.read(DYN_DAEMON_ERR_FILE)
88
+ puts "Out:"
89
+ puts File.read(DYN_DAEMON_OUT_FILE)
90
+ end
91
+ end
metadata ADDED
@@ -0,0 +1,49 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dyn-ruby-launchctl
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - CQLS
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-16 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |2
14
+ Managing dyn daemon.
15
+ email: rdrouilh@gmail.com
16
+ executables:
17
+ - dyn-daemon
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - bin/dyn-daemon
22
+ - README.md
23
+ homepage: http://rcqls.github.io
24
+ licenses:
25
+ - MIT
26
+ - GPL-2
27
+ metadata: {}
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements:
43
+ - none
44
+ rubyforge_project:
45
+ rubygems_version: 2.0.14
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: dyn-srv and dyntask daemon
49
+ test_files: []