//FIXME: needs better file list and handling of subdirectories
		public static void Upload (TizenSdkInfo sdkInfo,
					   TizenProjectConfiguration conf,
					   string[] extraPaths,
					   TextWriter outWriter,
					   TextWriter errorWriter)
		{
			var sdb = new TizenSdkSdb (conf, sdkInfo);

			var outDirFiles = Directory.GetFiles (conf.OutputDirectory, "*", SearchOption.TopDirectoryOnly);
			var op = conf.OutputDirectory.ParentDirectory;
			var localPaths = new List<string> ();
			for (int i = 0; i < outDirFiles.Length; i++)
				localPaths.Add (op.Combine (outDirFiles[i]));
			if (extraPaths != null)
				localPaths.AddRange (extraPaths);

			var s = TizenSdkSdb.DevicePathSeparator;
			var remoteDir = TizenSdkSdb.DeviceHome + s + conf.ParentItem.Name;
			foreach (var localPath in localPaths) {
				var f = Path.GetFileName (localPath);
				var remotePath = remoteDir + s + f;

				sdb.Push (localPath, remotePath);
			}
		}
		public static SdbShellCommand CreateProcess (
			TizenExecutionCommand cmd,
			string sdbOptions,
			TizenSdkInfo sdkInfo,
			Action<string> stdOut, Action<string> stdErr)
		{
			string exec = GetCommandString (cmd, sdbOptions);

			var sdb = new TizenSdkSdb (cmd.Config, sdkInfo);

			return new SdbShellCommand (sdb, exec, stdOut, stdErr);
		}
		public SdbShellCommand (
			TizenSdkSdb sdb,
			string command,
			Action<string> stdOut,
			Action<string> stdErr)
		{
			this.sdb = sdb;
			this.command = command;
			this.stdErr = stdErr;
			this.stdOut = stdOut;
		}