diff --git a/.gitignore b/.gitignore
index e4739f9a0..a91c52300 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,30 +3,16 @@ i18n/po/*.mo
i18n/crowdin_api_key.txt
src/js/translations.js
-# Coinbase API ClientID/Secret
-coinbase.json
-src/js/coinbase.js
-
# cordova
+plugins
+platforms
cordova/project-*/*
cordova/*.keystore
-amazon.json
-src/js/amazon.js
-
-
# node-webkit
cache
webkitbuilds/*
!webkitbuilds/README.md
-!webkitbuilds/setup-win.iss
-!webkitbuilds/favicon.ico
-!webkitbuilds/.desktop
-!webkitbuilds/build-osx.sh
-!webkitbuilds/Background.png
-
-#fonts
-public/fonts
# chrome extensions
chrome-app/build/*
@@ -59,7 +45,7 @@ build/Release
node_modules
bower_components
angular-bitcore-wallet-client/angular-bitcore-wallet-client.js
-angular-pbkdf2/angular-pbkdf2.js
+angular-bitauth/angular-bitauth.js
# Users Environment Variables
.lock-wscript
@@ -70,9 +56,6 @@ angular-pbkdf2/angular-pbkdf2.js
.AppleDouble
.LSOverride
-# Icon must end with two \r
-Icon
-
# Thumbnails
._*
@@ -96,39 +79,36 @@ Session.vim
.netrwhist
*~
+.tags
+.tags1
+
# SASS
src/sass/*.css
.sass-cache
-# copay public
-public/icons/*
-public/css/*
-public/lib/*
-public/js/*
+# copay www
+www/css/*
+www/lib/*
+www/js/*
+www/fonts
## templates
+/config.xml
+/ionic.config.json
/appConfig.json
+externalServices.json
cordova/Makefile
cordova/ProjectMakefile
-app-template/bpapp
-cordova/ProjectMakefile
+app-template/bitpay-wallet
cordova/config.xml
cordova/wp/Package.appxmanifest
-public/img/logo-negative.svg
-public/img/logo.svg
src/js/appConfig.js
+src/js/externalServices.js
+chrome-app/manifest.json
+www/img/app
+www/index.html
-cordova/Makefile
-cordova/ProjectMakefile
-app-template/bpapp
-cordova/ProjectMakefile
-cordova/config.xml
-cordova/wp/Package.appxmanifest
-public/img/logo-negative.svg
-public/img/logo.svg
-src/js/appConfig.js
-
cordova/android/res/
cordova/wp/Assets/
cordova/wp/*.png
@@ -136,7 +116,3 @@ cordova/wp/*.jpg
cordova/ios/splash/
cordova/ios/icons/
cordova/project/
-
-
-
-
diff --git a/Gruntfile.js b/Gruntfile.js
index 0b7fe8444..3c2064c2c 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -6,12 +6,13 @@ module.exports = function(grunt) {
// Project Configuration
grunt.initConfig({
+ pkg: grunt.file.readJSON('package.json'),
exec: {
appConfig: {
command: 'node ./util/buildAppConfig.js'
},
- coinbase: {
- command: 'node ./util/coinbase.js'
+ externalServices: {
+ command: 'node ./util/buildExternalServices.js'
},
clean: {
command: 'rm -Rf bower_components node_modules'
@@ -19,8 +20,8 @@ module.exports = function(grunt) {
cordovaclean: {
command: 'make -C cordova clean'
},
- osx: {
- command: 'webkitbuilds/build-osx.sh sign'
+ macos: {
+ command: 'sh webkitbuilds/build-macos.sh sign'
},
coveralls: {
command: 'cat coverage/report-lcov/lcov.info |./node_modules/coveralls/bin/coveralls.js'
@@ -28,20 +29,29 @@ module.exports = function(grunt) {
chrome: {
command: 'make -C chrome-app '
},
- wp: {
- command: 'make -C cordova wp',
+ wpinit: {
+ command: 'make -C cordova wp-init',
+ },
+ wpcopy: {
+ command: 'make -C cordova wp-copy',
+ },
+ iosdebug: {
+ command: 'npm run build:ios',
},
ios: {
- command: 'make -C cordova ios',
+ command: 'npm run build:ios-release',
},
xcode: {
- command: 'open cordova/project-ios/platforms/ios/*.xcodeproj',
+ command: 'npm run open:ios',
+ },
+ androiddebug: {
+ command: 'npm run build:android',
},
android: {
- command: 'make -C cordova android',
+ command: 'npm run build:android-release',
},
androidrun: {
- command: 'make -C cordova androidrun',
+ command: 'npm run run:android && npm run log:android',
},
androidbuild: {
command: 'cd cordova/project && cordova build android --release',
@@ -51,10 +61,10 @@ module.exports = function(grunt) {
stdin: true,
},
desktopsign: {
- cmd: 'gpg -u 1112CFA1 --output webkitbuilds/Copay-linux.zip.sig --detach-sig webkitbuilds/Copay-linux.zip && gpg -u 1112CFA1 --output webkitbuilds/Copay-win.exe.sig --detach-sig webkitbuilds/Copay-win.exe'
+ cmd: 'gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>-linux.zip.sig --detach-sig webkitbuilds/<%= pkg.title %>-linux.zip && gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>-win.exe.sig --detach-sig webkitbuilds/<%= pkg.title %>-win.exe'
},
desktopverify: {
- cmd: 'gpg --verify webkitbuilds/Copay-linux.zip.sig webkitbuilds/Copay-linux.zip && gpg --verify webkitbuilds/Copay-win.exe.sig webkitbuilds/Copay-win.exe'
+ cmd: 'gpg --verify webkitbuilds/<%= pkg.title %>-linux.zip.sig webkitbuilds/<%= pkg.title %>-linux.zip && gpg --verify webkitbuilds/<%= pkg.title %>-win.exe.sig webkitbuilds/<%= pkg.title %>-win.exe'
},
},
watch: {
@@ -65,11 +75,11 @@ module.exports = function(grunt) {
},
},
css: {
- files: ['src/sass/*.css', 'src/css/*.css'],
+ files: ['src/css/*.css'],
tasks: ['concat:css']
},
sass: {
- files: ['src/sass/*.scss'],
+ files: ['src/sass/**/**/*.scss'],
tasks: ['sass', 'concat:css']
},
main: {
@@ -94,7 +104,7 @@ module.exports = function(grunt) {
},
files: [{
expand: true,
- src: ['src/sass/*.scss'],
+ src: ['src/sass/main.scss'],
dest: './',
ext: '.css'
}]
@@ -108,20 +118,21 @@ module.exports = function(grunt) {
angular: {
src: [
'bower_components/qrcode-generator/js/qrcode.js',
- 'bower_components/qrcode-decoder-js/lib/qrcode-decoder.js',
'bower_components/moment/min/moment-with-locales.js',
- 'bower_components/angular-ui-router/release/angular-ui-router.js',
'bower_components/angular-moment/angular-moment.js',
'bower_components/ng-lodash/build/ng-lodash.js',
'bower_components/angular-qrcode/angular-qrcode.js',
'bower_components/angular-gettext/dist/angular-gettext.js',
- 'bower_components/angular-sanitize/angular-sanitize.js',
'bower_components/ng-csv/build/ng-csv.js',
+ 'bower_components/ionic-toast/dist/ionic-toast.bundle.min.js',
+ 'bower_components/angular-clipboard/angular-clipboard.js',
+ 'bower_components/angular-md5/angular-md5.js',
'bower_components/angular-mocks/angular-mocks.js',
- 'angular-pbkdf2/angular-pbkdf2.js',
+ 'bower_components/ngtouch/src/ngTouch.js',
+ 'angular-bitauth/angular-bitauth.js',
'angular-bitcore-wallet-client/angular-bitcore-wallet-client.js'
],
- dest: 'public/lib/angular.js'
+ dest: 'www/lib/angular.js'
},
js: {
src: [
@@ -134,53 +145,19 @@ module.exports = function(grunt) {
'src/js/controllers/**/*.js',
'src/js/translations.js',
'src/js/appConfig.js',
- 'src/js/coinbase.js',
+ 'src/js/externalServices.js',
'src/js/init.js',
'src/js/trezor-url.js',
- 'bower_components/trezor-connect/login.js'
+ 'bower_components/trezor-connect/login.js',
+ 'node_modules/bezier-easing/dist/bezier-easing.min.js',
+ 'node_modules/cordova-plugin-qrscanner/dist/cordova-plugin-qrscanner-lib.min.js'
],
- dest: 'public/js/copay.js'
+ dest: 'www/js/copay.js'
},
css: {
src: ['src/sass/*.css', 'src/css/*.css'],
- dest: 'public/css/copay.css'
- },
- foundation: {
- src: [
- 'bower_components/angular/angular-csp.css',
- 'bower_components/foundation/css/foundation.css',
- 'bower_components/animate.css/animate.css'
- ],
- dest: 'public/css/foundation.css',
- },
- ionic_js: {
- src: [
- 'bower_components/ionic/release/js/ionic.bundle.min.js'
- ],
- dest: 'public/lib/ionic.bundle.js'
- },
- ionic_css: {
- src: [
- 'bower_components/ionic/release/css/ionic.min.css'
- ],
- dest: 'public/css/ionic.css',
- },
- ui_components_js: {
- src: [
- 'bower_components/jquery/dist/jquery.js',
- 'bower_components/roundSlider/dist/roundslider.min.js',
- 'bower_components/angular-gridster/dist/angular-gridster.min.js',
- 'bower_components/javascript-detect-element-resize/detect-element-resize.js'
- ],
- dest: 'public/lib/ui-components.js'
- },
- ui_components_css: {
- src: [
- 'bower_components/roundSlider/dist/roundslider.min.css',
- 'bower_components/angular-gridster/dist/angular-gridster.min.css'
- ],
- dest: 'public/css/ui-components.css',
- },
+ dest: 'www/css/copay.css'
+ }
},
uglify: {
options: {
@@ -188,8 +165,8 @@ module.exports = function(grunt) {
},
prod: {
files: {
- 'public/js/copay.js': ['public/js/copay.js'],
- 'public/lib/angular.js': ['public/lib/angular.js']
+ 'www/js/copay.js': ['www/js/copay.js'],
+ 'www/lib/angular.js': ['www/lib/angular.js']
}
}
},
@@ -197,8 +174,8 @@ module.exports = function(grunt) {
pot: {
files: {
'i18n/po/template.pot': [
- 'public/index.html',
- 'public/views/**/*.html',
+ 'www/index.html',
+ 'www/views/**/*.html',
'src/js/routes.js',
'src/js/services/*.js',
'src/js/controllers/**/*.js'
@@ -217,85 +194,76 @@ module.exports = function(grunt) {
},
},
copy: {
- icons: {
- expand: true,
- flatten: true,
- src: 'bower_components/foundation-icon-fonts/foundation-icons.*',
- dest: 'public/icons/'
- },
ionic_fonts: {
expand: true,
flatten: true,
src: 'bower_components/ionic/release/fonts/ionicons.*',
- dest: 'public/fonts/'
+ dest: 'www/fonts/'
+ },
+ ionic_js: {
+ expand: true,
+ flatten: true,
+ src: 'bower_components/ionic/release/js/ionic.bundle.min.js',
+ dest: 'www/lib/'
},
linux: {
files: [{
expand: true,
cwd: 'webkitbuilds/',
- src: ['.desktop', '../public/img/icons/favicon.ico', '../public/img/icons/icon-256.png'],
- dest: 'webkitbuilds/Copay/linux64/',
+ src: ['.desktop', '../www/img/app/favicon.ico', '../resources/<%= pkg.name %>/linux/512x512.png'],
+ dest: 'webkitbuilds/<%= pkg.title %>/linux64/',
flatten: true,
filter: 'isFile'
}],
}
},
- karma: {
- unit: {
- configFile: 'test/karma.conf.js'
- },
- prod: {
- configFile: 'test/karma.conf.js',
- singleRun: true
- }
- },
nwjs: {
options: {
- appName: 'Copay',
+ appName: '<%= pkg.title %>',
platforms: ['win64', 'osx64', 'linux64'],
buildDir: './webkitbuilds',
version: '0.16.0',
- macIcns: './public/img/icons/icon.icns',
- exeIco: './public/img/icons/icon.ico'
+ macIcns: './resources/<%= pkg.name %>/mac/app.icns',
+ exeIco: './www/img/app/logo.ico'
},
- src: ['./package.json', './public/**/*']
+ src: ['./package.json', './www/**/*']
},
compress: {
linux: {
options: {
- archive: './webkitbuilds/Copay-linux.zip'
+ archive: './webkitbuilds/<%= pkg.title %>-linux.zip'
},
expand: true,
- cwd: './webkitbuilds/Copay/linux64/',
+ cwd: './webkitbuilds/<%= pkg.title %>/linux64/',
src: ['**/*'],
- dest: 'copay-linux/'
+ dest: '<%= pkg.title %>-linux/'
}
},
browserify: {
dist: {
files: {
'angular-bitcore-wallet-client/angular-bitcore-wallet-client.js': ['angular-bitcore-wallet-client/index.js'],
- 'angular-pbkdf2/angular-pbkdf2.js': ['angular-pbkdf2/index.js']
+ 'angular-bitauth/angular-bitauth.js': ['angular-bitauth/index.js']
},
}
}
});
- grunt.registerTask('default', ['nggettext_compile', 'exec:appConfig', 'exec:coinbase', 'browserify', 'sass', 'concat', 'copy:icons', 'copy:ionic_fonts']);
+ grunt.registerTask('default', ['nggettext_compile', 'exec:appConfig', 'exec:externalServices', 'browserify', 'sass', 'concat', 'copy:ionic_fonts', 'copy:ionic_js']);
grunt.registerTask('prod', ['default', 'uglify']);
grunt.registerTask('translate', ['nggettext_extract']);
- grunt.registerTask('test', ['karma:unit']);
- grunt.registerTask('test-coveralls', ['browserify', 'karma:prod', 'exec:coveralls']);
grunt.registerTask('desktop', ['prod', 'nwjs', 'copy:linux', 'compress:linux']);
- grunt.registerTask('osx', ['prod', 'nwjs', 'exec:osx']);
+ grunt.registerTask('macos', ['prod', 'nwjs', 'exec:macos']);
grunt.registerTask('chrome', ['exec:chrome']);
grunt.registerTask('wp', ['prod', 'exec:wp']);
- grunt.registerTask('wp-debug', ['default', 'exec:wp']);
- grunt.registerTask('ios', ['prod', 'exec:ios', 'exec:xcode']);
- grunt.registerTask('ios-debug', ['default', 'exec:ios', 'exec:xcode']);
+ grunt.registerTask('wp-copy', ['default', 'exec:wpcopy']);
+ grunt.registerTask('wp-init', ['default', 'exec:wpinit']);
+ grunt.registerTask('ios', ['exec:ios']);
+ grunt.registerTask('ios-debug', ['exec:iosdebug']);
+ grunt.registerTask('ios-run', ['exec:xcode']);
grunt.registerTask('cordovaclean', ['exec:cordovaclean']);
- grunt.registerTask('android-debug', ['default', 'exec:android', 'exec:androidrun']);
- grunt.registerTask('android', ['prod', 'exec:android']);
+ grunt.registerTask('android-debug', ['exec:androiddebug', 'exec:androidrun']);
+ grunt.registerTask('android', ['exec:android']);
grunt.registerTask('android-release', ['prod', 'exec:android', 'exec:androidsign']);
grunt.registerTask('desktopsign', ['exec:desktopsign', 'exec:desktopverify']);
diff --git a/Makefile b/Makefile
deleted file mode 100644
index c45efca58..000000000
--- a/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-VERSION=`cut -d '"' -f2 $BUILDDIR/../version.js`
diff --git a/README.md b/README.md
index eaa9cf2fd..ee4d4007f 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
[![Build Status](https://secure.travis-ci.org/bitpay/copay.svg)](http://travis-ci.org/bitpay/copay)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/copay/localized.png)](https://crowdin.com/project/copay)
-Copay is an easy-to-use, open-source, multiplatform, multisignature, secure bitcoin wallet platform for both individuals and companies. Copay uses [Bitcore Wallet Service](https://github.com/bitpay/bitcore-wallet-service) (BWS) for peer synchronization and network interfacing.
+Copay is an easy-to-use, open-source, multiplatform, multisignature, secure bitcoin wallet platform for both individuals and companies. Copay uses [Bitcore Wallet Service](https://github.com/bitpay/bitcore-wallet-service) (BWS) for peer synchronization and network interfacing.
Binary versions of Copay are available for download at [Copay.io](https://copay.io/#download). Copay Binaries are signed with the key `copay@bitpay.com` – See the section [`How to Verify Copay Signatures`](https://github.com/bitpay/copay#how-to-verify-copay-signatures) for details.
@@ -29,7 +29,9 @@ For a list of frequently asked questions please visit the [Copay FAQ](https://gi
- Multiple languages supported
- Available for [iOS](https://itunes.apple.com/us/app/copay/id951330296), [Android](https://play.google.com/store/apps/details?id=com.bitpay.copay&hl=en), [Windows Phone](http://www.windowsphone.com/en-us/store/app/copay-wallet/4372479b-a064-4d18-8bd3-74a3bdb81c3a), [Chrome App](https://chrome.google.com/webstore/detail/copay/cnidaodnidkbaplmghlelgikaiejfhja?hl=en), [Linux](https://github.com/bitpay/copay/releases/latest), [Windows](https://github.com/bitpay/copay/releases/latest) and [OS X](https://github.com/bitpay/copay/releases/latest) devices
-## Install For Development
+## Testing in a Browser
+
+> **Note:** This method should only be used for development purposes. When running Copay in a normal browser environment, browser extensions and other malicious code might have access to internal data and private keys. For production use, see the latest official [releases](https://github.com/bitpay/copay/releases/).
Clone the repo and open the directory:
@@ -47,68 +49,83 @@ npm start
Visit [`localhost:3000`](http://localhost:3000/) to view the app.
-> **Note:** This method should only be used for development purposes. When running Copay in a normal browser environment, browser extensions and other malicious code might have access to internal data and private keys. For production use, see the latest official [releases](https://github.com/bitpay/copay/releases/).
+A watch task is also available to rebuild components of the app as changes are made. This task can be run in a separate process – while the server started by `npm start` is running – to quickly test changes.
-## Build Copay App Bundles
+```
+npm run watch
+```
+
+## Testing on Real Devices
+
+It's recommended that all final testing be done on a real device – both to assess performance and to enable features that are unavailable to the emulator (e.g. a device camera).
### Android
-- Install Android SDK
-- Run `make android`
+Follow the [Cordova Android Platform Guide](https://cordova.apache.org/docs/en/latest/guide/platforms/android/) to set up your development environment.
+
+When your developement enviroment is ready, run the `start:android` npm package script.
+
+```sh
+npm run apply:copay
+npm run start:android
+```
### iOS
-- Install Xcode 6.1 (or newer)
-- Run `make ios-prod`
+Follow the [Cordova iOS Platform Guide](https://cordova.apache.org/docs/en/latest/guide/platforms/android/) to set up your development environment.
-##### Notes for Xcode 7.0
+When your developement enviroment is ready, run the `start:ios` npm package script.
-###### ATS support
-
-Before starting Copay from Xcode, add these lines to "Custom iOS Target Properties":
-
-```
-NSAppTransportSecurity
-
- NSAllowsArbitraryLoads
-
-
+```sh
+npm run apply:copay
+npm run start:ios
```
-![Example](http://i.stack.imgur.com/nGw3j.png)
+### Desktop (Linux, macOS, and Windows)
+The desktop version of Copay currently uses NW.js, an app runtime based on Chromium. To get started, first install NW.js on your system from [the NW.js website](https://nwjs.io/).
-App Transport Security (ATS) enforces best practices in the secure connections between an app and its back end. [Read complete documentation](https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html).
-
-###### Invalid Bundle while submitting application
-
-`iPad Multitasking support requires launch story board in bundle`
-
-To fix this problem, add the following:
+When NW.js is installed, run the `start:desktop` npm package script.
+```sh
+npm run apply:copay
+npm run start:desktop
```
-UIRequiresFullScreen
-YES
+
+## Build Copay App Bundles
+
+Before building the release version for a platform, run the `clean-all` command to delete any untracked files in your current working directory. (Be sure to stash any uncommited changes you've made.) This guarantees consistency across builds for the current state of this repository.
+
+The `final` commands build the production version of the app, and bundle it with the release version of the platform being built.
+
+### Android
+
+```sh
+npm run clean-all
+npm run apply:copay
+npm run final:android
```
-###### Build settings, headers search path
-
-Add this line to your Build Settings -> Header Search Paths -> Release
-
-"$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include"
+### iOS
+```sh
+npm run clean-all
+npm run apply:copay
+npm run final:ios
+```
### Windows Phone
- Install Visual Studio 2013 (or newer)
- Run `make wp8-prod`
-### Desktop versions (Windows, OS X, Linux)
+### Desktop (Linux, macOS, and Windows)
-Copay uses NW.js (also know as node-webkit) for its desktop version. NW.js is an app runtime based on `Chromium` and `node.js`.
-
-- Install NW.js on your system from [nwjs.io](http://nwjs.io/)
-- Run `grunt desktop`
+```sh
+npm run clean-all
+npm run apply:copay
+npm run final:desktop
+```
### Google Chrome App
@@ -116,9 +133,17 @@ Copay uses NW.js (also know as node-webkit) for its desktop version. NW.js is an
On success, the Chrome extension will be located at: `browser-extensions/chrome/copay-chrome-extension`. To install it go to `chrome://extensions/` in your browser and ensure you have the 'developer mode' option enabled in the settings. Then click on "Load unpacked chrome extension" and choose the directory mentioned above.
-### Firefox Add-on
+## Configuration
-The Copay Firefox Extension has been deprecated and is no longer supported.
+### Enable External Services
+
+To enable external services, set the `COPAY_EXTERNAL_SERVICES_CONFIG_LOCATION` or `BITPAY_EXTERNAL_SERVICES_CONFIG_LOCATION` environment variable to the location of your configuration before running the `apply` task.
+
+```sh
+COPAY_EXTERNAL_SERVICES_CONFIG_LOCATION="~/.copay/externalServices.json" npm run apply:copay
+# or
+BITPAY_EXTERNAL_SERVICES_CONFIG_LOCATION="~/.bitpay/externalServices.json" npm run apply:bitpay
+```
## About Copay
diff --git a/angular-bitauth/index.js b/angular-bitauth/index.js
new file mode 100644
index 000000000..cb6ebaa2e
--- /dev/null
+++ b/angular-bitauth/index.js
@@ -0,0 +1,18 @@
+var bitauthModule = angular.module('bitauthModule', []);
+var bitauth = require('../node_modules/bitauth');
+
+bitauthModule.constant('MODULE_VERSION', '1.0.0');
+
+bitauthModule.provider("bitauthService", function() {
+ var provider = {};
+
+ provider.$get = function() {
+ var service = {};
+
+ service = bitauth;
+
+ return service;
+ };
+
+ return provider;
+});
diff --git a/angular-pbkdf2/index.js b/angular-pbkdf2/index.js
deleted file mode 100644
index 4e1e0d9b9..000000000
--- a/angular-pbkdf2/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var pbkdf2Module = angular.module('pbkdf2Module', []);
-var pbkdf2Sync = require('../node_modules/pbkdf2').pbkdf2Sync;
-
-pbkdf2Module.constant('MODULE_VERSION', '1.0.0');
-
-pbkdf2Module.provider("pbkdf2Service", function() {
- var provider = {};
-
- provider.$get = function() {
- var service = {};
-
- service.pbkdf2Sync = pbkdf2Sync;
-
- return service;
- };
-
- return provider;
-});
diff --git a/app-template/.desktop b/app-template/.desktop
index aff7c857b..ea5bb0424 100644
--- a/app-template/.desktop
+++ b/app-template/.desktop
@@ -1,9 +1,9 @@
[Desktop Entry]
Type=Application
Version=*VERSION*
-Name=*NAMECASENOSPACE*
-Comment=*DESCRIPTION*
-Exec=*NAMENOSPACE*
+Name=*USERVISIBLENAME*
+Comment=*PURPOSELINE*
+Exec=*PACKAGENAME*
Icon=icon-256.png
Terminal=false
Categories=Finance
diff --git a/app-template/Makefile b/app-template/Makefile
index bb6c3c868..c4ce002e4 100644
--- a/app-template/Makefile
+++ b/app-template/Makefile
@@ -1,44 +1,27 @@
-.PHONY: ios android wp
+.PHONY: ios android wp
WORKDIR=project-
all:
-clean:
- rm -Rf $(WORKDIR)*
+clean:
+ rm -Rf $(WORKDIR)*
+wp-init: config.xml
+ cordova create $(WORKDIR)$@ com.bitpay.*BUNDLENAME* "*USERVISIBLENAME*" || echo "Project Path Existed"
+ cp ProjectMakefile $(WORKDIR)$@/Makefile
+ mkdir -p $(WORKDIR)$@/www
+ cp -Rf ../www/* $(WORKDIR)$@/www
+ cp config.xml $(WORKDIR)$@/config.xml
+ make -C $(WORKDIR)$@ $(subst $(WORKDIR),, $(WORKDIR)$@)
-$(WORKDIR)android $(WORKDIR)ios $(WORKDIR)wp: config.xml
- cordova create $@ com.bitpay.*NAMENOSPACE* *NAMECASENOSPACE* || echo "Project Path Existed"
- cp ProjectMakefile $@/Makefile
- cp -af ../public/** $@/www
- sed "s/<\!-- PLACEHOLDER: CORDOVA SRIPT -->/
+
+
+
+
+
+
+