mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-05-07 12:16:04 +00:00
142 lines
4.6 KiB
C#
142 lines
4.6 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace WelsonJS.Launcher
|
|
{
|
|
public partial class InstancesForm : Form
|
|
{
|
|
private string entryFileName;
|
|
private string scriptName;
|
|
private const string timestampFormat = "yyyy-MM-dd HH:mm:ss";
|
|
|
|
public InstancesForm()
|
|
{
|
|
InitializeComponent();
|
|
|
|
entryFileName = "bootstrap.bat";
|
|
}
|
|
|
|
private void InstancesForm_Load(object sender, EventArgs e)
|
|
{
|
|
lvInstances.Items.Clear();
|
|
LoadInstances(Program.GetAppDataPath());
|
|
LoadInstances(Path.GetTempPath());
|
|
}
|
|
|
|
private void LoadInstances(string instancesRoot)
|
|
{
|
|
if (!Directory.Exists(instancesRoot))
|
|
return;
|
|
|
|
foreach (string dir in Directory.GetDirectories(instancesRoot))
|
|
{
|
|
string timestampFile = Path.Combine(dir, ".welsonjs_first_deploy_time");
|
|
string entryScriptFile = Path.Combine(dir, "app.js");
|
|
string firstDeployTime = null;
|
|
|
|
if (File.Exists(timestampFile)
|
|
&& DateTime.TryParse(File.ReadAllText(timestampFile).Trim(), out DateTime parsedTimestamp))
|
|
{
|
|
firstDeployTime = parsedTimestamp.ToString(timestampFormat);
|
|
}
|
|
else if (File.Exists(entryScriptFile))
|
|
{
|
|
firstDeployTime = File.GetCreationTime(entryScriptFile).ToString(timestampFormat);
|
|
}
|
|
|
|
if (firstDeployTime != null)
|
|
{
|
|
lvInstances.Items.Add(new ListViewItem(new[]
|
|
{
|
|
Path.GetFileName(dir),
|
|
firstDeployTime
|
|
})
|
|
{
|
|
Tag = dir
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
private void btnStart_Click(object sender, EventArgs e)
|
|
{
|
|
if (lvInstances.SelectedItems.Count > 0)
|
|
{
|
|
scriptName = txtUseSpecificScript.Text;
|
|
|
|
string instanceId = lvInstances.SelectedItems[0].Text;
|
|
string workingDirectory = Program.GetWorkingDirectory(instanceId, true);
|
|
|
|
Task.Run(() =>
|
|
{
|
|
try
|
|
{
|
|
// Run the appliction
|
|
Program.RunCommandPrompt(workingDirectory, entryFileName, scriptName, cbUseSpecificScript.Checked, cbInteractiveServiceApp.Checked);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message);
|
|
}
|
|
});
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("No selected an instance");
|
|
}
|
|
}
|
|
|
|
private void btnDelete_Click(object sender, EventArgs e)
|
|
{
|
|
if (lvInstances.SelectedItems.Count > 0)
|
|
{
|
|
string instanceId = lvInstances.SelectedItems[0].Text;
|
|
string workingDirectory = Program.GetWorkingDirectory(instanceId, false);
|
|
|
|
if (!Directory.Exists(workingDirectory))
|
|
{
|
|
workingDirectory = Path.Combine(Path.GetTempPath(), instanceId);
|
|
}
|
|
|
|
if (Directory.Exists(workingDirectory))
|
|
{
|
|
Directory.Delete(workingDirectory, true);
|
|
|
|
lvInstances.Items.Clear();
|
|
LoadInstances(Program.GetAppDataPath());
|
|
LoadInstances(Path.GetTempPath());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("No selected an instance");
|
|
}
|
|
}
|
|
|
|
private void btnOpenWithExplorer_Click(object sender, EventArgs e)
|
|
{
|
|
if (lvInstances.SelectedItems.Count > 0)
|
|
{
|
|
string instanceId = lvInstances.SelectedItems[0].Text;
|
|
string workingDirectory = Program.GetWorkingDirectory(instanceId, true);
|
|
|
|
if (Directory.Exists(workingDirectory))
|
|
{
|
|
System.Diagnostics.Process.Start("explorer", workingDirectory);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("No selected an instance");
|
|
}
|
|
}
|
|
|
|
private void cbUseSpecificScript_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
txtUseSpecificScript.Enabled = cbUseSpecificScript.Checked;
|
|
}
|
|
}
|
|
}
|