dyn-ruby-win32daemon 0.0.1
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 +7 -0
- data/README.md +39 -0
- data/bin/dyn-daemon +63 -0
- metadata +109 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9865e3c62d77afeeb77227f4403b00e1affc9315
|
4
|
+
data.tar.gz: 59f745d4d7e18172d2d386cc31df64f65b78d7b9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a090d105c804629ad0b6b95207113ca9f5f5ece176aa32c663888109f68e7c620d858792fbd3d46690461d53d8aaeaa9e82d7bea717bfdfc2c5183f00e338860
|
7
|
+
data.tar.gz: 8201263ce061291ec86be7ea25795a1b2cb99a7123070144ed2ccc720aaf8b5738ffca61351294b11909a98f617db3393b7d587fe61ba12f7af903877dc2e517
|
data/README.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# DynTask
|
2
|
+
|
3
|
+
First of all, inspiration DynTask comes from the filewatcher project. The goal is a bit different since the goal is to provide a very basic system to manage chainable tasks.
|
4
|
+
|
5
|
+
|
6
|
+
## Kinds of task
|
7
|
+
|
8
|
+
when depending on source (and/or output) file or content to be copied in some particular path, one may be interested in:
|
9
|
+
|
10
|
+
* local task: everything is executed inside the same computer. This allows to write task in any path different from the source file path.
|
11
|
+
* remote task: when using docker or dropbox-like tools, a synchronized task can be executed in a different computer or docker container. As a constraint, the source (and/or output) file path and the task file path have to be defined relatively to a common root independently in any synchronized computers supposed to execute the tasks. Obviously, the task file and source file can be in the same directory which is the simplest case.
|
12
|
+
|
13
|
+
The goal of such approach is to watch only one folder containing task file with predefined extension and not subdirectories which makes the watching less reactive.
|
14
|
+
|
15
|
+
## Main actions to perform
|
16
|
+
|
17
|
+
* dyn
|
18
|
+
* dyn-cli
|
19
|
+
* pdflatex
|
20
|
+
* pandoc
|
21
|
+
|
22
|
+
|
23
|
+
## Examples
|
24
|
+
|
25
|
+
```{bash}
|
26
|
+
## To specify a folder to watch with specific tasks
|
27
|
+
dyntask-init default <dyndoc-project-folder>:dyn,pandoc,dyn_cli
|
28
|
+
|
29
|
+
## Optional for pandoc task
|
30
|
+
dyntask-init pandoc-extra dir --force /dyndoc-library/pandoc-extra
|
31
|
+
##
|
32
|
+
dyntask-init pandoc-extra wget
|
33
|
+
```
|
34
|
+
|
35
|
+
## How this works
|
36
|
+
|
37
|
+
* add_task: to push task
|
38
|
+
* save_tasks: to save all the pushed tasks
|
39
|
+
* read_tasks: read first task and pop to the stack of tasks
|
data/bin/dyn-daemon
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "fileutils"
|
3
|
+
SRV=ARGV[1].strip
|
4
|
+
exit unless ["dyn-srv","dyntask-srv"].include? SRV
|
5
|
+
FileUtils.mkdir_p File.join(ENV["USERPROFILE"],"dyndoc","log")
|
6
|
+
DYN_DAEMON_LOG_FILE = File.join(ENV["USERPROFILE"],"dyndoc","log","win32daemon_")+SRV+".log"
|
7
|
+
DYN_DAEMON_DIR=File.dirname `where ruby`.strip
|
8
|
+
|
9
|
+
ACTION=ARGV[2] || "status"
|
10
|
+
|
11
|
+
case ACTION
|
12
|
+
when "start"
|
13
|
+
begin
|
14
|
+
require 'win32/daemon'
|
15
|
+
include Win32
|
16
|
+
|
17
|
+
class DynDaemon < Daemon
|
18
|
+
|
19
|
+
def service_init
|
20
|
+
File.open(DYN_DAEMON_LOG_FILE, 'a'){ |f| f.puts "Initializing service #{Time.now}" }
|
21
|
+
|
22
|
+
@server_pid = Process.spawn 'dyntask-server', :chdir => DYN_DAEMON_DIR, :err => [DYN_DAEMON_LOG_FILE, 'a']
|
23
|
+
File.open(DYN_DAEMON_LOG_FILE, 'a'){ |f| f.puts @server_pid.inspect }
|
24
|
+
end
|
25
|
+
|
26
|
+
def service_main
|
27
|
+
File.open(DYN_DAEMON_LOG_FILE, 'a'){ |f| f.puts "Service is running #{Time.now} with pid #{@server_pid}" }
|
28
|
+
while running?
|
29
|
+
sleep 10
|
30
|
+
endx
|
31
|
+
end
|
32
|
+
|
33
|
+
def service_stop
|
34
|
+
File.open(DYN_DAEMON_LOG_FILE, 'a'){ |f| f.puts "Stopping server thread #{Time.now}" }
|
35
|
+
system "taskkill /PID #{@server_pid} /T /F"
|
36
|
+
Process.waitall
|
37
|
+
File.open(DYN_DAEMON_LOG_FILE, 'a'){ |f| f.puts "Service stopped #{Time.now}" }
|
38
|
+
exit!
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
DynDaemon.mainloop
|
43
|
+
|
44
|
+
rescue Exception => e
|
45
|
+
File.open(DYN_DAEMON_LOG_FILE,'a+'){ |f| f.puts " ***Daemon failure #{Time.now} exception=#{e.inspect}\n#{e.backtrace.join($/)}" }
|
46
|
+
raise
|
47
|
+
end
|
48
|
+
when "stop"
|
49
|
+
require 'sys/proctable'
|
50
|
+
|
51
|
+
pids = []
|
52
|
+
|
53
|
+
ProcTable.ps{ |s|
|
54
|
+
pids.push(s.pid) if s.cmdline =~ /#{SRV}/
|
55
|
+
}
|
56
|
+
|
57
|
+
p Process.kill(9,pids.last)
|
58
|
+
when "status"
|
59
|
+
require 'sys/proctable'
|
60
|
+
ProcTable.ps{ |s|
|
61
|
+
puts s.pid+"->"+s.cmdline if s.cmdline =~ /#{SRV}/
|
62
|
+
}
|
63
|
+
end
|
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dyn-ruby-win32daemon
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
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
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: win32-service
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.8'
|
20
|
+
- - '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.8.7
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.8'
|
30
|
+
- - '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.8.7
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: win32-process
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ~>
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0.8'
|
40
|
+
- - '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.8.3
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ~>
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0.8'
|
50
|
+
- - '>='
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 0.8.3
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: sys-proctable
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ~>
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.0'
|
60
|
+
- - '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.0.0
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.0'
|
70
|
+
- - '>='
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 1.0.0
|
73
|
+
description: |2
|
74
|
+
Managing dyn daemon.
|
75
|
+
email: rdrouilh@gmail.com
|
76
|
+
executables:
|
77
|
+
- dyn-daemon
|
78
|
+
extensions: []
|
79
|
+
extra_rdoc_files: []
|
80
|
+
files:
|
81
|
+
- bin/dyn-daemon
|
82
|
+
- README.md
|
83
|
+
homepage: http://rcqls.github.io
|
84
|
+
licenses:
|
85
|
+
- MIT
|
86
|
+
- GPL-2
|
87
|
+
metadata: {}
|
88
|
+
post_install_message:
|
89
|
+
rdoc_options: []
|
90
|
+
require_paths:
|
91
|
+
- lib
|
92
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
requirements:
|
103
|
+
- none
|
104
|
+
rubyforge_project:
|
105
|
+
rubygems_version: 2.0.14
|
106
|
+
signing_key:
|
107
|
+
specification_version: 4
|
108
|
+
summary: dyn-srv and dyntask daemon
|
109
|
+
test_files: []
|