Skip to content

Package skeleton, typescript support and entry point for the cli #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jul 3, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ensure that the shebang of our start script can be correctly interpreted

bin/appbuilder.js eol=lf

50 changes: 31 additions & 19 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,25 +1,37 @@
# Logs
logs
*.log

# Runtime data
pids
*.pid
*.seed
*.js
!/*.js
!bin/nativescript.js
!vendor/*.js
*.js.map

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
*.seed
*.log
*.csv
*.dat
*.out
*.pid
*.gz
*.tgz
*.tmp
*.sublime-workspace
tscommand*.tmp.txt
.tscache/
/lib/.d.ts

# Coverage directory used by tools like istanbul
coverage

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
pids
logs
results
scratch/
.idea/workspace.xml
.idea/tasks.xml
.idea/watcherTasks.xml

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
test-reports.xml

# Dependency directory
# Deployed apps should consider commenting this line out:
# see https://npmjs.org/doc/faq.html#Should-I-check-my-node_modules-folder-into-git
npm-debug.log
node_modules
resources/App_Resources
resources/Cordova
resources/ItemTemplates
resources/ProjectTemplates
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "lib/common"]
path = lib/common
url = [email protected]:telerik/mobile-cli-lib.git
1 change: 1 addition & 0 deletions .idea/.name

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/nativescript-cli.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions .idea/scopes/Nativescript_CLI_TypeScript.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/scopes/scope_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

137 changes: 137 additions & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
var util = require("util");

var now = new Date().toISOString();

function shallowCopy(obj) {
var result = {};
Object.keys(obj).forEach(function(key) {
result[key] = obj[key];
});
return result;
}

module.exports = function(grunt) {
grunt.initConfig({
copyPackageTo: "\\\\telerik.com\\Resources\\BlackDragon\\Builds\\nativescript-cli",

deploymentEnvironment: process.env["DeploymentEnvironment"] || "local",
jobName: process.env["JOB_NAME"] || "local",
buildNumber: process.env["BUILD_NUMBER"] || "non-ci",
dateString: now.substr(0, now.indexOf("T")),

pkg: grunt.file.readJSON("package.json"),

ts: {
options: {
target: 'es5',
module: 'commonjs',
sourceMap: true,
declaration: false,
removeComments: false
},

devlib: {
src: ["lib/**/*.ts"],
reference: "lib/.d.ts"
},

devall: {
src: ["lib/**/*.ts", "test/**/*.ts"],
reference: "lib/.d.ts"
},

release_build: {
src: ["lib/**/*.ts", "test/**/*.ts"],
reference: "lib/.d.ts",
options: {
sourceMap: false,
removeComments: true
}
}
},

watch: {
devall: {
files: ["lib/**/*.ts", 'test/**/*.ts'],
tasks: ['ts:devall'],
options: {
atBegin: true,
interrupt: true
}
}
},

shell: {
options: {
stdout: true,
stderr: true
},

build_package: {
command: "npm pack",
options: {
execOptions: {
env: (function() {
var env = shallowCopy(process.env);
env["NATIVESCRIPT_SKIP_POSTINSTALL_TASKS"] = "1";
return env;
})()
}
}
}
},

copy: {
package_to_drop_folder: {
src: "*.tgz",
dest: "<%= copyPackageTo %>/<%= jobName %>/<%= deploymentEnvironment %>/<%= dateString %> #<%= buildNumber %>/"
},
package_to_qa_drop_folder: {
src: "*.tgz",
dest: "<%= copyPackageTo %>/<%= jobName %>/<%= deploymentEnvironment %>/nativescript.tgz"
}
},

clean: {
src: ["test/**/*.js*", "lib/**/*.js*", "*.tgz"]
}
});

grunt.loadNpmTasks("grunt-contrib-clean");
grunt.loadNpmTasks("grunt-contrib-copy");
grunt.loadNpmTasks("grunt-contrib-watch");
grunt.loadNpmTasks("grunt-shell");
grunt.loadNpmTasks("grunt-ts");

grunt.registerTask("set_package_version", function(version) {
var fs = require("fs");
var buildVersion = version !== undefined ? version : process.env["BUILD_NUMBER"];
if (process.env["BUILD_CAUSE_GHPRBCAUSE"]) {
buildVersion = "PR" + buildVersion;
}

var packageJson = grunt.file.readJSON("package.json");
var versionParts = packageJson.version.split("-");
versionParts[1] = buildVersion;
packageJson.version = versionParts.join("-");
grunt.file.write("package.json", JSON.stringify(packageJson, null, " "));
});

grunt.registerTask("test", ["ts:devall", "shell:npm_test"]);
grunt.registerTask("pack", [
"clean",
"ts:release_build",
"shell:prepare_resources",

"shell:apply_deployment_environment",
"shell:ci_unit_tests",

"set_package_version",
"shell:build_package",

"copy:package_to_drop_folder",
"copy:package_to_qa_drop_folder"
]);

grunt.registerTask("default", "ts:devlib");
};
4 changes: 4 additions & 0 deletions bin/nativescript
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/sh

AB_DIR="`dirname \"$0\"`"
node "$AB_DIR/nativescript.js" $@
1 change: 1 addition & 0 deletions bin/nativescript.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@node %~dp0\nativescript.js %*
3 changes: 3 additions & 0 deletions bin/nativescript.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/usr/bin/env node

require("../lib/nativescript-cli.js");
4 changes: 4 additions & 0 deletions lib/bootstrap.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
global._ = require("underscore");
global.$injector = require("./common/lib/yok").injector;

$injector.require("nativescript-cli", "./nativescript-cli");
1 change: 1 addition & 0 deletions lib/common
Submodule common added at a42947
10 changes: 10 additions & 0 deletions lib/nativescript-cli.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
///<reference path=".d.ts"/>

import Fiber = require("fibers");

require("./bootstrap");

var fiber = Fiber(() => {
});
global.__main_fiber__ = fiber; // leak fiber to prevent it from being GC'd and thus corrupting V8
fiber.run();
45 changes: 45 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"name": "nativescript-cli",
"version": "0.1.0",
"author": "Telerik <[email protected]>",
"description": "Command-line interface for building NativeScript projects",
"bin": {
"nativescript": "./bin/nativescript.js"
},
"main": "./lib/nativescript-cli.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/NativeScript/nativescript-cli.git"
},
"keywords": [
"nativescript",
"appbuilder",
"telerik",
"mobile"
],
"license": "Apache2.0",
"dependencies": {
"fibers": "https://github.com/icenium/node-fibers/tarball/master",
"log4js": "0.6.9",
"tabtab": "https://github.com/tailsu/node-tabtab/tarball/master",
"underscore": "1.5.2",
"unzip": "0.1.9",
"yargs": "1.2.2"
},
"analyze": true,
"devDependencies": {
"grunt": "0.4.2",
"grunt-ts": "1.11.2",
"grunt-contrib-clean": "0.5.0",
"grunt-contrib-watch": "0.5.3",
"grunt-shell": "0.6.4",
"grunt-contrib-copy": "0.5.0"
},
"license": "Apache-2.0",
"engines": {
"node": "~0.10.22"
}
}