Skip to content

Commit 973cce8

Browse files
committed
✨ Add automatic upgrade
1 parent 98c1a1f commit 973cce8

File tree

12 files changed

+167
-29
lines changed

12 files changed

+167
-29
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ build/
1313

1414
bin/query_cache/
1515
bin/image_cache/
16+
bin/update_cache/

assets/alfredhatcog.png

14.6 KB
Loading

assets/icon.png

-3.21 KB
Loading

assets/question.png

-808 Bytes
Loading

bin/main.dart

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,41 @@
11
import 'dart:io' show File, exitCode, stdout;
2-
import 'dart:convert';
2+
import 'dart:convert' show HtmlEscape;
33

44
import 'package:alfred_workflow/alfred_workflow.dart'
55
show
6+
AlfredCache,
67
AlfredItem,
78
AlfredItemIcon,
89
AlfredItemText,
910
AlfredItems,
11+
AlfredUpdater,
1012
AlfredWorkflow;
1113
import 'package:algolia/algolia.dart' show AlgoliaQuerySnapshot;
1214
import 'package:args/args.dart' show ArgParser, ArgResults;
15+
import 'package:stash/stash_api.dart' show CreatedExpiryPolicy;
1316

17+
import 'src/constants/config.dart';
1418
import 'src/models/search_result.dart' show SearchResult;
1519
import 'src/services/algolia_search.dart' show AlgoliaSearch;
16-
import 'src/services/emoji_downloader.dart';
20+
import 'src/services/emoji_downloader.dart' show EmojiDownloader;
1721

1822
const HtmlEscape htmlEscape = HtmlEscape();
19-
20-
final AlfredWorkflow workflow = AlfredWorkflow();
21-
23+
final AlfredWorkflow workflow = AlfredWorkflow(
24+
cache: AlfredCache<AlfredItems>(
25+
fromEncodable: (Map<String, dynamic> json) => AlfredItems.fromJson(json),
26+
maxEntries: 1024,
27+
expiryPolicy: const CreatedExpiryPolicy(
28+
Duration(days: 7),
29+
),
30+
),
31+
);
32+
final AlfredUpdater updater = AlfredUpdater(
33+
githubRepositoryUrl: Config.githubRepositoryUrl,
34+
currentVersion: Config.version,
35+
updateInterval: Duration(days: 7),
36+
);
2237
bool verbose = false;
38+
bool upgrade = false;
2339

2440
void main(List<String> arguments) async {
2541
try {
@@ -28,10 +44,18 @@ void main(List<String> arguments) async {
2844
workflow.clearItems();
2945

3046
final ArgParser parser = ArgParser()
31-
..addOption('query', abbr: 'q', mandatory: true)
32-
..addFlag('verbose', abbr: 'v', defaultsTo: false);
47+
..addOption('query', abbr: 'q', defaultsTo: '')
48+
..addFlag('verbose', abbr: 'v', defaultsTo: false)
49+
..addFlag('upgrade', abbr: 'u', defaultsTo: false);
3350
final ArgResults args = parser.parse(arguments);
3451

52+
upgrade = args['upgrade'];
53+
if (upgrade) {
54+
stdout.writeln('Upgrading workflow...');
55+
56+
return await updater.update();
57+
}
58+
3559
verbose = args['verbose'];
3660

3761
final String query = args['query'].replaceAll(RegExp(r'\s+'), ' ').trim();
@@ -52,14 +76,28 @@ void main(List<String> arguments) async {
5276
} catch (err) {
5377
exitCode = 1;
5478
workflow.addItem(AlfredItem(title: err.toString()));
55-
if (verbose) {
56-
rethrow;
57-
}
79+
if (verbose) rethrow;
5880
} finally {
59-
workflow.run();
81+
if (!upgrade) {
82+
if (await updater.updateAvailable()) {
83+
workflow.run(addToBeginning: upgradeItem);
84+
} else {
85+
workflow.run();
86+
}
87+
}
6088
}
6189
}
6290

91+
const upgradeItem = AlfredItem(
92+
title: 'Auto-Update available!',
93+
subtitle: 'Press <enter> to auto-update to a new version of this workflow.',
94+
arg: 'update:workflow',
95+
match:
96+
'Auto-Update available! Press <enter> to auto-update to a new version of this workflow.',
97+
icon: AlfredItemIcon(path: 'alfredhatcog.png'),
98+
valid: true,
99+
);
100+
63101
void _showPlaceholder() {
64102
workflow.addItem(
65103
const AlfredItem(

bin/src/constants/config.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
class Config {
22
Config._();
33

4+
static const String version = '1.0.3';
5+
static final Uri githubRepositoryUrl =
6+
Uri.https('github.com', '/techouse/alfred-gitmoji');
47
static const String algoliaApplicationId = 'WODHKE4WZG';
58
static const String algoliaSearchOnlyApiKey =
69
'7456cdd91ba8d4f87846549697397759';

bin/src/services/algolia_search.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ class AlgoliaSearch {
1717
.query(queryString)
1818
.setAttributesToRetrieve(SearchResult.attributesToRetrieve)
1919
.setPage(0)
20-
.setHitsPerPage(10)
20+
.setHitsPerPage(20)
2121
.getObjects();
2222
}

build.sh

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
if [ -d "build/dist" ]; then
33
rm -rf build/dist
44
fi
5-
mkdir -p build/dist
6-
cp -r info.plist assets/* LICENSE README.md version build/dist
7-
dart compile exe bin/main.dart -o build/dist/docs -S /dev/null --verbosity error
5+
6+
if [ -d "build/debug_info" ]; then
7+
rm -rf build/debug_info
8+
fi
9+
10+
mkdir -p build/dist build/debug_info
11+
cp -r info.plist assets/* LICENSE README.md build/dist
12+
dart compile exe bin/main.dart -o build/dist/gm -S build/debug_info/gitmojis

info.plist

Lines changed: 100 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,20 @@
88
<string>Productivity</string>
99
<key>connections</key>
1010
<dict>
11-
<key>F6F9BD70-3218-4D80-A4D2-63C6A77142CA</key>
11+
<key>E50F9D21-04DF-4185-A2CB-40B7111F31C0</key>
1212
<array>
13+
<dict>
14+
<key>destinationuid</key>
15+
<string>F404D930-F17D-43D0-B06B-28D6A000A93F</string>
16+
<key>modifiers</key>
17+
<integer>0</integer>
18+
<key>modifiersubtext</key>
19+
<string></string>
20+
<key>sourceoutputuid</key>
21+
<string>D850B7E1-B6F7-4A5E-8EF6-522CBF4E0A21</string>
22+
<key>vitoclose</key>
23+
<false/>
24+
</dict>
1325
<dict>
1426
<key>destinationuid</key>
1527
<string>B1E797A8-B1C1-4A07-A340-67D2AC741B3C</string>
@@ -20,6 +32,19 @@
2032
<key>vitoclose</key>
2133
<false/>
2234
</dict>
35+
</array>
36+
<key>F6F9BD70-3218-4D80-A4D2-63C6A77142CA</key>
37+
<array>
38+
<dict>
39+
<key>destinationuid</key>
40+
<string>E50F9D21-04DF-4185-A2CB-40B7111F31C0</string>
41+
<key>modifiers</key>
42+
<integer>0</integer>
43+
<key>modifiersubtext</key>
44+
<string></string>
45+
<key>vitoclose</key>
46+
<false/>
47+
</dict>
2348
<dict>
2449
<key>destinationuid</key>
2550
<string>D6793604-058B-4867-A1EA-BF8C2B8B3733</string>
@@ -42,6 +67,59 @@
4267
<string>Gitmoji</string>
4368
<key>objects</key>
4469
<array>
70+
<dict>
71+
<key>config</key>
72+
<dict>
73+
<key>concurrently</key>
74+
<false/>
75+
<key>escaping</key>
76+
<integer>102</integer>
77+
<key>script</key>
78+
<string>./gm --upgrade</string>
79+
<key>scriptargtype</key>
80+
<integer>1</integer>
81+
<key>scriptfile</key>
82+
<string></string>
83+
<key>type</key>
84+
<integer>0</integer>
85+
</dict>
86+
<key>type</key>
87+
<string>alfred.workflow.action.script</string>
88+
<key>uid</key>
89+
<string>F404D930-F17D-43D0-B06B-28D6A000A93F</string>
90+
<key>version</key>
91+
<integer>2</integer>
92+
</dict>
93+
<dict>
94+
<key>config</key>
95+
<dict>
96+
<key>conditions</key>
97+
<array>
98+
<dict>
99+
<key>inputstring</key>
100+
<string>{query}</string>
101+
<key>matchcasesensitive</key>
102+
<false/>
103+
<key>matchmode</key>
104+
<integer>0</integer>
105+
<key>matchstring</key>
106+
<string>update:workflow</string>
107+
<key>outputlabel</key>
108+
<string>Update Workflow</string>
109+
<key>uid</key>
110+
<string>D850B7E1-B6F7-4A5E-8EF6-522CBF4E0A21</string>
111+
</dict>
112+
</array>
113+
<key>elselabel</key>
114+
<string>Copy to Clipboard</string>
115+
</dict>
116+
<key>type</key>
117+
<string>alfred.workflow.utility.conditional</string>
118+
<key>uid</key>
119+
<string>E50F9D21-04DF-4185-A2CB-40B7111F31C0</string>
120+
<key>version</key>
121+
<integer>1</integer>
122+
</dict>
45123
<dict>
46124
<key>config</key>
47125
<dict>
@@ -89,7 +167,7 @@
89167
<key>runningsubtext</key>
90168
<string>Fetching gitmojis ...</string>
91169
<key>script</key>
92-
<string>./docs -q "{query}"</string>
170+
<string>./gm -q "{query}"</string>
93171
<key>scriptargtype</key>
94172
<integer>0</integer>
95173
<key>scriptfile</key>
@@ -137,29 +215,43 @@
137215
<key>B1E797A8-B1C1-4A07-A340-67D2AC741B3C</key>
138216
<dict>
139217
<key>xpos</key>
140-
<integer>285</integer>
218+
<integer>845</integer>
141219
<key>ypos</key>
142-
<integer>220</integer>
220+
<integer>205</integer>
143221
</dict>
144222
<key>D6793604-058B-4867-A1EA-BF8C2B8B3733</key>
145223
<dict>
146224
<key>xpos</key>
147-
<integer>290</integer>
225+
<integer>580</integer>
226+
<key>ypos</key>
227+
<integer>395</integer>
228+
</dict>
229+
<key>E50F9D21-04DF-4185-A2CB-40B7111F31C0</key>
230+
<dict>
231+
<key>xpos</key>
232+
<integer>580</integer>
233+
<key>ypos</key>
234+
<integer>105</integer>
235+
</dict>
236+
<key>F404D930-F17D-43D0-B06B-28D6A000A93F</key>
237+
<dict>
238+
<key>xpos</key>
239+
<integer>845</integer>
148240
<key>ypos</key>
149-
<integer>365</integer>
241+
<integer>10</integer>
150242
</dict>
151243
<key>F6F9BD70-3218-4D80-A4D2-63C6A77142CA</key>
152244
<dict>
153245
<key>xpos</key>
154-
<integer>55</integer>
246+
<integer>325</integer>
155247
<key>ypos</key>
156248
<integer>220</integer>
157249
</dict>
158250
</dict>
159251
<key>variablesdontexport</key>
160252
<array/>
161253
<key>version</key>
162-
<string>1.0.2</string>
254+
<string>1.0.3</string>
163255
<key>webaddress</key>
164256
<string>https://github.com/techouse</string>
165257
</dict>

pubspec.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ packages:
1313
description:
1414
path: "."
1515
ref: master
16-
resolved-ref: f00676352fc5979de0cc9dd7f83a72bbbca298d8
16+
resolved-ref: "3bcaed9a5848e962ece41074eebbe07d236cad18"
1717
url: "git@github.com:techouse/alfred_workflow.git"
1818
source: git
19-
version: "0.0.4"
19+
version: "0.0.5"
2020
algolia:
2121
dependency: "direct main"
2222
description:
@@ -198,7 +198,7 @@ packages:
198198
name: petitparser
199199
url: "https://pub.dartlang.org"
200200
source: hosted
201-
version: "4.4.0"
201+
version: "5.0.0"
202202
pub_semver:
203203
dependency: transitive
204204
description:
@@ -275,7 +275,7 @@ packages:
275275
name: xml
276276
url: "https://pub.dartlang.org"
277277
source: hosted
278-
version: "5.3.1"
278+
version: "5.4.1"
279279
yaml:
280280
dependency: transitive
281281
description:

0 commit comments

Comments
 (0)