Skip to content

Commit

Permalink
Merge pull request #3 from nearprotocol/j-buildwork
Browse files Browse the repository at this point in the history
[nearshell] build works on standard files
  • Loading branch information
janedegtiareva committed Mar 5, 2019
2 parents 8bdc800 + 6e57082 commit c3bf649
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 27 deletions.
66 changes: 46 additions & 20 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,48 +3,63 @@ const { SimpleKeyStoreSigner, InMemoryKeyStore, KeyPair, LocalNodeConnection, Ne
const neardev = require('nearlib/dev');
const UnencryptedFileSystemKeyStore = require('./unencrypted_file_system_keystore');
const fs = require('fs');
const yargs = require('yargs');

gulp.task("build:model", async function (done) {
gulp.task("build:model", function (done) {
const asc = require("assemblyscript/bin/asc");
asc.main([
"model.ts",
"--baseDir", "./out",
"--nearFile", "../out/model.near.ts",
"--measure"
], done);

const buildModelFn = function(fileName) {
asc.main([
fileName,
"--baseDir", yargs.argv.out_dir,
"--nearFile", generateNearFileFullPath(fileName),
"--measure"
], done);
};
yargs.argv.model_files.forEach(buildModelFn);
done();
});

gulp.task("build:bindings", async function (done) {
const asc = require('assemblyscript/bin/asc');
gulp.task("build:bindings", function (done) {
const asc = require("assemblyscript/bin/asc");
asc.main([
"main.ts",
"--baseDir", "./out",
"--binaryFile", "../out/main.wasm",
"--nearFile", "../out/main.near.ts",
yargs.argv.contract_file,
"--baseDir", yargs.argv.out_dir,
"--binaryFile", yargs.argv.out_file,
"--nearFile", generateNearFileFullPath(yargs.argv.contract_file),
"--measure"
], done);
});

gulp.task("build:all", gulp.series('build:model', 'build:bindings', async function (done) {
gulp.task("build:all", gulp.series('build:model', 'build:bindings', function (done) {
const asc = require("assemblyscript/bin/asc");
asc.main([
"../out/main.near.ts",
"--baseDir", "./out",
"--baseDir", yargs.argv.out_dir,
"-O3",
"--binaryFile", "../out/main.wasm",
"--binaryFile", yargs.argv.out_file,
"--sourceMap",
"--measure"
], done);
}));

gulp.task('copyfiles', async function(done) {
return await gulp.src('./assembly/**/*')
.pipe(gulp.dest('./out/'));
await gulp.src(yargs.argv.src_dir + "/" + yargs.argv.contract_file)
.pipe(gulp.dest(yargs.argv.out_dir));
await gulp.src(yargs.argv.src_dir + "/**/*")
.pipe(gulp.dest(yargs.argv.out_dir));
if (yargs.argv.model_files) {
await gulp.src(yargs.argv.src_dir + "/" + yargs.argv.model_files)
.pipe(gulp.dest(yargs.argv.out_dir));
}
console.log("Copy files complete")
done();
});

gulp.task('build', gulp.series('copyfiles', 'build:all', async function(done) {
gulp.task('build', gulp.series('copyfiles', 'build:all', function(done) {
console.log("Build task complete");
done();
}));
}))

// Only works for dev environments
gulp.task('createDevAccount', async function(argv) {
Expand Down Expand Up @@ -75,6 +90,17 @@ async function deployContractAndWaitForTransaction(accountId, contractName, data
return waitResult;
}


function generateNearFileFullPath(fileName) {
return "../" + yargs.argv.out_dir + "/" + generateNearFileName(fileName);
}


// converts file.ts to file.near.ts
function generateNearFileName(fileName) {
return fileName.replace(/.ts$/, '.near.ts');
}

gulp.task('deploy', async function(argv) {
const keyStore = new UnencryptedFileSystemKeyStore();
let accountId = argv.account_id;
Expand Down
48 changes: 42 additions & 6 deletions near
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,14 @@ const deploy = {
.option('account_id', {
desc: 'Your developer account id. If you have only one account, that one will be selected by default',
type: 'string',
})
,
}),
handler: (argv) => {
gulp.on('error', function(e) {
console.log("Deploy failed. Error:")
console.log(e.error);
});
if (gulp.task('deploy')) {
const result = gulp.task('deploy')(argv);
const result = gulp.task('deploy')(argv).catch(console.log);
} else {
throw "Unexpected error: deploy task not found in gulpfile."
}
Expand All @@ -41,10 +44,39 @@ const deploy = {
const build = {
command: 'build',
desc: 'build your smart contract',
builder: (yargs) => yargs,
builder: (yargs) => yargs
.option('src_dir', {
desc: 'Source directory',
type: 'string',
default: './assembly'
})
.option('out_dir', {
desc: 'Output directory',
type: 'string',
default: './out'
})
.option('out_file', {
desc: 'Output file',
type: 'string',
default: 'main.wasm'
})
.option('model_files', {
desc: 'Path to model files (additional classes used in contract)',
type: 'array',
default: ['model.ts']
})
.option('contract_file', {
desc: 'Path to main contract file',
type: 'string',
default: 'main.ts'
}),
handler: (argv) => {
gulp.on('error', function(e) {
console.log("Build failed. Error:")
console.log(e.error);
});
if (gulp.task('build')) {
const result = gulp.task('build')();
const t = gulp.task('build')();
} else {
throw "Unexpected error: build task not found in gulpfile."
}
Expand All @@ -67,8 +99,12 @@ const createAccount = {
})
,
handler: (argv) => {
gulp.on('error', function(e) {
console.log("Create account failed. Error:")
console.log(e.error);
});
if (gulp.task('createDevAccount')) {
const result = gulp.task('createDevAccount')(argv);
const result = gulp.task('createDevAccount')(argv).catch(console.log);
} else {
throw "Unexpected error: createDevAccount task not found in gulpfile."
}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "near-shell",
"version": "0.0.4",
"version": "0.0.5",
"description": "Command line utilities to interact with near blockchain",
"main": "index.js",
"scripts": {
Expand Down

0 comments on commit c3bf649

Please sign in to comment.