dyn-ruby-launchctl 0.1.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.
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: []