Commit c1dccfb9 authored by nano's avatar nano

actions

parent b5cebf79
......@@ -2,7 +2,11 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="f0cbce64-0ebc-4f60-8c2d-2fe9e214a8c0" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Dockerfile" afterPath="$PROJECT_DIR$/Dockerfile" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/entrypoint.sh" afterPath="$PROJECT_DIR$/entrypoint.sh" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/models/App.ts" afterPath="$PROJECT_DIR$/src/models/App.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/app.ts" afterPath="$PROJECT_DIR$/src/routes/app.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/utils.ts" afterPath="$PROJECT_DIR$/src/utils.ts" />
</list>
<ignored path="mycard-console-backend.iws" />
<ignored path=".idea/workspace.xml" />
......@@ -25,16 +29,28 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="Dockerfile" pinned="false" current-in-tab="true">
<file leaf-file-name="Dockerfile" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Dockerfile">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="101">
<caret line="6" column="120" lean-forward="false" selection-start-line="6" selection-start-column="120" selection-end-line="6" selection-end-column="120" />
<state relative-caret-position="304">
<caret line="19" column="0" lean-forward="true" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="app.ts" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="235">
<caret line="70" column="0" lean-forward="false" selection-start-line="70" selection-start-column="0" selection-end-line="71" selection-end-column="0" />
<folding>
<element signature="e#39#81#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
......@@ -48,8 +64,6 @@
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>@field</find>
<find>params</find>
<find>req</find>
<find>Array</find>
<find>news</find>
......@@ -78,6 +92,8 @@
<find>full</find>
<find>Can not change AppID</find>
<find>release</find>
<find>author</find>
<find>joi.ob</find>
</findStrings>
</component>
<component name="Git.Settings">
......@@ -109,17 +125,17 @@
<option value="$PROJECT_DIR$/.travis.yml" />
<option value="$PROJECT_DIR$/docker-compose.yml" />
<option value="$PROJECT_DIR$/src/routes/package.ts" />
<option value="$PROJECT_DIR$/server.ts" />
<option value="$PROJECT_DIR$/package.json" />
<option value="$PROJECT_DIR$/src/routes/upload.js" />
<option value="$PROJECT_DIR$/src/models/App.ts" />
<option value="$PROJECT_DIR$/src/routes/app.ts" />
<option value="$PROJECT_DIR$/package/main.ts" />
<option value="$PROJECT_DIR$/src/routes/upload.ts" />
<option value="$PROJECT_DIR$/config.ts" />
<option value="$PROJECT_DIR$/src/utils.ts" />
<option value="$PROJECT_DIR$/entrypoint.sh" />
<option value="$PROJECT_DIR$/Dockerfile" />
<option value="$PROJECT_DIR$/entrypoint.sh" />
<option value="$PROJECT_DIR$/src/utils.ts" />
<option value="$PROJECT_DIR$/src/models/App.ts" />
<option value="$PROJECT_DIR$/server.ts" />
<option value="$PROJECT_DIR$/src/routes/app.ts" />
</list>
</option>
</component>
......@@ -139,8 +155,8 @@
<handled-path value="$PROJECT_DIR$/node_modules" />
</component>
<component name="ProjectFrameBounds">
<option name="x" value="117" />
<option name="y" value="1175" />
<option name="x" value="169" />
<option name="y" value="1103" />
<option name="width" value="1232" />
<option name="height" value="777" />
</component>
......@@ -176,6 +192,56 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="routes" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="models" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
</panes>
......@@ -348,12 +414,12 @@
<workItem from="1493107593448" duration="867000" />
<workItem from="1493174892830" duration="25000" />
<workItem from="1493174934848" duration="6205000" />
<workItem from="1493198225466" duration="6145000" />
<workItem from="1493198225466" duration="12154000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="157371000" />
<option name="totallyTimeSpent" value="163380000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
......@@ -365,11 +431,11 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="117" y="1175" width="1232" height="777" extended-state="0" />
<frame x="169" y="1103" width="1232" height="777" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="TypeScript" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32846716" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.23947151" sideWeight="0.49384886" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.1577209" sideWeight="0.49384886" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="DB Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="DB Execution Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
......@@ -617,17 +683,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="18">
<caret line="50" column="3" lean-forward="false" selection-start-line="50" selection-start-column="3" selection-end-line="50" selection-end-column="3" />
<folding>
<element signature="e#77#104#0" expanded="false" />
<element signature="e#387#427#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/lib.es6.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="137">
......@@ -636,28 +691,12 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/App.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="864">
<caret line="49" column="26" lean-forward="true" selection-start-line="49" selection-start-column="26" selection-end-line="49" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="541">
<caret line="46" column="30" lean-forward="false" selection-start-line="46" selection-start-column="30" selection-end-line="46" selection-end-column="30" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="131">
<caret line="66" column="0" lean-forward="false" selection-start-line="66" selection-start-column="0" selection-end-line="67" selection-end-column="0" />
<folding>
<element signature="e#39#74#0" expanded="true" />
<element signature="e#39#74#0" expanded="false" />
</folding>
</state>
</provider>
......@@ -712,14 +751,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/entrypoint.sh">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="126">
<caret line="7" column="0" lean-forward="true" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/Iridium.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="162">
......@@ -739,31 +770,65 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="144">
<caret line="8" column="4" lean-forward="true" selection-start-line="8" selection-start-column="4" selection-end-line="8" selection-end-column="4" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="18">
<caret line="19" column="1" lean-forward="true" selection-start-line="19" selection-start-column="1" selection-end-line="19" selection-end-column="1" />
<state relative-caret-position="214">
<caret line="29" column="7" lean-forward="true" selection-start-line="29" selection-start-column="7" selection-end-line="29" selection-end-column="7" />
<folding>
<element signature="e#0#24#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<entry file="file://$PROJECT_DIR$/src/models/App.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="144">
<caret line="8" column="4" lean-forward="true" selection-start-line="8" selection-start-column="4" selection-end-line="8" selection-end-column="4" />
<state relative-caret-position="155">
<caret line="116" column="30" lean-forward="true" selection-start-line="116" selection-start-column="30" selection-end-line="116" selection-end-column="30" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="159">
<caret line="39" column="16" lean-forward="true" selection-start-line="39" selection-start-column="16" selection-end-line="39" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/entrypoint.sh">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="108">
<caret line="6" column="0" lean-forward="true" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Dockerfile">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="101">
<caret line="6" column="120" lean-forward="false" selection-start-line="6" selection-start-column="120" selection-end-line="6" selection-end-column="120" />
<state relative-caret-position="304">
<caret line="19" column="0" lean-forward="true" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="235">
<caret line="70" column="0" lean-forward="false" selection-start-line="70" selection-start-column="0" selection-end-line="71" selection-end-column="0" />
<folding>
<element signature="e#39#81#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
</project>
\ No newline at end of file
aria2c --conf-path=/usr/src/app/aria2.conf -D;
./ossutil config --endpoint oss-cn-hangzhou.aliyuncs.com --access-key-id $OSS_ACCESS_ID
--access-key-secret $OSS_ACCESS_KEY;
ossutil config --endpoint oss-cn-hangzhou.aliyuncs.com --access-key-id $OSS_ACCESS_ID --access-key-secret $OSS_ACCESS_KEY;
npm start
......@@ -26,6 +26,8 @@ interface File {
export interface App {
id: string;
status: string;
author: string;
name?: I18n<string>;
description?: I18n<string>;
developers?: I18n<[{ name: string, url: string }]>;
......@@ -48,7 +50,7 @@ export interface App {
cover?: string;
background?: string;
// packages?: Package[];
created_at: Date;
created_at?: Date;
}
@Collection('apps')
......@@ -56,6 +58,10 @@ export interface App {
export class AppSchema extends Instance<App, AppSchema> implements App {
@Property(String, true)
id: string;
@Property(String, true)
status: string;
@Property(String, true)
author: string;
@Property(Object, false)
name?: I18n<string>;
@Property(Object, false)
......
import Router = require('koa-router');
import {mongodb} from '../models/Iridium';
import {App, AppSchema} from '../models/App';
import {App} from '../models/App';
import {Context} from 'koa';
import * as joi from 'joi';
import {promisify as py} from 'bluebird';
const router = new Router();
router.get('/v2/apps', async (ctx: Context, next) => {
......@@ -24,7 +26,12 @@ router.get('/v1/apps', async (ctx: Context, next) => {
});
router.post('/v1/app/:id', async (ctx: Context, next) => {
let payload = ctx.request.body;
let payload: App = {
id: ctx.request.body.id,
name: ctx.request.body.name,
author: ctx.request.body.author,
status: 'editing',
};
if (!payload.id) {
ctx.throw(400, 'params error');
}
......@@ -37,7 +44,7 @@ router.post('/v1/app/:id', async (ctx: Context, next) => {
}
try {
ctx.body = await mongodb.Apps.insert(payload);
ctx.body = await mongodb.Apps.create(payload);
} catch (e) {
ctx.throw(400, e);
}
......@@ -49,9 +56,22 @@ router.patch('/v1/app/:id', async (ctx: Context, next) => {
if (!app) {
return ctx.throw(400, `App ${ctx.params.id} Not Found `);
}
if (!ctx.request.body.id || ctx.request.body.id !== app.id) {
if (!_app.id || _app.id !== app.id) {
ctx.throw(400, `Can not change AppID`);
}
if (_app.status == 'ready') {
try {
await py(joi.validate)(_app, joi.object().keys({
action: joi.object().keys({
win32: joi.object().required(),
darwin: joi.object().required()
}).required(),
}).required());
} catch (e) {
e.message = '资料尚未填写完毕或格式有误';
return ctx.throw(e);
}
}
app.handleUpdate(_app);
......
......@@ -21,7 +21,7 @@ export function renderChecksum(files: { path: string, hash?: string }[]) {
export function UploadOSS(dist: string): Promise<void> {
return new Promise<void>((resolve, reject) => {
let child = child_process.spawn('ossutil', ['cp', dist, 'oss://mycard/test-release'], {stdio: 'inherit'});
let child = child_process.spawn('ossutil', ['cp', '--recursive', dist, 'oss://mycard/test-release'], {stdio: 'inherit'});
child.on('exit', (code) => {
if (code == 0) {
resolve();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment