forked from leehosung/LemonEditor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
LMServerWC.m
152 lines (124 loc) · 5.43 KB
/
LMServerWC.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
//
// LMServerWC.m
// IUEditor
//
// Created by jd on 2014. 7. 28..
// Copyright (c) 2014년 JDLab. All rights reserved.
//
#import "LMServerWC.h"
@interface LMServerWC ()
@end
@implementation LMServerWC{
__weak IUProject *_project;
JDShellUtil *restartServerShell;
JDSyncUtil *syncUtil;
}
- (id)initWithWindow:(NSWindow *)window
{
self = [super initWithWindow:window];
if (self) {
// Initialization code here.
syncUtil = [[JDSyncUtil alloc] init];
syncUtil.delegate = self;
}
return self;
}
- (void)setProject:(IUProject *)project{
_project = project;
}
- (IUProject *)project{
return _project;
}
- (IUServerInfo*)serverInfo{
return _project.serverInfo;
}
/* do not use - db overwrite problem
- (IBAction)download:(id)sender{
NSAssert(_notificationSender, @"Should Have Notification Sender");
if (syncUtil.isSyncing) {
[JDLogUtil alert:@"Syncing was Progressing. Kill it and start new downloading"];
[syncUtil terminate];
}
if ([self.serverInfo isSyncValid]) {
syncUtil.user = self.serverInfo.syncUser;
syncUtil.host = self.serverInfo.host;
syncUtil.password = self.serverInfo.syncPassword;
syncUtil.protocol = 0;
syncUtil.remoteDirectory = self.serverInfo.remotePath;
syncUtil.localDirectory = self.serverInfo.localPath;
syncUtil.syncDirectory = self.serverInfo.syncItem;
[[NSNotificationCenter defaultCenter] postNotificationName:IUNotificationConsoleStart object:_notificationSender userInfo:nil];
syncUtil.tag = 0; //0 for download, 1 for upload
[syncUtil download];
}
else {
[JDLogUtil alert:@"server info not valid. click project and set server info."];
}
[self.window.sheetParent endSheet:self.window returnCode:NSModalResponseOK];
}
*/
- (IBAction)upload:(id)sender{
NSAssert(_notificationSender, @"Should Have Notification Sender");
if (syncUtil.isSyncing) {
[JDLogUtil alert:@"Upload was Progressing. Kill it and start new uploading"];
[syncUtil terminate];
}
if ([self.serverInfo isSyncValid]) {
syncUtil.user = self.serverInfo.syncUser;
syncUtil.host = self.serverInfo.host;
syncUtil.password = self.serverInfo.syncPassword;
syncUtil.protocol = 0;
syncUtil.remoteDirectory = self.serverInfo.remotePath;
syncUtil.localDirectory = _project.absoluteBuildPath;
[[NSNotificationCenter defaultCenter] postNotificationName:IUNotificationConsoleStart object:_notificationSender userInfo:nil];
[syncUtil upload];
}
else {
[JDLogUtil alert:@"server info not valid. click project and set server info."];
}
[self.window.sheetParent endSheet:self.window returnCode:NSModalResponseOK];
}
- (IBAction)serverRestart:(id)sender{
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"ssh" ofType:@"sh"];
if (self.serverInfo.restartPassword && self.serverInfo.host && self.serverInfo.restartCommand) {
NSString *command = [NSString stringWithFormat:@"%@ %@ %@ %@ %@",filePath , self.serverInfo.restartUser, self.serverInfo.restartPassword, self.serverInfo.host, self.serverInfo.restartCommand];
restartServerShell = [[JDShellUtil alloc] init];
[restartServerShell execute:command delegate:self];
[[NSNotificationCenter defaultCenter] postNotificationName:IUNotificationConsoleStart object:_notificationSender];
}
else {
[JDLogUtil alert:@"Set Project Property First"];
}
[self.window.sheetParent endSheet:self.window returnCode:NSModalResponseOK];
}
- (void)syncUtilReceivedStdOutput:(NSString*)aMessage{
[[NSNotificationCenter defaultCenter] postNotificationName:IUNotificationConsoleLog object:_notificationSender userInfo:@{IUNotificationConsoleLogText: aMessage}];
}
- (void)syncUtilReceivedStdError:(NSString*)aMessage{
[[NSNotificationCenter defaultCenter] postNotificationName:IUNotificationConsoleLog object:_notificationSender userInfo:@{IUNotificationConsoleLogText: aMessage}];
}
- (void)syncFinished:(int)terminationStatus{
[[NSNotificationCenter defaultCenter] postNotificationName:IUNotificationConsoleEnd object:_notificationSender userInfo:nil];
}
- (void)shellUtil:(JDShellUtil*)util standardOutputDataReceived:(NSData*)data{
NSString *log = [[NSString alloc] initWithData:data encoding:4];
[[NSNotificationCenter defaultCenter] postNotificationName:IUNotificationConsoleLog object:_notificationSender userInfo:@{@"Log": log}];
}
- (void)shellUtil:(JDShellUtil*)util standardErrorDataReceived:(NSData*)data{
NSString *log = [[NSString alloc] initWithData:data encoding:4];
[[NSNotificationCenter defaultCenter] postNotificationName:IUNotificationConsoleLog object:_notificationSender userInfo:@{@"Log": log}];
}
- (void) shellUtilExecutionFinished:(JDShellUtil *)util{
if (util.name) {
NSString *log = [NSString stringWithFormat:@" ------ %@ Ended -----", util.name];
[[NSNotificationCenter defaultCenter] postNotificationName:IUNotificationConsoleLog object:_notificationSender userInfo:@{IUNotificationConsoleLogText: log}];
}
[[NSNotificationCenter defaultCenter] postNotificationName:IUNotificationConsoleEnd object:_notificationSender];
}
- (IBAction)close:(id)sender{
[self.window.sheetParent endSheet:self.window returnCode:NSModalResponseOK];
}
- (void)cancelOperation:(id)sender{
[self close:self];
}
@end