-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.cs
136 lines (122 loc) · 4.02 KB
/
main.cs
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.IO;
using UniversalEmoticonPackBuilderLib.Builders;
namespace UniversalEmoticonPackBuilderLib
{
public static class UniversalEmoticonPackBuilder {
public static void BuildPacks(PackInfo packinfo, string build_dir, List<string> requested_builders, Dictionary<string, string> map)
{
// Cleanup and create build dir
try
{
Directory.CreateDirectory(build_dir).Delete(true);
Directory.CreateDirectory(build_dir);
}
catch (IOException)
{
}
// Load builders
List<SmilePackBuilder> builders = new List<SmilePackBuilder>();
foreach (var b in requested_builders)
switch (b)
{
case "qip":
builders.Add(new QipSmileConfig(build_dir, packinfo));
break;
case "pidgin":
builders.Add(new PidginSmileConfig(build_dir, packinfo));
break;
case "adium":
builders.Add(new AdiumSmileConfig(build_dir, packinfo));
break;
case "miranda":
builders.Add(new MirandaSmileConfig(build_dir, packinfo));
break;
case "wim":
builders.Add(new WIMSkin(build_dir, packinfo));
break;
case "gmail":
builders.Add(new GMailUserjs(build_dir, packinfo));
break;
}
// Build!
foreach (var s in map)
builders.ForEach(c => c.CopySmiley(s.Key, s.Value.Split(',')));
builders.ForEach(c => c.Finish());
}
public static void BuildPacks(PackInfo packinfo, string build_dir, List<string> requested_builders, string mapfile) {
// Load pack
Dictionary<string, string> map = new Dictionary<string, string>();
if (mapfile.Length > 0)
{
string line;
var mapStream = new StreamReader(mapfile);
while ((line = mapStream.ReadLine()) != null)
{
if (line.IndexOf('#') == 0) continue;
var spl = line.Split(new[] { ':' }, 2);
if (spl.Length < 2) continue;
var sname = spl[0];
var scode = spl[1];
map.Add(sname, scode);
}
}
else
throw new Exception("No map defined");
BuildPacks(
packinfo,
build_dir,
requested_builders,
map
);
}
public static void BuildPacks(BuilderConfig Config)
{
BuildPacks(
new PackInfo() { name = Config.name, version = Config.version, author = Config.author },
"build/",
Config.builders,
Config.map
);
}
}
[DataContract]
public class BuilderConfig
{
[DataMember]
public string name;
[DataMember]
public string version;
[DataMember]
public string author;
[DataMember]
public string map;
[DataMember]
public List<string> builders;
}
// class that stores emoticon pack info
public class PackInfo
{
public string name;
public string version;
public string author;
public string FullName
{
get
{
return String.Format("{0} {1} by {2}", name, version, author);
}
}
public string Description
{
get
{
return FullName;
}
}
}
}