Compare commits

...

414 Commits

Author SHA1 Message Date
Lea Anthony 2432fccf71 v2.0.0-alpha.35 2021-02-22 20:17:22 +11:00
Lea Anthony 70510fd180 @wails/runtime v1.3.10 2021-02-22 20:16:14 +11:00
Lea Anthony 17c6201469 Menu off by default in dev. Toggle with backtick. 2021-02-22 20:14:44 +11:00
Lea Anthony 0f209c8900 v2.0.0-alpha.34 2021-02-22 19:39:07 +11:00
Lea Anthony cbf043585c v2.0.0-alpha.33 2021-02-22 19:33:44 +11:00
Lea Anthony 5ae621ceaa Start signal handler a little later 2021-02-22 19:33:18 +11:00
Lea Anthony 1231b59443 better signal handling for shutdown 2021-02-22 17:39:33 +11:00
Lea Anthony b18d4fbf41 v2.0.0-alpha.32 2021-02-22 09:00:47 +11:00
Lea Anthony 9ec5605e63 fix: loglevel duplication 2021-02-22 09:00:09 +11:00
Lea Anthony 98a4de8878 v2.0.0-alpha.31 2021-02-21 20:38:14 +11:00
Lea Anthony 5fe709f558 Trigger clean shutdown on Quit 2021-02-21 20:37:42 +11:00
Lea Anthony 5231a6893b v2.0.0-alpha.30 2021-02-21 19:28:07 +11:00
Lea Anthony 74f3ce990f Support loglevel flag in dev mode 2021-02-21 19:26:20 +11:00
Lea Anthony 998a913853 Hide dev warnings by default 2021-02-21 16:36:56 +11:00
Lea Anthony 964844835c Better Wails update messaging 2021-02-21 06:12:19 +11:00
Lea Anthony 4e152bb849 v2.0.0-alpha.29 2021-02-21 05:56:11 +11:00
Lea Anthony 51133d098c Slight refactor of backend module generation 2021-02-21 05:52:42 +11:00
Lea Anthony d4191e7d1b Support parsing keyboard shortcuts 2021-02-20 21:32:32 +11:00
Lea Anthony 9c273bc745 v2.0.0-alpha.28 2021-02-20 16:04:42 +11:00
Lea Anthony c6f6ad6beb Improved dev reload. Early abort for bad app. Don't reload if bad build. 2021-02-20 16:04:03 +11:00
Lea Anthony 4362a14459 Dev colours 2021-02-20 15:25:40 +11:00
Lea Anthony 0080e9e311 Gimme some colour 2021-02-20 15:14:20 +11:00
Lea Anthony 83d9297cac v2.0.0-alpha.27 2021-02-20 14:51:38 +11:00
Lea Anthony d8ad250608 Template Image support 2021-02-19 05:25:23 +11:00
Lea Anthony eac8880f6d Initial support for tray menus 2021-02-13 20:26:21 +11:00
Lea Anthony f47100e71c Sort generated methods to appease git diff. 2021-02-13 18:04:00 +11:00
Lea Anthony 9a81a57d13 Revert bootstrapping. 2021-02-12 15:08:54 +11:00
Lea Anthony 354429bc28 Support UpdateTrayLabel in dev mode. Small refactor. 2021-02-12 14:52:47 +11:00
Lea Anthony 99d4d9490c Improved dialog support for dev mode 2021-02-12 14:50:58 +11:00
Lea Anthony 61afe711bd v2.0.0-alpha.26 2021-02-11 07:17:28 +11:00
Lea Anthony 6e3cfc157f Add bridge.js 2021-02-11 07:09:40 +11:00
Lea Anthony 30d762372f @wails/runtime v1.3.9 2021-02-11 07:04:01 +11:00
Lea Anthony 2dbaabb74c Keep package.json files 2021-02-11 07:02:57 +11:00
Lea Anthony f8bae0430f Add windowDrag shim for bridge 2021-02-11 06:52:07 +11:00
Lea Anthony 21c07497d7 Move bridge to Svelte build. Initial support for trays in dev mode 2021-02-10 22:53:14 +11:00
Lea Anthony 9b9bcd657f v2.0.0-alpha.25 2021-02-09 21:21:51 +11:00
Lea Anthony 02038aa543 Bugfix dialogs 2021-02-09 21:21:31 +11:00
Lea Anthony 9910d1127a v2.0.0-alpha.24 2021-02-09 21:11:11 +11:00
Lea Anthony 21a0245985 Generate bindings in package. Support dialogs in dev mode. 2021-02-09 21:10:06 +11:00
Lea Anthony e860f3a00e v2.0.0-alpha.23 2021-02-08 08:57:32 +11:00
Lea Anthony 2e480d2c52 Move to Go 1.16 2021-02-08 08:55:18 +11:00
Lea Anthony 2c0f93d647 v2.0.0-alpha.22 2021-02-08 06:52:21 +11:00
Lea Anthony 41f973c7d5 Update runtime package 2021-02-08 06:51:49 +11:00
Lea Anthony 2d1447d558 darwin bridge js 2021-02-08 06:37:57 +11:00
Lea Anthony 7c22cbcf38 Bridge working for calls. Notify TBD 2021-02-08 06:36:13 +11:00
Lea Anthony e4b03f510b First step to bridge support 2021-02-06 21:50:21 +11:00
Lea Anthony 8dfd206aa9 Updates for using the bridge 2021-02-06 13:36:56 +11:00
Lea Anthony 6dabab1d2e v2.0.0-alpha.21 2021-02-03 07:20:08 +11:00
Lea Anthony c3bd8b1a85 Remove debug info 2021-02-03 07:15:52 +11:00
Lea Anthony e1b7332c47 Graceful shutdown 2021-02-03 07:14:44 +11:00
Lea Anthony 5cd08e45f0 v2.0.0-alpha.20 2021-01-31 22:50:01 +11:00
Lea Anthony c2d03f0e6e Update NSFontWeightRegular to float const 2021-01-31 22:49:29 +11:00
Lea Anthony d3501f4cb7 v2.0.0-alpha.19 2021-01-31 21:59:16 +11:00
Lea Anthony ee82cd25b7 Menu Items default to 12 pt on Mac 2021-01-31 21:58:41 +11:00
Lea Anthony bbb07e17d9 v2.0.0-alpha.18 2021-01-31 21:20:40 +11:00
Lea Anthony e6b40b55c4 Add nil guard for binding 2021-01-31 21:10:30 +11:00
Lea Anthony 7573f68df3 Add argument guard for methods 2021-01-31 15:35:33 +11:00
Lea Anthony ceaacc7ba9 Re-added Store.Set() using deep copy 2021-01-30 21:36:59 +11:00
Lea Anthony 0e24f75753 Deep copy initial value in store 2021-01-30 21:29:36 +11:00
Lea Anthony 82b9deeee4 Unexport set 2021-01-30 20:47:10 +11:00
Lea Anthony cfa40b797f More race condition fixes 2021-01-29 13:03:05 +11:00
Lea Anthony 5aeb68acb7 Fix for calculating new window size 2021-01-28 19:26:26 +11:00
Lea Anthony b81101414f Support Min/Max Size in Window runtime 2021-01-28 18:48:07 +11:00
Lea Anthony 7ae89d04bb Fixed data race in store. Handle nils better 2021-01-28 07:15:29 +11:00
Lea Anthony 1c566f3802 Fixed data race in servicebus 2021-01-28 06:23:49 +11:00
Lea Anthony c9c3c9ab90 Don't bind startup/shutdown methods 2021-01-27 21:12:17 +11:00
Lea Anthony 56394ac50e Use mutex when doing a Store resync 2021-01-27 06:03:17 +11:00
Lea Anthony f7c2f12ab2 Added error handler for dealing with loading user js code 2021-01-26 16:01:06 +11:00
Lea Anthony a6bb6e0c93 v2.0.0-alpha.17 2021-01-26 12:30:45 +11:00
Lea Anthony 4a5863e6ac Ported update command 2021-01-26 12:30:14 +11:00
Lea Anthony 913fe8d184 v2.0.0-alpha.16 2021-01-26 11:11:23 +11:00
Lea Anthony 4ce8130cdf Replace CreateApp with single Run() method 2021-01-26 11:09:17 +11:00
Lea Anthony fe87463b78 Move Bind() into app config 2021-01-26 07:04:12 +11:00
Lea Anthony fe0f0e29e8 Update CreateApp API 2021-01-26 06:45:23 +11:00
Lea Anthony 83d6dac7cf Add appType to builds. Update server code to compile 2021-01-26 06:40:41 +11:00
Lea Anthony 02500e0930 Update vanilla template with new API 2021-01-26 06:40:18 +11:00
Lea Anthony 5e1187f437 Startup/Shutdown hook warnings 2021-01-26 06:39:54 +11:00
Lea Anthony 064ff3b65e Change build wording 2021-01-26 06:38:54 +11:00
Lea Anthony b5c7019bf0 Fix compile warnings 2021-01-26 06:37:33 +11:00
Lea Anthony e9d16e77a3 Add support for loglevel flag in debug builds 2021-01-25 21:42:31 +11:00
Lea Anthony 2415d4c531 v2.0.0-alpha.15 2021-01-25 21:21:44 +11:00
Lea Anthony 3f75213ce3 Small linting fixes 2021-01-25 21:05:20 +11:00
Lea Anthony 6120ceabf1 Support Fonts & Colours for menuitems 2021-01-25 21:04:57 +11:00
Lea Anthony 95a95d1750 Ensure store does initial resync 2021-01-25 21:02:36 +11:00
Lea Anthony d923e84456 v2.0.0-alpha.14 2021-01-23 21:00:04 +11:00
Lea Anthony 343f573e78 Fix menu tooltips 2021-01-23 20:59:02 +11:00
Lea Anthony c6d87da4f0 v2.0.0-alpha.13 2021-01-23 20:39:43 +11:00
Lea Anthony a9faebe51a MenuItem image support 2021-01-23 20:32:42 +11:00
Lea Anthony d436f5d1be v2.0.0-alpha.12 2021-01-23 16:22:00 +11:00
Lea Anthony f40899821f Support ToolTips 2021-01-23 16:14:48 +11:00
Lea Anthony 2a64ed19a3 v2.0.0-alpha.11 2021-01-22 14:57:50 +11:00
Lea Anthony 47bca0be88 Support updating tray labels in an efficient manner 2021-01-16 11:35:49 +11:00
Lea Anthony 7ac8cc6b8b Add Menu.Merge() to combine 2 menus 2021-01-15 11:53:55 +11:00
Lea Anthony b435ec1217 v2.0.0-alpha.10 2021-01-14 20:43:26 +11:00
Lea Anthony 688d4fee6a UpdateTrayMenu -> SetTrayMenu (upsert). Support no menus on trays. 2021-01-14 16:13:59 +11:00
Lea Anthony 29ffeaa9f3 Misc tidy up 2021-01-14 13:55:20 +11:00
Lea Anthony 742e4ba2cb Remove WailsInit and WailsShutdown methodsr 2021-01-14 11:07:06 +11:00
Lea Anthony 0a0063de1f bump version 2021-01-14 00:28:15 +11:00
Lea Anthony 1b7d1e61cc v2.0.0-alpha.8 2021-01-13 23:47:15 +11:00
Lea Anthony 15a273458e Ensure build directory exists when building 2021-01-13 23:46:47 +11:00
Lea Anthony eef8eb756f Bump version 2021-01-13 22:56:09 +11:00
Lea Anthony e65118e962 Fixed and refactored context menu support 2021-01-13 22:51:44 +11:00
Lea Anthony de06fc7dcc Remove a ton of unused code 2021-01-13 21:29:20 +11:00
Lea Anthony a86fbbb440 Removal of menu IDs. WARNING: context menus are currently broken 2021-01-13 21:14:44 +11:00
Lea Anthony 3045ec107f attempt at preventing menu flicker when removing an icon 2021-01-13 20:47:08 +11:00
Lea Anthony 3a9557ad30 Support removal of tray icons 2021-01-13 20:38:46 +11:00
Lea Anthony 583153383a Refactor, tidy up and trim the fat! 2021-01-13 20:19:01 +11:00
Lea Anthony 3f53e8fd5f Refactor, tidy up and trim the fat! 2021-01-13 11:47:54 +11:00
Lea Anthony 5c9402323a Initial support for multiple traymenus 2021-01-13 10:28:32 +11:00
Lea Anthony 1921862b53 Partially introduce context menu changes back 2021-01-12 21:20:08 +11:00
Lea Anthony 0f7acd39fc [WIP] Fix the madness 2021-01-12 20:39:19 +11:00
Lea Anthony 1a7507f524 [WIP] Add tray menu store + refactor 2021-01-12 16:55:30 +11:00
Lea Anthony db6dde3e50 [WIP] Support tray in menu manager 2021-01-12 15:55:28 +11:00
Lea Anthony 4e58b7697a Add context menu to menumanager. Slight refactor. 2021-01-11 14:19:01 +11:00
Lea Anthony 55d7d9693f Removed Menu GetByID / RemoveByID 2021-01-11 13:41:07 +11:00
Lea Anthony b4b7c9d306 Implemented MenuItem.Remove() to remove from the menu structures 2021-01-11 11:57:49 +11:00
Lea Anthony a4153fae57 Remove Menu.On() 2021-01-11 11:25:48 +11:00
Lea Anthony 8053357d99 Support Menu updates! 2021-01-11 11:21:28 +11:00
Lea Anthony 7347d2caa2 Add wails debug command 2021-01-11 11:20:25 +11:00
Lea Anthony e6491bcbb7 Fix bad deallocation of context menus 2021-01-11 07:03:59 +11:00
Lea Anthony 26a291dbee [WIP] Use json payload for click message 2021-01-11 06:40:00 +11:00
Lea Anthony 8ee8c9b07c [WIP] New menu processor 2021-01-10 21:31:13 +11:00
Lea Anthony 3a2d01813a Don't inline functions in debug builds 2021-01-10 20:32:25 +11:00
Lea Anthony d2dadc386f Add combo modifier to kitchen sink 2021-01-08 11:39:18 +11:00
Lea Anthony faa8f02b08 Bugfix for message dialog icons 2021-01-08 11:39:02 +11:00
Lea Anthony fbee9ba240 Support UpdateContextMenus. Submenus are now *menu.Menu. Tidy up++ 2021-01-08 06:28:51 +11:00
Lea Anthony 2a69786d7e Remove old code (woohoo!) 2021-01-07 21:36:39 +11:00
Lea Anthony f460bf91ef [WIP] Normalisation of context menus creation/callbacks.
TODO: UpdateContextMenu()
2021-01-07 21:34:04 +11:00
Lea Anthony bd74d45a91 Normalisation of callbacks for menus. App menu converted to new Menus. 2021-01-06 20:50:41 +11:00
Lea Anthony c65522f0b6 Huge refactor of menus. Start of normalisation of callbacks. 2021-01-06 17:36:59 +11:00
Lea Anthony 5f2c437136 Bugfix dealloc contextmenus. Create common.h. WIP: new menu handling 2021-01-06 12:53:11 +11:00
Lea Anthony 87e974e080 Refactor/Tidy up Ffenestri darwin 2021-01-06 11:56:01 +11:00
Lea Anthony f77729fc0b v2.0.0-alpha.6 2021-01-05 14:28:50 +11:00
Lea Anthony 2a8ce96830 Remove custom asset bundling. Use Go's embed instead! 2021-01-05 14:28:18 +11:00
Lea Anthony 9be539cfb8 Force rebuild each time to pick up .h changes Tidy up go.mod. Bump version. 2021-01-05 14:01:53 +11:00
Lea Anthony e44f2fe06d Moved version out of main. 2021-01-05 13:26:31 +11:00
Lea Anthony ad65d55abd Misc fixes for module build 2021-01-05 13:20:44 +11:00
Lea Anthony 2b5bbfd897 Script to rebuild runtime_*.c 2021-01-05 13:01:38 +11:00
Lea Anthony d2020fedda Move generated assets to build dir. Precompile platform runtime. 2021-01-05 13:01:03 +11:00
Lea Anthony 98789bd85a Fix rollup-plugin-svelte in KS 2021-01-04 22:23:07 +11:00
Lea Anthony e6ace2fafd Add Pace to Thanks 2021-01-04 19:52:12 +11:00
Lea Anthony a55fc4d0e9 Refactor TrayOptions to Tray. Add ID. 2021-01-04 15:58:28 +11:00
Lea Anthony a09e9d4586 Merge branch 'develop' into feature/v2-mac 2021-01-04 13:54:02 +11:00
Lea Anthony ba7c8cf0e0 Merge branch 'develop' into feature/v2-mac 2021-01-04 13:41:36 +11:00
Lea Anthony 60f67d4642 Remove old method 2021-01-03 22:07:05 +11:00
Lea Anthony 0dc6c20c65 Provide a better error message when trying to bind functions 2021-01-03 22:05:40 +11:00
Lea Anthony 5d41aad539 Misc lint fixes 2021-01-03 21:31:19 +11:00
Lea Anthony e9a0e45d5c Support js & css in link tags 2021-01-03 21:20:29 +11:00
Lea Anthony 2dedd0b702 Expose Store 2021-01-03 20:20:44 +11:00
Lea Anthony 1889973af1 Dedupe assetbundle 2021-01-03 20:06:07 +11:00
Lea Anthony 75e852451c Fix context menu bug 2021-01-03 09:56:45 +11:00
Lea Anthony cfee44b18b Fix typo 2021-01-03 05:31:05 +11:00
Lea Anthony f384fc7562 Add -k flag for debug purposes 2021-01-03 05:02:48 +11:00
Lea Anthony 44c55d06a6 Create dialog dir if missing 2021-01-02 13:37:58 +11:00
Lea Anthony f4ca9a6b9e Update svelte dependencies 2021-01-02 13:37:15 +11:00
Lea Anthony a54d875ceb Fix misc build issues 2021-01-01 13:00:38 +11:00
Lea Anthony 657df8bdda Use assets dir in project for all application assets 2021-01-01 12:53:06 +11:00
Lea Anthony c0fabc0bb7 Default dialog icon generation improvement 2021-01-01 12:43:21 +11:00
Lea Anthony 4fd476bb7d Default readme for assets directory 2021-01-01 12:42:52 +11:00
Lea Anthony be0a9ddf6b Handle WailsInit() errors 2021-01-01 12:39:59 +11:00
Lea Anthony f7db0b7373 Fix return values of default App method 2021-01-01 12:37:52 +11:00
Lea Anthony 5ca57e446a Extra guards during destroy 2021-01-01 12:37:16 +11:00
Lea Anthony 33a27b06a6 Add Message dialog to Kitchen Sink 2020-12-31 14:52:45 +11:00
Lea Anthony b50acaba91 Fix 'ResolvesAliases' typo 2020-12-31 11:04:10 +11:00
Lea Anthony 6253ac30b7 Support Message dialog in JS runtime 2020-12-31 11:02:32 +11:00
Lea Anthony 2a93e2694d Retina & theme aware dialog icons. Default icons + override ability 2020-12-30 22:36:23 +11:00
Lea Anthony 91fb3501c5 Support custom dialog icons. Move icons to new dir. 2020-12-30 08:27:00 +11:00
Lea Anthony c7d5e7de72 Add CopyDir 2020-12-30 08:25:16 +11:00
Lea Anthony 02ef02ec9e Support wails doctor for Mac 2020-12-30 00:18:59 +11:00
Lea Anthony f77626490f Support Tray.SetIcon in KitchenSink 2020-12-29 15:22:00 +11:00
Lea Anthony 6fd13fb4d4 Support Tray.SetIcon in runtime 2020-12-29 15:20:35 +11:00
Lea Anthony e18ba0eb81 Handle no tray icons 2020-12-28 14:49:15 +11:00
Lea Anthony 25f464c177 Refactor accelerator to keys package 2020-12-26 14:58:22 +11:00
Lea Anthony 57a9d5f472 Update server client API 2020-12-26 07:37:40 +11:00
Lea Anthony 3b0f852f37 Updated accelerators API 2020-12-26 06:11:22 +11:00
Lea Anthony a85c8ba894 Remove "WithAccellerator" methods. Now mandatory in base methods 2020-12-26 06:01:10 +11:00
Lea Anthony f0c932713b Support changing tray icon at runtime
Support both icon & text in tray
2020-12-24 10:05:55 +11:00
Lea Anthony 8625e99625 Add OnThemeChange
Refactor Theme change handling
2020-12-24 07:30:20 +11:00
Lea Anthony c79f86fd03 Remove old tray icon, add new 2020-12-23 06:56:56 +11:00
Lea Anthony a0774cf71c Support loading multiple tray icons 2020-12-23 06:55:45 +11:00
Lea Anthony 16b872352d Support Text label tray 2020-12-22 18:08:38 +11:00
Lea Anthony e414eda151 Fix race condition 2020-12-21 07:19:33 +11:00
Lea Anthony 719f4b5113 Remove debug output 2020-12-21 07:19:20 +11:00
Lea Anthony 8b75d57cff Use release instead of dealloc 2020-12-21 07:18:52 +11:00
Lea Anthony 7aea6980b5 Remove context menu debug log 2020-12-20 21:06:34 +11:00
Lea Anthony 99e790944f Merge branch 'v2-mac-fixes' into feature/v2-mac
# Conflicts:
#	v2/internal/ffenestri/ffenestri_darwin.c
#	v2/internal/ffenestri/ffenestri_darwin.go
#	v2/internal/ffenestri/ffenestri_darwin.h
2020-12-20 21:02:39 +11:00
Lea Anthony 937f0f77c2 Fix NPE 2020-12-20 21:00:32 +11:00
Lea Anthony c86aa7d3c8 Handle null modifiers 2020-12-20 17:55:14 +11:00
Lea Anthony d380a8d6a7 Bugfix for context menus
Proper releasing of NSMenus
2020-12-20 14:09:15 +11:00
Lea Anthony a8995c5377 Support context menu data
Support StartHidden
2020-12-18 15:50:25 +11:00
Lea Anthony 34ac62e4ac Updated tray icon 2020-12-16 08:59:01 +11:00
Lea Anthony a1f9d9ca06 Handle oncontext event 2020-12-16 08:54:24 +11:00
Lea Anthony e6fbd03346 Bugfix error message 2020-12-16 08:53:11 +11:00
Lea Anthony dd35f0119b Better error handling 2020-12-11 05:41:24 +11:00
Lea Anthony b837b1e131 Tray menu support
Bugfix move after tray use
Refactored options to handle default tray/menu
2020-12-10 07:16:10 +11:00
Lea Anthony 0802d0d57a Tray menu callbacks working 2020-12-07 07:08:33 +11:00
Lea Anthony 6fa2ebdd4f Lint fix & tidy up 2020-12-06 21:15:23 +11:00
Lea Anthony 11bf564b73 Preliminary Tray support 2020-12-06 21:05:21 +11:00
Lea Anthony 65bea04080 Pass radio callback through methods 2020-12-06 17:52:05 +11:00
Lea Anthony 4572b790c6 Pass checkbox callback through methods 2020-12-06 17:47:41 +11:00
Lea Anthony f419941065 Pass menuItemMap through methods instead of global 2020-12-06 17:32:19 +11:00
Lea Anthony d3d965ee1f more logger fixes 2020-12-06 07:14:19 +11:00
Lea Anthony 2a55983bc9 Fix logger 2020-12-05 14:44:28 +11:00
Lea Anthony 7e42052da0 InsertBefore/InsertAfter supported 2020-12-05 14:14:46 +11:00
Lea Anthony e8bb950e06 Updates for dynamic menus
Cleanup of logging
2020-12-05 07:52:59 +11:00
Lea Anthony 13dc0c78df Remove browser test 2020-12-04 15:06:01 +11:00
Lea Anthony a081c1e498 Support for dynamic menus.
Fixed bug in accelerator handling
2020-12-04 15:04:51 +11:00
Lea Anthony a3e50e760e Tidy Up dialog 2020-12-02 05:56:20 +11:00
Lea Anthony b6aa53175f Create Menu struct for kitchensink 2020-12-02 05:55:02 +11:00
Lea Anthony 094d8d4b75 fix bug with function key comparisons 2020-12-01 09:11:16 +11:00
Lea Anthony 0fa67c94c1 Graceful shudown - FINALLY! 2020-11-29 15:56:14 +11:00
Lea Anthony 083aee1588 Support F-keys & a couple more system keys 2020-11-29 15:24:27 +11:00
Lea Anthony 5c39467879 Support more accelerator keys 2020-11-29 14:18:53 +11:00
Lea Anthony fb1d4c6325 Support for Accelerators! 2020-11-28 20:57:07 +11:00
Lea Anthony a0fe2f1e13 UTF-8 test 2020-11-27 22:22:30 +11:00
Lea Anthony dbe6000632 Support for radio menu items 2020-11-27 22:07:44 +11:00
Lea Anthony 42dc96cf6b Support checkboxes 2020-11-25 08:10:27 +11:00
Lea Anthony 4fd3516f41 Support Hidden/Disabled. Normal->Text 2020-11-24 20:12:10 +11:00
Lea Anthony 6f218264ed Initial support for menus 2020-11-24 19:43:25 +11:00
Lea Anthony 810b3c7440 Add default menu for mac apps 2020-11-21 21:38:18 +11:00
Lea Anthony 40fdf75042 Disable context menu in production mode 2020-11-21 20:32:55 +11:00
Lea Anthony bc260b08b2 Better devtools handling 2020-11-21 12:40:19 +11:00
Lea Anthony b920f45f60 Formatting update. 2020-11-21 12:07:55 +11:00
Lea Anthony 7f02f6886f Improved project generation 2020-11-21 11:56:01 +11:00
Lea Anthony aa271d6498 Support git init. Get author details. 2020-11-21 11:43:13 +11:00
Lea Anthony 9e6ae4d762 Support building Mac package 2020-11-21 07:09:25 +11:00
Lea Anthony ef8b58b208 Set log level to ERROR for production build 2020-11-20 14:53:42 +11:00
Lea Anthony 0422921dc7 Misc documentation updates 2020-11-20 14:45:35 +11:00
Lea Anthony 5ba03937c3 Updated Dialog Examples 2020-11-19 08:56:57 +11:00
Lea Anthony cc4967d457 Add dialog to kitchensink 2020-11-19 07:04:42 +11:00
Lea Anthony eaeecbb180 Support Dialog in runtime 2020-11-19 07:04:08 +11:00
Lea Anthony 069de31003 Convert args to [] 2020-11-19 07:03:12 +11:00
Lea Anthony ae5c74b6cd ResolveAlias -> ResolvesAlias 2020-11-19 07:02:29 +11:00
Lea Anthony 716888dcb2 Disable module generation 2020-11-17 21:46:20 +11:00
Lea Anthony ca4e2b2391 Cosmetic changes 2020-11-17 21:44:48 +11:00
Lea Anthony 630abbd3c8 Rmoved v1 dep :/ 2020-11-17 21:36:10 +11:00
Lea Anthony 33f40c2eac relative replace in go.mod 2020-11-17 21:29:31 +11:00
Lea Anthony 7c7b6ba082 Runtime updates 2020-11-17 21:19:09 +11:00
Lea Anthony 205a6db9f1 Open link to website/github 2020-11-17 21:19:00 +11:00
Lea Anthony 659fe1b281 Disable set title if needed 2020-11-17 21:18:38 +11:00
Lea Anthony e86d622219 Add appconfig store 2020-11-17 07:02:58 +11:00
Lea Anthony ee3da60002 Sync new JS syncstores on creation 2020-11-17 06:58:14 +11:00
Lea Anthony 88643134c9 Add AppConfig to runtime.System 2020-11-17 06:57:43 +11:00
Lea Anthony 56553bb683 Remove logger from json encoded app config 2020-11-17 06:56:51 +11:00
Lea Anthony cd14f4221e Merge branch 'develop' into feature/v2-mac 2020-11-16 07:12:01 +11:00
Lea Anthony 108fcbb161 Comment about window title 2020-11-15 15:42:46 +11:00
Lea Anthony e12762a584 Un/Fullscreen, SetTitle in Kitchen Sink 2020-11-15 15:10:09 +11:00
Lea Anthony 98cc356b92 Un/Fullscreen, SetTitle in Runtime 2020-11-15 15:09:33 +11:00
Lea Anthony 32ba9e78fe Improved fullscreen support 2020-11-15 15:08:46 +11:00
Lea Anthony a737d85fa5 Fixd typos in runtime 2020-11-15 12:22:03 +11:00
Lea Anthony 435ac02647 Update runtime.Window 2020-11-15 12:18:37 +11:00
Lea Anthony 255b4e103a Add Window to kitchensink 2020-11-15 12:01:43 +11:00
Lea Anthony bd8771849b Support size/position in Go runtime 2020-11-15 12:01:15 +11:00
Lea Anthony b32349effe Improve min/maximise 2020-11-15 12:00:57 +11:00
Lea Anthony cd03b4b633 Merge branch 'feature/v2-mac' of github.com:wailsapp/wails into feature/v2-mac 2020-11-15 10:18:33 +11:00
Lea Anthony c45315d61d Add window to runtime 2020-11-15 10:16:56 +11:00
Lea Anthony 62374b9b53 Js package generation (#554)
* WIP

* Generation of index.js

* Add RelativeToCwd

* Add JSDoc comments

* Convert to ES6 syntax

* Fix typo

* Initial generation of typescript declarations

* Typescript improvements

* Improved @returns jsdoc

* Improved declaration files

* Simplified output

* Rename file

* Tidy up

* Revert "Simplified output"

This reverts commit 15cdf7382b21a15a36616adbca13c9b034a1907b.

* Now parsing actual code

* Support Array types

* Reimagined parser

* Wrap parsing in Parser

* Rewritten module generator (TS Only)

* Final touches

* Slight refactor to improve output

* Struct comments. External struct literal binding

* Reworked project parser *working*

* remove debug info

* Refactor of parser

* remove the spew

* Better Ts support

* Better project generation logic

* Support local functions in bind()

* JS Object generation. Linting.

* Support json tags in module generation

* Updated mod files

* Support vscode file generation

* Better global.d.ts

* add ts-check to templates

* Support TS declaration files

* improved 'generate' command for module
2020-11-15 09:25:38 +11:00
Lea Anthony ddb875f788 Dialog WIP 2020-10-24 14:06:57 +11:00
Lea Anthony 9a32852119 Add JS runtime Dialog 2020-10-23 23:56:33 +11:00
Lea Anthony e795283482 Huge improvement to calls: Now handles objects 2020-10-23 22:24:30 +11:00
Lea Anthony e6036d31cf Add System to kitchensink 2020-10-23 11:46:12 +11:00
Lea Anthony 5a85a6e4f9 Expose System methods in Go runtime 2020-10-23 11:24:52 +11:00
Lea Anthony 0113fbff4f Update runtime.System to make all methods 2020-10-23 11:19:38 +11:00
Lea Anthony 145656bc43 Improved runtime.System 2020-10-23 10:42:00 +11:00
Lea Anthony 6153c48c86 Update title 2020-10-21 06:52:52 +11:00
Lea Anthony 912c0125e5 Add Browser examples 2020-10-21 06:40:17 +11:00
Lea Anthony dc2ad3cd3e Remove debug line 2020-10-21 06:02:07 +11:00
Lea Anthony e3783c5480 Fix browser runtime export 2020-10-20 09:24:03 +11:00
Lea Anthony 440abbe3b6 JS Runtime v1.0.8 2020-10-20 09:10:54 +11:00
Lea Anthony 95369d7c3d Unify Browser runtime 2020-10-20 09:10:09 +11:00
Lea Anthony 9e0023961b Update Browser runtime API 2020-10-20 07:16:56 +11:00
Lea Anthony 307e07b4c8 Finish events page 2020-10-20 06:45:46 +11:00
Lea Anthony fb88eadb58 Tidy up events runtime 2020-10-20 06:45:21 +11:00
Lea Anthony 6fdf088531 Revert Fatal on JS Error 2020-10-20 06:45:02 +11:00
Lea Anthony 07b6fc0c52 Update runtime in kitchensink 2020-10-18 16:49:08 +11:00
Lea Anthony 1b466090e8 Remove old Event methods 2020-10-18 16:47:48 +11:00
Lea Anthony c990760f22 Remove old event methods 2020-10-18 16:44:32 +11:00
Lea Anthony aeb7d857ee Support Emit & Once. Improved On. 2020-10-18 11:49:27 +11:00
Lea Anthony 78f99c2697 update runtime definitions 2020-10-18 11:48:56 +11:00
Lea Anthony 7885718d42 Disable annoying smart quotes 2020-10-18 11:48:38 +11:00
Lea Anthony 288da8c147 Improved error handling? 2020-10-18 11:48:20 +11:00
Lea Anthony 7e31db809a Add Events.On 2020-10-17 21:07:00 +11:00
Lea Anthony fb0ccfc8e6 WIP Events.On 2020-10-17 15:10:13 +11:00
Lea Anthony c9bf4e3d48 refactor clilogger 2020-10-17 13:47:13 +11:00
Lea Anthony 2a59272b86 hook in windowWillClose 2020-10-16 14:02:49 +11:00
Lea Anthony ff5e2862b8 Fix change in logging levels 2020-10-13 07:49:47 +11:00
Lea Anthony 51678afdc7 @wails/runtime v1.0.4 2020-10-13 07:35:36 +11:00
Lea Anthony 3b6a3df03d Update logger constants to fix default values 2020-10-13 07:34:36 +11:00
Lea Anthony 1c97559151 logging: slight refactor 2020-10-13 06:43:38 +11:00
Lea Anthony 082e695c83 Fix log level reactivity.
Misc fixes and tweaks
2020-10-12 23:36:37 +11:00
Lea Anthony 4a5e4d3a5e Move preview for SetLogLevel 2020-10-12 20:55:47 +11:00
Lea Anthony 8988f29cea More Logging updates 2020-10-12 20:54:33 +11:00
Lea Anthony 6150010d17 Runtime defs update.
Slight System refactor
2020-10-12 20:01:37 +11:00
Lea Anthony c165b97d57 SetLogLevel fully supported 2020-10-12 06:56:51 +11:00
Lea Anthony 39c599d2de Link component 2020-10-12 06:56:32 +11:00
Lea Anthony be952ba2da Terminal output component 2020-10-12 06:56:22 +11:00
Lea Anthony 5a141d343e Better looking scrollbar 2020-10-12 06:55:42 +11:00
Lea Anthony 7e4ad307aa Fully refactored logging 2020-10-11 15:10:25 +11:00
Lea Anthony d8bb418851 Runtime refactor 2020-10-11 13:33:55 +11:00
Lea Anthony f1cd84d0c8 Support dynamic loglevel 2020-10-10 15:06:27 +11:00
Lea Anthony ba6538da7c Made go runtime package public.
Using loglevel store to keep loglevel in sync
2020-10-10 13:57:32 +11:00
Lea Anthony afea1cbb4c Support SetLogLevel() at runtime
Refactor of loglevel
2020-10-10 07:31:23 +11:00
Lea Anthony 19fbc884ae Fix number of methods in Log 2020-10-09 15:44:08 +11:00
Lea Anthony 67861e4f70 Updated Logger interface 2020-10-09 15:39:11 +11:00
Lea Anthony 228285f693 Support Print logging 2020-10-09 15:13:45 +11:00
Lea Anthony 9f62a08cd2 Move Info message to Trace 2020-10-09 14:59:12 +11:00
Lea Anthony d97cd1b75f Runtime v1.0.1 2020-10-09 14:52:07 +11:00
Lea Anthony 5fd8312f63 Support Print in JS runtime 2020-10-09 14:51:26 +11:00
Lea Anthony 90b7d5f519 Support log level 2020-10-09 14:36:42 +11:00
Lea Anthony 93f4549efa Support trace in go runtime 2020-10-09 14:36:28 +11:00
Lea Anthony b5c8dfac97 Support Trace in kitchensink 2020-10-09 14:36:15 +11:00
Lea Anthony ee01b7759e Migrate runtime to @wails 2020-10-09 14:35:43 +11:00
Lea Anthony 8dba591cda Add trace to JS runtime 2020-10-09 14:35:30 +11:00
Lea Anthony 302db87bec Debug refactor 2020-10-09 14:01:35 +11:00
Lea Anthony 161ff3b32a Make Ffenestri use logging subsystem. 2020-10-09 12:15:25 +11:00
Lea Anthony ffdfbb8ae5 Major logging refactor 2020-10-09 11:50:45 +11:00
Lea Anthony 53b54a8e52 Revert logger package 2020-10-09 10:33:11 +11:00
Lea Anthony 0403e0a783 Make logger a public package 2020-10-09 10:30:01 +11:00
Lea Anthony 8a2acacc37 Start Events. List styling moved to global scope. 2020-10-08 21:03:45 +11:00
Lea Anthony 256e84c4d4 Improved CodeBlock. Dark mode to store. 2020-10-08 20:51:14 +11:00
Lea Anthony c10e8788d8 Add logging to kitchen sink 2020-10-08 07:39:15 +11:00
Lea Anthony 6eb89f61b3 Add Log to Go runtime 2020-10-08 07:39:01 +11:00
Lea Anthony e3d2ff9ea1 Remove log package 2020-10-08 07:38:47 +11:00
Lea Anthony 665dfa6aee WIP 2020-10-07 21:09:05 +11:00
Lea Anthony 4f7e2128d1 Better drag support 2020-10-07 07:11:00 +11:00
Lea Anthony 8112facb4e Fix right click crash 2020-10-07 06:44:58 +11:00
Lea Anthony 944261b5e4 initial kitchen sink 2020-10-07 00:52:00 +11:00
Lea Anthony ba528d0534 Debugging 2020-10-07 00:51:22 +11:00
Lea Anthony a28afe86ce Remove unused event messages 2020-10-04 13:37:29 +11:00
Lea Anthony 5e0026e124 Update runtime to v1.0.3 2020-10-04 12:07:56 +11:00
Lea Anthony f23ed3c319 Add Store to go runtime 2020-10-04 12:07:42 +11:00
Lea Anthony 6aae2eb1df Support setting app state at startup 2020-10-04 12:07:10 +11:00
Lea Anthony f4943bc26c Remove generated files 2020-10-04 11:54:05 +11:00
Lea Anthony 1c6578e6ef Use IsDarkMode state store 2020-10-04 11:50:05 +11:00
Lea Anthony 5ef200f21c Refactor system. Add IsDarkMode state store 2020-10-04 11:42:42 +11:00
Lea Anthony b3822137f7 Refactor store. Add get(). 2020-10-04 11:41:39 +11:00
Lea Anthony 858789f442 Port Sync Store 2020-10-04 07:22:00 +11:00
Lea Anthony 3209b39488 Support System calls in Go Runtime 2020-10-03 20:46:18 +10:00
Lea Anthony 0c9f6edeb6 Add system calls to js runtime 2020-10-03 20:45:37 +10:00
Lea Anthony aabcef2958 Add System calls to runtime 2020-10-03 20:45:04 +10:00
Lea Anthony 10d68b2676 Small fixes to frontend events 2020-10-03 15:29:34 +10:00
Lea Anthony e960afe8f6 Support OnMultiple 2020-10-03 15:10:38 +10:00
Lea Anthony ae677ce9db Misc fixes for events 2020-10-03 15:03:14 +10:00
Lea Anthony 7f9c59a021 Support theme mode change event 2020-10-02 15:12:56 +10:00
Lea Anthony d8fdc96899 Add IsDarkMode
Updated runtime test
2020-10-02 11:41:46 +10:00
Lea Anthony c3280e8b60 Update runtime test 2020-10-02 07:45:41 +10:00
Lea Anthony 26a1f78d56 Support Translucent Window Background 2020-10-02 07:45:22 +10:00
Lea Anthony ee9c98c515 Refactor Part 2 2020-10-02 07:11:24 +10:00
Lea Anthony 29ec06fb0a Refactor part 1 2020-10-02 06:52:08 +10:00
Lea Anthony c1155e255b Add default appearance 2020-09-30 20:03:08 +10:00
Lea Anthony 4e39566118 Rename vibrancy to appearance 2020-09-30 19:54:41 +10:00
Lea Anthony 3f3094f0aa Support vibrancy and transparency for webview
Options Colour -> RGBA
2020-09-30 07:25:15 +10:00
Lea Anthony 84730d2f4d Tidy up 2020-09-29 20:36:38 +10:00
Lea Anthony b8bb891275 Frameless is calculated for Mac 2020-09-29 20:34:54 +10:00
Lea Anthony 7bcb5be1a5 Update tests 2020-09-29 07:44:02 +10:00
Lea Anthony 081c842149 Support window dragging 2020-09-29 07:33:16 +10:00
Lea Anthony 6bdcec8105 WIP: Basics of window drag 2020-09-28 22:08:53 +10:00
Lea Anthony 3c7937bff9 Tidy Up 2020-09-28 21:22:11 +10:00
Lea Anthony d7f832c00e Support SaveDialog 2020-09-28 21:13:57 +10:00
Lea Anthony 8cd39f6a9a Support default directory 2020-09-27 20:40:36 +10:00
Lea Anthony ac27137e5a Filter support 2020-09-27 20:26:16 +10:00
Lea Anthony 762632d55a Add comments 2020-09-27 15:15:25 +10:00
Lea Anthony 48c17dac87 Support all dialog properties 2020-09-27 15:05:55 +10:00
Lea Anthony 8666935caf Support multiple files in dialog 2020-09-27 14:49:38 +10:00
Lea Anthony 0ec6707263 Support selecting files+dirs 2020-09-27 14:46:30 +10:00
Lea Anthony d4224772b4 Initial support for OpenDialog 2020-09-27 14:32:08 +10:00
Lea Anthony cd99376da9 Use options struct for dialogs 2020-09-27 10:17:30 +10:00
Lea Anthony 02fd4ec477 Revert changes to v1 2020-09-27 07:58:30 +10:00
Lea Anthony 3b851e9a22 change service bus topics for dialogs 2020-09-26 16:21:18 +10:00
Lea Anthony 5ce5e129cf Remove old dialog code 2020-09-26 16:16:25 +10:00
Lea Anthony 9b0f58ddf5 Support OpenDialog 2020-09-26 16:08:55 +10:00
Lea Anthony bed5619d4e WIP: Support multiple value return 2020-09-25 07:09:55 +10:00
Lea Anthony 69c4e6ea28 Min/Max size supported 2020-09-24 21:43:37 +10:00
Lea Anthony ea7b593693 Fix minmax app 2020-09-24 21:29:26 +10:00
Lea Anthony 7ac833e396 Sample titlebars 2020-09-24 06:45:34 +10:00
Lea Anthony a5e909337e Support TitleBar Default
Fixed merging defaults
2020-09-24 06:39:08 +10:00
Lea Anthony 0c120eccc9 Support HiddenInset Titlebar 2020-09-24 06:22:49 +10:00
Lea Anthony e6addafcdd Support hidden titlebar 2020-09-24 06:19:00 +10:00
Lea Anthony ef11f45df8 Refactored mac titlebar options 2020-09-24 05:57:32 +10:00
Lea Anthony 72fc2204b4 Moved options to own package 2020-09-24 05:46:39 +10:00
Lea Anthony 15c08ef425 Support runtime colour change 2020-09-23 08:48:11 +10:00
Lea Anthony 52bb397105 Support colour 2020-09-22 20:46:36 +10:00
Lea Anthony 5572fccaf6 Add Toolbar support for Mac 2020-09-22 17:48:39 +10:00
Lea Anthony 65d591e2a6 Support more mac window options 2020-09-22 17:19:35 +10:00
Lea Anthony 4bf59301e5 Add HideTitleBar 2020-09-21 17:13:23 +10:00
Lea Anthony 629e8f73f4 Add Mac Application Options 2020-09-21 17:07:10 +10:00
Lea Anthony eb68ba5120 fix setsize and setposition 2020-09-19 23:19:34 +10:00
Lea Anthony a8bff7868b Got get frame working 2020-09-19 07:40:45 +10:00
Lea Anthony ae04b4fcc0 WIP [bugged] 2020-09-18 21:04:23 +10:00
Lea Anthony 5eb91dd3fa More refactoring 2020-09-16 21:23:35 +10:00
Lea Anthony 3ad537fdbb Tidy up 2020-09-16 21:14:18 +10:00
Lea Anthony 2c570bb4f6 Support tons of stuff! 2020-09-16 21:11:17 +10:00
Lea Anthony 461f3aec0a Get it compiling again! 2020-09-16 20:06:32 +10:00
Lea Anthony fd47122e39 Only show window when rendered 2020-09-15 19:57:34 -05:00
Lea Anthony 8de013f192 vscode stuff 2020-09-15 19:57:34 -05:00
Lea Anthony 1dd3a602d7 Support Un/Fullscreen 2020-09-15 19:57:34 -05:00
Lea Anthony a84a49a13f ignore test builds 2020-09-15 19:57:34 -05:00
Lea Anthony 64a6a69bbd Update packages 2020-09-15 19:57:33 -05:00
Lea Anthony d75b9f26f1 Callback hooks for MOAE 2020-09-15 19:57:33 -05:00
Lea Anthony 10cb7f830f Fix logger 2020-09-15 19:57:33 -05:00
Lea Anthony dd3e6de9b2 Add Center + refactor prefs 2020-09-15 19:57:33 -05:00
Lea Anthony d42b84abc1 Callbacks working 2020-09-15 19:57:33 -05:00
Lea Anthony b6c649041b Support sending messages to the backend 2020-09-15 19:57:33 -05:00
Lea Anthony 93ec65be6a More feature flag removal 2020-09-15 19:57:30 -05:00
Lea Anthony bfa8929c47 Remove feature flag code 2020-09-15 19:55:52 -05:00
Lea Anthony 360713c803 lint 2020-09-15 19:55:51 -05:00
Lea Anthony 26ce682824 Ignore favicon for desktop 2020-09-15 19:55:51 -05:00
Lea Anthony 65b546c0f9 Evaluation working correctly. Still WIP 2020-09-15 19:55:51 -05:00
Travis McLane 31494bba22 add darwin platform for server 2020-09-15 19:55:51 -05:00
Lea Anthony f25abb0b26 Semi runs 2020-09-15 19:55:51 -05:00
Lea Anthony e831bc75c6 Stubs in place to compile 2020-09-15 19:55:51 -05:00
Lea Anthony 852bbd148c Get it compiling 2020-09-15 19:55:50 -05:00
Travis McLane c158fd369a Merge commit 'a213e8bcd1d8e4e5c764978879d875d2d55dd400' as 'v2' 2020-09-15 19:52:54 -05:00
Travis McLane a213e8bcd1 Squashed 'v2/' content from commit 72ef153
git-subtree-dir: v2
git-subtree-split: 72ef15359e36e42b18d9407f74c762f83eb9a099
2020-09-15 19:52:54 -05:00
486 changed files with 52660 additions and 11 deletions
+7 -2
View File
@@ -17,8 +17,13 @@ cmd/wails/wails
.DS_Store
tmp
node_modules/
package.json.md5
v2/test/**/frontend/dist
v2/test/**/build/
v2/test/frameless/icon.png
v2/test/hidden/icon.png
v2/test/kitchensink/frontend/public/bundle.*
v2/pkg/parser/testproject/frontend/wails
v2/test/kitchensink/frontend/public
v2/internal/ffenestri/runtime.c
v2/internal/runtime/assets/desktop.js
v2/test/kitchensink/build/darwin/desktop/kitchensink
v2/test/kitchensink/frontend/package.json.md5
+5 -1
View File
@@ -1,4 +1,8 @@
{
"go.formatTool": "goimports",
"eslint.alwaysShowStatus": true
"eslint.alwaysShowStatus": true,
"files.associations": {
"__locale": "c",
"ios": "c"
}
}
+6 -1
View File
@@ -147,7 +147,12 @@ This project was mainly coded to the following albums:
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fwailsapp%2Fwails.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fwailsapp%2Fwails?ref=badge_large)
## Special Thank You
## Special Thanks
<p align="center" style="text-align: center">
A *huge* thanks to <a href="https://pace.dev"><img src="pace.jpeg"/> Pace</a> for sponsoring the project and helping the efforts to get Wails ported to Apple Silicon!<br/><br/>
If you are looking for a Project Management tool that's powerful but quick and easy to use, check them out!<br/><br/>
</p>
<p align="center" style="text-align: center">
A special thank you to JetBrains for donating licenses to us!<br/><br/>
+1 -1
View File
@@ -22,7 +22,7 @@ require (
github.com/syossan27/tebata v0.0.0-20180602121909-b283fe4bc5ba
golang.org/x/image v0.0.0-20200430140353-33d19683fad8
golang.org/x/net v0.0.0-20200625001655-4c5254603344 // indirect
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd
golang.org/x/sys v0.0.0-20200724161237-0e2f3a69832c
golang.org/x/text v0.3.0
gopkg.in/AlecAivazis/survey.v1 v1.8.4
gopkg.in/yaml.v3 v3.0.0-20190709130402-674ba3eaed22
+2
View File
@@ -81,6 +81,8 @@ golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200724161237-0e2f3a69832c h1:UIcGWL6/wpCfyGuJnRFJRurA+yj8RrW7Q6x2YMCXt6c=
golang.org/x/sys v0.0.0-20200724161237-0e2f3a69832c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
gopkg.in/AlecAivazis/survey.v1 v1.8.4 h1:10xXXN3wgIhPheb5NI58zFgZv32Ana7P3Tl4shW+0Qc=
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

+2 -2
View File
@@ -3,12 +3,12 @@
"browser": true,
"es6": true,
"amd": true,
"node": true,
"node": true
},
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 2016,
"sourceType": "module",
"sourceType": "module"
},
"rules": {
"indent": [
+1 -1
View File
@@ -26,7 +26,7 @@ export function OpenURL(url) {
* Opens the given filename using the system's default file handler
*
* @export
* @param {sting} filename
* @param {string} filename
* @returns
*/
export function OpenFile(filename) {
+1 -1
View File
@@ -62,7 +62,7 @@ if (window.crypto) {
export function Call(bindingName, data, timeout) {
// Timeout infinite by default
if (timeout == null || timeout == undefined) {
if (timeout == null) {
timeout = 0;
}
+1 -1
View File
@@ -45,7 +45,7 @@ function Invoke(message) {
*
* @export
* @param {string} type
* @param {string} payload
* @param {Object} payload
* @param {string=} callbackID
*/
export function SendMessage(type, payload, callbackID) {
+1 -1
View File
@@ -1 +1 @@
bridge.js
index.js
+13
View File
@@ -0,0 +1,13 @@
{
"files.associations": {
"ios": "c",
"typeinfo": "c",
"sstream": "c",
"__functional_03": "c",
"functional": "c",
"__locale": "c",
"locale": "c",
"chrono": "c",
"system_error": "c"
}
}
+40
View File
@@ -0,0 +1,40 @@
# Packing linux
* create app, app.desktop, app.png (512x512)
* chmod +x app!
* ./linuxdeploy-x86_64.AppImage --appdir AppDir -i react.png -d react.desktop -e react --output appimage
# Wails Doctor
Tested on:
* Debian 8
* Ubuntu 20.04
* Ubuntu 19.10
* Solus 4.1
* Centos 8
* Gentoo
* OpenSUSE/leap
* Fedora 31
### Development
Add a new package manager processor here: `v2/internal/system/packagemanager/`. IsAvailable should work even if the package is installed.
Add your new package manager to the list of package managers in `v2/internal/system/packagemanager/packagemanager.go`:
```
var db = map[string]PackageManager{
"eopkg": NewEopkg(),
"apt": NewApt(),
"yum": NewYum(),
"pacman": NewPacman(),
"emerge": NewEmerge(),
"zypper": NewZypper(),
}
```
## Gentoo
* Setup docker image using: emerge-webrsync -x -v
+5
View File
@@ -0,0 +1,5 @@
# Wails v2 ALPHA
This branch contains WORK IN PROGRESS! There are no guarantees. Use at your peril!
This document will be updated as progress is made.
@@ -0,0 +1,119 @@
package build
import (
"fmt"
"io"
"runtime"
"strings"
"time"
"github.com/leaanthony/clir"
"github.com/leaanthony/slicer"
"github.com/wailsapp/wails/v2/pkg/clilogger"
"github.com/wailsapp/wails/v2/pkg/commands/build"
)
// AddBuildSubcommand adds the `build` command for the Wails application
func AddBuildSubcommand(app *clir.Cli, w io.Writer) {
outputType := "desktop"
validTargetTypes := slicer.String([]string{"desktop", "hybrid", "server"})
command := app.NewSubCommand("build", "Builds the application")
// Setup target type flag
description := "Type of application to build. Valid types: " + validTargetTypes.Join(",")
command.StringFlag("t", description, &outputType)
// Setup production flag
production := false
command.BoolFlag("production", "Build in production mode", &production)
// Setup pack flag
pack := false
command.BoolFlag("package", "Create a platform specific package", &pack)
compilerCommand := "go"
command.StringFlag("compiler", "Use a different go compiler to build, eg go1.15beta1", &compilerCommand)
// Setup Platform flag
platform := runtime.GOOS
command.StringFlag("platform", "Platform to target", &platform)
// Quiet Build
quiet := false
command.BoolFlag("q", "Suppress output to console", &quiet)
// ldflags to pass to `go`
ldflags := ""
command.StringFlag("ldflags", "optional ldflags", &ldflags)
// Log to file
logFile := ""
command.StringFlag("l", "Log to file", &logFile)
// Retain assets
keepAssets := false
command.BoolFlag("k", "Keep generated assets", &keepAssets)
command.Action(func() error {
// Create logger
logger := clilogger.New(w)
logger.Mute(quiet)
// Validate output type
if !validTargetTypes.Contains(outputType) {
return fmt.Errorf("output type '%s' is not valid", outputType)
}
if !quiet {
app.PrintBanner()
}
task := fmt.Sprintf("Building %s Application", strings.Title(outputType))
logger.Println(task)
logger.Println(strings.Repeat("-", len(task)))
// Setup mode
mode := build.Debug
if production {
mode = build.Production
}
// Create BuildOptions
buildOptions := &build.Options{
Logger: logger,
OutputType: outputType,
Mode: mode,
Pack: pack,
Platform: platform,
LDFlags: ldflags,
Compiler: compilerCommand,
KeepAssets: keepAssets,
}
return doBuild(buildOptions)
})
}
// doBuild is our main build command
func doBuild(buildOptions *build.Options) error {
// Start Time
start := time.Now()
outputFilename, err := build.Build(buildOptions)
if err != nil {
return err
}
// Output stats
elapsed := time.Since(start)
buildOptions.Logger.Println("")
buildOptions.Logger.Println(fmt.Sprintf("Built '%s' in %s.", outputFilename, elapsed.Round(time.Millisecond).String()))
buildOptions.Logger.Println("")
return nil
}
@@ -0,0 +1,123 @@
package debug
import (
"fmt"
"github.com/wailsapp/wails/v2/internal/shell"
"io"
"os"
"runtime"
"strings"
"time"
"github.com/leaanthony/clir"
"github.com/leaanthony/slicer"
"github.com/wailsapp/wails/v2/pkg/clilogger"
"github.com/wailsapp/wails/v2/pkg/commands/build"
)
// AddSubcommand adds the `debug` command for the Wails application
func AddSubcommand(app *clir.Cli, w io.Writer) error {
outputType := "desktop"
validTargetTypes := slicer.String([]string{"desktop", "hybrid", "server"})
command := app.NewSubCommand("debug", "Builds the application then runs delve on the binary")
// Setup target type flag
description := "Type of application to build. Valid types: " + validTargetTypes.Join(",")
command.StringFlag("t", description, &outputType)
compilerCommand := "go"
command.StringFlag("compiler", "Use a different go compiler to build, eg go1.15beta1", &compilerCommand)
quiet := false
command.BoolFlag("q", "Suppress output to console", &quiet)
// ldflags to pass to `go`
ldflags := ""
command.StringFlag("ldflags", "optional ldflags", &ldflags)
// Log to file
logFile := ""
command.StringFlag("l", "Log to file", &logFile)
command.Action(func() error {
// Create logger
logger := clilogger.New(w)
logger.Mute(quiet)
// Validate output type
if !validTargetTypes.Contains(outputType) {
return fmt.Errorf("output type '%s' is not valid", outputType)
}
if !quiet {
app.PrintBanner()
}
task := fmt.Sprintf("Building %s Application", strings.Title(outputType))
logger.Println(task)
logger.Println(strings.Repeat("-", len(task)))
// Setup mode
mode := build.Debug
// Create BuildOptions
buildOptions := &build.Options{
Logger: logger,
OutputType: outputType,
Mode: mode,
Pack: false,
Platform: runtime.GOOS,
LDFlags: ldflags,
Compiler: compilerCommand,
KeepAssets: false,
}
outputFilename, err := doDebugBuild(buildOptions)
if err != nil {
return err
}
// Check delve exists
delveExists := shell.CommandExists("dlv")
if !delveExists {
return fmt.Errorf("cannot launch delve (Is it installed?)")
}
// Get cwd
cwd, err := os.Getwd()
if err != nil {
return err
}
// Launch delve
println("Launching Delve on port 2345...")
command := shell.CreateCommand(cwd, "dlv", "--listen=:2345", "--headless=true", "--api-version=2", "--accept-multiclient", "exec", outputFilename)
return command.Run()
})
return nil
}
// doDebugBuild is our main build command
func doDebugBuild(buildOptions *build.Options) (string, error) {
// Start Time
start := time.Now()
outputFilename, err := build.Build(buildOptions)
if err != nil {
return "", err
}
// Output stats
elapsed := time.Since(start)
buildOptions.Logger.Println("")
buildOptions.Logger.Println(fmt.Sprintf("Built '%s' in %s.", outputFilename, elapsed.Round(time.Millisecond).String()))
buildOptions.Logger.Println("")
return outputFilename, nil
}
+285
View File
@@ -0,0 +1,285 @@
package dev
import (
"fmt"
"io"
"os"
"os/signal"
"path/filepath"
"runtime"
"strings"
"syscall"
"time"
"github.com/wailsapp/wails/v2/internal/colour"
"github.com/fsnotify/fsnotify"
"github.com/leaanthony/clir"
"github.com/wailsapp/wails/v2/internal/fs"
"github.com/wailsapp/wails/v2/internal/process"
"github.com/wailsapp/wails/v2/pkg/clilogger"
"github.com/wailsapp/wails/v2/pkg/commands/build"
)
func LogGreen(message string, args ...interface{}) {
text := fmt.Sprintf(message, args...)
println(colour.Green(text))
}
func LogRed(message string, args ...interface{}) {
text := fmt.Sprintf(message, args...)
println(colour.Red(text))
}
func LogDarkYellow(message string, args ...interface{}) {
text := fmt.Sprintf(message, args...)
println(colour.DarkYellow(text))
}
// AddSubcommand adds the `dev` command for the Wails application
func AddSubcommand(app *clir.Cli, w io.Writer) error {
command := app.NewSubCommand("dev", "Development mode")
// Passthrough ldflags
ldflags := ""
command.StringFlag("ldflags", "optional ldflags", &ldflags)
// compiler command
compilerCommand := "go"
command.StringFlag("compiler", "Use a different go compiler to build, eg go1.15beta1", &compilerCommand)
// extensions to trigger rebuilds
extensions := "go"
command.StringFlag("e", "Extensions to trigger rebuilds (comma separated) eg go,js,css,html", &extensions)
// extensions to trigger rebuilds
showWarnings := false
command.BoolFlag("w", "Show warnings", &showWarnings)
loglevel := ""
command.StringFlag("loglevel", "Loglevel to use - Trace, Debug, Info, Warning, Error", &loglevel)
command.Action(func() error {
// Create logger
logger := clilogger.New(w)
app.PrintBanner()
// TODO: Check you are in a project directory
watcher, err := fsnotify.NewWatcher()
if err != nil {
return err
}
defer watcher.Close()
var debugBinaryProcess *process.Process = nil
var extensionsThatTriggerARebuild = strings.Split(extensions, ",")
// Setup signal handler
quitChannel := make(chan os.Signal, 1)
signal.Notify(quitChannel, os.Interrupt, os.Kill, syscall.SIGTERM)
debounceQuit := make(chan bool, 1)
// Do initial build
logger.Println("Building application for development...")
newProcess, err := restartApp(logger, "dev", ldflags, compilerCommand, debugBinaryProcess, loglevel)
if newProcess != nil {
debugBinaryProcess = newProcess
}
if err != nil {
return err
}
go debounce(100*time.Millisecond, watcher.Events, debounceQuit, func(event fsnotify.Event) {
// logger.Println("event: %+v", event)
// Check for new directories
if event.Op&fsnotify.Create == fsnotify.Create {
// If this is a folder, add it to our watch list
if fs.DirExists(event.Name) {
if !strings.Contains(event.Name, "node_modules") {
err := watcher.Add(event.Name)
if err != nil {
logger.Fatal("%s", err.Error())
}
LogGreen("[New Directory] Watching new directory: %s", event.Name)
}
}
return
}
// Check for file writes
if event.Op&fsnotify.Write == fsnotify.Write {
var rebuild bool = false
// Iterate all file patterns
for _, pattern := range extensionsThatTriggerARebuild {
if strings.HasSuffix(event.Name, pattern) {
rebuild = true
break
}
}
if !rebuild {
if showWarnings {
LogDarkYellow("[File change] %s did not match extension list (%s)", event.Name, extensions)
}
return
}
LogGreen("[Attempting rebuild] %s updated", event.Name)
// Do a rebuild
// Try and build the app
newBinaryProcess, err := restartApp(logger, "dev", ldflags, compilerCommand, debugBinaryProcess, loglevel)
if err != nil {
fmt.Printf("Error during build: %s", err.Error())
return
}
// If we have a new process, save it
if newBinaryProcess != nil {
debugBinaryProcess = newBinaryProcess
}
}
})
// Get project dir
projectDir, err := os.Getwd()
if err != nil {
return err
}
// Get all subdirectories
dirs, err := fs.GetSubdirectories(projectDir)
if err != nil {
return err
}
LogGreen("Watching (sub)/directory: %s", projectDir)
// Setup a watcher for non-node_modules directories
dirs.Each(func(dir string) {
if strings.Contains(dir, "node_modules") {
return
}
// Ignore build directory
if strings.HasPrefix(dir, filepath.Join(projectDir, "build")) {
return
}
err = watcher.Add(dir)
if err != nil {
logger.Fatal(err.Error())
}
})
// Wait until we get a quit signal
quit := false
for quit == false {
select {
case <-quitChannel:
LogGreen("\nCaught quit")
// Notify debouncer to quit
debounceQuit <- true
quit = true
}
}
// Kill the current program if running
if debugBinaryProcess != nil {
err := debugBinaryProcess.Kill()
if err != nil {
return err
}
}
LogGreen("Development mode exited")
return nil
})
return nil
}
// Credit: https://drailing.net/2018/01/debounce-function-for-golang/
func debounce(interval time.Duration, input chan fsnotify.Event, quitChannel chan bool, cb func(arg fsnotify.Event)) {
var item fsnotify.Event
timer := time.NewTimer(interval)
exit:
for {
select {
case item = <-input:
timer.Reset(interval)
case <-timer.C:
if item.Name != "" {
cb(item)
}
case <-quitChannel:
break exit
}
}
}
func restartApp(logger *clilogger.CLILogger, outputType string, ldflags string, compilerCommand string, debugBinaryProcess *process.Process, loglevel string) (*process.Process, error) {
appBinary, err := buildApp(logger, outputType, ldflags, compilerCommand)
println()
if err != nil {
LogRed("Build error - continuing to run current version")
LogDarkYellow(err.Error())
return nil, nil
}
// Kill existing binary if need be
if debugBinaryProcess != nil {
killError := debugBinaryProcess.Kill()
if killError != nil {
logger.Fatal("Unable to kill debug binary (PID: %d)!", debugBinaryProcess.PID())
}
debugBinaryProcess = nil
}
// TODO: Generate `backend.js`
// Start up new binary
newProcess := process.NewProcess(logger, appBinary, "-loglevel", loglevel)
err = newProcess.Start()
if err != nil {
// Remove binary
deleteError := fs.DeleteFile(appBinary)
if deleteError != nil {
logger.Fatal("Unable to delete app binary: " + appBinary)
}
logger.Fatal("Unable to start application: %s", err.Error())
}
return newProcess, nil
}
func buildApp(logger *clilogger.CLILogger, outputType string, ldflags string, compilerCommand string) (string, error) {
// Create random output file
outputFile := fmt.Sprintf("dev-%d", time.Now().Unix())
// Create BuildOptions
buildOptions := &build.Options{
Logger: logger,
OutputType: outputType,
Mode: build.Debug,
Pack: false,
Platform: runtime.GOOS,
LDFlags: ldflags,
Compiler: compilerCommand,
OutputFile: outputFile,
IgnoreFrontend: true,
}
return build.Build(buildOptions)
}
@@ -0,0 +1,154 @@
package doctor
import (
"fmt"
"io"
"log"
"os"
"runtime"
"strings"
"text/tabwriter"
"github.com/leaanthony/clir"
"github.com/wailsapp/wails/v2/internal/system"
"github.com/wailsapp/wails/v2/internal/system/packagemanager"
"github.com/wailsapp/wails/v2/pkg/clilogger"
)
// AddSubcommand adds the `doctor` command for the Wails application
func AddSubcommand(app *clir.Cli, w io.Writer) error {
command := app.NewSubCommand("doctor", "Diagnose your environment")
command.Action(func() error {
logger := clilogger.New(w)
app.PrintBanner()
logger.Print("Scanning system - please wait...")
// Get system info
info, err := system.GetInfo()
if err != nil {
return err
}
logger.Println("Done.")
// Start a new tabwriter
w := new(tabwriter.Writer)
w.Init(os.Stdout, 8, 8, 0, '\t', 0)
// Write out the system information
fmt.Fprintf(w, "\n")
fmt.Fprintf(w, "System\n")
fmt.Fprintf(w, "------\n")
fmt.Fprintf(w, "%s\t%s\n", "OS:", info.OS.Name)
fmt.Fprintf(w, "%s\t%s\n", "Version: ", info.OS.Version)
fmt.Fprintf(w, "%s\t%s\n", "ID:", info.OS.ID)
// Exit early if PM not found
if info.PM == nil {
fmt.Fprintf(w, "\n%s\t%s", "Package Manager:", "Not Found")
w.Flush()
println()
return nil
}
fmt.Fprintf(w, "%s\t%s\n", "Package Manager: ", info.PM.Name())
// Output Go Information
fmt.Fprintf(w, "%s\t%s\n", "Go Version:", runtime.Version())
fmt.Fprintf(w, "%s\t%s\n", "Platform:", runtime.GOOS)
fmt.Fprintf(w, "%s\t%s\n", "Architecture:", runtime.GOARCH)
// Output Dependencies Status
var dependenciesMissing = []string{}
var externalPackages = []*packagemanager.Dependancy{}
var dependenciesAvailableRequired = 0
var dependenciesAvailableOptional = 0
fmt.Fprintf(w, "\n")
fmt.Fprintf(w, "Dependency\tPackage Name\tStatus\tVersion\n")
fmt.Fprintf(w, "----------\t------------\t------\t-------\n")
// Loop over dependencies
for _, dependency := range info.Dependencies {
name := dependency.Name
if dependency.Optional {
name += "*"
}
packageName := "Unknown"
status := "Not Found"
// If we found the package
if dependency.PackageName != "" {
packageName = dependency.PackageName
// If it's installed, update the status
if dependency.Installed {
status = "Installed"
} else {
// Generate meaningful status text
status = "Available"
if dependency.Optional {
dependenciesAvailableOptional++
} else {
dependenciesAvailableRequired++
}
}
} else {
if !dependency.Optional {
dependenciesMissing = append(dependenciesMissing, dependency.Name)
}
if dependency.External {
externalPackages = append(externalPackages, dependency)
}
}
fmt.Fprintf(w, "%s\t%s\t%s\t%s\n", name, packageName, status, dependency.Version)
}
fmt.Fprintf(w, "\n")
fmt.Fprintf(w, "* - Optional Dependency\n")
w.Flush()
logger.Println("")
logger.Println("Diagnosis")
logger.Println("---------\n")
// Generate an appropriate diagnosis
if len(dependenciesMissing) == 0 && dependenciesAvailableRequired == 0 {
logger.Println("Your system is ready for Wails development!")
}
if dependenciesAvailableRequired != 0 {
log.Println("Install required packages using: " + info.Dependencies.InstallAllRequiredCommand())
}
if dependenciesAvailableOptional != 0 {
log.Println("Install optional packages using: " + info.Dependencies.InstallAllOptionalCommand())
}
if len(externalPackages) > 0 {
for _, p := range externalPackages {
if p.Optional {
print("[Optional] ")
}
log.Println("Install " + p.Name + ": " + p.InstallCommand)
}
}
if len(dependenciesMissing) != 0 {
// TODO: Check if apps are available locally and if so, adjust the diagnosis
log.Println("Fatal:")
log.Println("Required dependencies missing: " + strings.Join(dependenciesMissing, " "))
log.Println("Please read this article on how to resolve this: https://wails.app/guides/resolving-missing-packages")
}
log.Println("")
return nil
})
return nil
}
@@ -0,0 +1,91 @@
package generate
import (
"io"
"time"
"github.com/leaanthony/clir"
"github.com/wailsapp/wails/v2/pkg/clilogger"
"github.com/wailsapp/wails/v2/pkg/parser"
)
// AddSubcommand adds the `dev` command for the Wails application
func AddSubcommand(app *clir.Cli, w io.Writer) error {
command := app.NewSubCommand("generate", "Code Generation Tools")
// Backend API
backendAPI := command.NewSubCommand("module", "Generates a JS module for the frontend to interface with the backend")
// Quiet Init
quiet := false
backendAPI.BoolFlag("q", "Supress output to console", &quiet)
backendAPI.Action(func() error {
// Create logger
logger := clilogger.New(w)
logger.Mute(quiet)
app.PrintBanner()
logger.Print("Generating Javascript module for Go code...")
// Start Time
start := time.Now()
p, err := parser.GenerateWailsFrontendPackage()
if err != nil {
return err
}
logger.Println("done.")
logger.Println("")
elapsed := time.Since(start)
packages := p.Packages
// Print report
for _, pkg := range p.Packages {
if pkg.ShouldGenerate() {
logPackage(pkg, logger)
}
}
logger.Println("%d packages parsed in %s.", len(packages), elapsed)
return nil
})
return nil
}
func logPackage(pkg *parser.Package, logger *clilogger.CLILogger) {
logger.Println("Processed Go package '" + pkg.Gopackage.Name + "' as '" + pkg.Name + "'")
for _, strct := range pkg.Structs() {
logger.Println("")
logger.Println(" Processed struct '" + strct.Name + "'")
if strct.IsBound {
for _, method := range strct.Methods {
logger.Println(" Bound method '" + method.Name + "'")
}
}
if strct.IsUsedAsData {
for _, field := range strct.Fields {
if !field.Ignored {
logger.Print(" Processed ")
if field.IsOptional {
logger.Print("optional ")
}
logger.Println("field '" + field.Name + "' as '" + field.JSName() + "'")
}
}
}
}
logger.Println("")
// logger.Println(" Original Go Package Path:", pkg.Gopackage.PkgPath)
// logger.Println(" Original Go Package Path:", pkg.Gopackage.PkgPath)
}
@@ -0,0 +1,182 @@
package initialise
import (
"fmt"
"io"
"strings"
"time"
"github.com/leaanthony/clir"
"github.com/pkg/errors"
"github.com/wailsapp/wails/v2/internal/templates"
"github.com/wailsapp/wails/v2/pkg/clilogger"
"github.com/wailsapp/wails/v2/pkg/git"
)
// AddSubcommand adds the `init` command for the Wails application
func AddSubcommand(app *clir.Cli, w io.Writer) error {
// Load the template shortnames
validShortNames, err := templates.TemplateShortNames()
if err != nil {
return err
}
command := app.NewSubCommand("init", "Initialise a new Wails project")
// Setup template name flag
templateName := "vanilla"
description := "Name of template to use. Valid tempates: " + validShortNames.Join(" ")
command.StringFlag("t", description, &templateName)
// Setup project name
projectName := ""
command.StringFlag("n", "Name of project", &projectName)
// Setup project directory
projectDirectory := ""
command.StringFlag("d", "Project directory", &projectDirectory)
// Quiet Init
quiet := false
command.BoolFlag("q", "Supress output to console", &quiet)
initGit := false
gitInstalled := git.IsInstalled()
if gitInstalled {
// Git Init
command.BoolFlag("g", "Initialise git repository", &initGit)
}
// VSCode project files
vscode := false
command.BoolFlag("vscode", "Generate VSCode project files", &vscode)
// List templates
list := false
command.BoolFlag("l", "List templates", &list)
command.Action(func() error {
// Create logger
logger := clilogger.New(w)
logger.Mute(quiet)
// Are we listing templates?
if list {
app.PrintBanner()
err := templates.OutputList(logger)
logger.Println("")
return err
}
// Validate output type
if !validShortNames.Contains(templateName) {
logger.Print(fmt.Sprintf("[ERROR] Template '%s' is not valid", templateName))
logger.Println("")
command.PrintHelp()
return nil
}
// Validate name
if len(projectName) == 0 {
logger.Println("ERROR: Project name required")
logger.Println("")
command.PrintHelp()
return nil
}
if !quiet {
app.PrintBanner()
}
task := fmt.Sprintf("Initialising Project %s", strings.Title(projectName))
logger.Println(task)
logger.Println(strings.Repeat("-", len(task)))
// Create Template Options
options := &templates.Options{
ProjectName: projectName,
TargetDir: projectDirectory,
TemplateName: templateName,
Logger: logger,
GenerateVSCode: vscode,
InitGit: initGit,
}
// Try to discover author details from git config
err := findAuthorDetails(options)
if err != nil {
return err
}
return initProject(options)
})
return nil
}
// initProject is our main init command
func initProject(options *templates.Options) error {
// Start Time
start := time.Now()
// Install the template
err := templates.Install(options)
if err != nil {
return err
}
if options.InitGit {
err = initGit(options)
if err != nil {
return err
}
}
// Output stats
elapsed := time.Since(start)
options.Logger.Println("")
options.Logger.Println("Project Name: " + options.ProjectName)
options.Logger.Println("Project Directory: " + options.TargetDir)
options.Logger.Println("Project Template: " + options.TemplateName)
if options.GenerateVSCode {
options.Logger.Println("VSCode config files generated.")
}
if options.InitGit {
options.Logger.Println("Git repository initialised.")
}
options.Logger.Println("")
options.Logger.Println(fmt.Sprintf("Initialised project '%s' in %s.", options.ProjectName, elapsed.Round(time.Millisecond).String()))
options.Logger.Println("")
return nil
}
func initGit(options *templates.Options) error {
err := git.InitRepo(options.TargetDir)
if err != nil {
return errors.Wrap(err, "Unable to initialise git repository:")
}
return nil
}
func findAuthorDetails(options *templates.Options) error {
if git.IsInstalled() {
name, err := git.Name()
if err != nil {
return err
}
options.AuthorName = strings.TrimSpace(name)
email, err := git.Email()
if err != nil {
return err
}
options.AuthorEmail = strings.TrimSpace(email)
}
return nil
}

Some files were not shown because too many files have changed in this diff Show More