collection-json-browser 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +40 -0
- data/app/assets/javascripts/collection_json_browser/angular.min.js +162 -0
- data/app/assets/javascripts/collection_json_browser/angular/controllers/api_controller.js +38 -0
- data/app/assets/javascripts/collection_json_browser/application.js +17 -0
- data/app/assets/stylesheets/collection_json_browser/application.css +12 -0
- data/app/assets/stylesheets/collection_json_browser/bootstrap.css +4960 -0
- data/app/controllers/collection_json_browser/application_controller.rb +4 -0
- data/app/controllers/collection_json_browser/home_controller.rb +7 -0
- data/app/helpers/collection_json_browser/application_helper.rb +4 -0
- data/app/views/collection_json_browser/home/index.html +118 -0
- data/app/views/layouts/collection_json_browser/application.html.erb +13 -0
- data/config/routes.rb +3 -0
- data/lib/collection-json-browser.rb +4 -0
- data/lib/collection-json-browser/engine.rb +5 -0
- data/lib/collection-json-browser/version.rb +3 -0
- data/lib/tasks/collection-json-browser_tasks.rake +4 -0
- data/test/collection-json-browser_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/images/cat.gif +0 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +20 -0
- data/test/dummy/app/controllers/api/application_controller.rb +101 -0
- data/test/dummy/app/controllers/api/posts_controller.rb +107 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/post.rb +3 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +8 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20130707043713_create_posts.rb +11 -0
- data/test/dummy/db/schema.rb +24 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +62530 -0
- data/test/dummy/log/test.log +133 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/angular-scenario.js +26223 -0
- data/test/dummy/public/e2e.html +11 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/public/links.html +7 -0
- data/test/dummy/public/scenarios.js +65 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/tmp/cache/assets/C11/E20/sprockets%2Fa12197364162a50d0a75622881d3751d +0 -0
- data/test/dummy/tmp/cache/assets/C40/150/sprockets%2Fa047ea3307600479a1f8295fc4300137 +0 -0
- data/test/dummy/tmp/cache/assets/C76/D00/sprockets%2F1141538585172cba9431bc737c1fe290 +0 -0
- data/test/dummy/tmp/cache/assets/C9A/610/sprockets%2F0f1cbc34ef00944528423628d2014e0d +0 -0
- data/test/dummy/tmp/cache/assets/CB8/F50/sprockets%2F7db66115752dc2d468a6d4852869e31a +0 -0
- data/test/dummy/tmp/cache/assets/CC8/CC0/sprockets%2F77ac1342b1ae62c0123f399257a703aa +0 -0
- data/test/dummy/tmp/cache/assets/CE5/DB0/sprockets%2F53d6d5203c9d6c96693655151fea1bf3 +0 -0
- data/test/dummy/tmp/cache/assets/CF0/4A0/sprockets%2Fdc8ec795245b571236a639c98b183b7e +0 -0
- data/test/dummy/tmp/cache/assets/D01/390/sprockets%2F152365a6c64bdbf13d80c22762c0f48b +0 -0
- data/test/dummy/tmp/cache/assets/D17/330/sprockets%2F59803fbbf63f56502acdc6710fc47389 +0 -0
- data/test/dummy/tmp/cache/assets/D18/FE0/sprockets%2F816d68b6feb37b103be618798b5e0b37 +0 -0
- data/test/dummy/tmp/cache/assets/D36/D00/sprockets%2F3a43e8f11605c939cbb04aec364ba775 +0 -0
- data/test/dummy/tmp/cache/assets/D58/C00/sprockets%2F7bd61bb28f7ce577f679872a7cc4a477 +0 -0
- data/test/dummy/tmp/cache/assets/D69/960/sprockets%2F68d11bd13c04d8959dabbf7680c37b1a +0 -0
- data/test/dummy/tmp/cache/assets/D6F/820/sprockets%2F3174b17cc559cf465cd881d7c1ac06dd +0 -0
- data/test/dummy/tmp/cache/assets/D74/650/sprockets%2F5c448233c8ef782e60adda4b8f572b6b +0 -0
- data/test/dummy/tmp/cache/assets/D97/910/sprockets%2Ff79eba25f30b74073aa198bca71a5ed5 +0 -0
- data/test/dummy/tmp/cache/assets/DCC/720/sprockets%2Fc5b1dfb51c6ca4d981cf60f8dc3f6351 +0 -0
- data/test/dummy/tmp/cache/assets/DF1/600/sprockets%2F5eabe9a0f53eaa0f7a73d5923d13dad4 +0 -0
- data/test/dummy/tmp/cache/assets/DF6/F60/sprockets%2F7e00e27c8a01ced37a4082fcaeee2ee9 +0 -0
- data/test/dummy/tmp/cache/assets/DFA/8A0/sprockets%2F59bed50c73a0e1188ff0dc3adbff1d76 +0 -0
- data/test/dummy/tmp/cache/assets/E10/600/sprockets%2Ff72f1ec8e8bb832c8b5a960fe3f9ae7d +0 -0
- data/test/integration/navigation_test.rb +9 -0
- data/test/javascripts/config/karma-e2e.conf.js +22 -0
- data/test/javascripts/config/karma.conf.js +19 -0
- data/test/javascripts/scripts/e2e-test.bat +11 -0
- data/test/javascripts/scripts/e2e-test.sh +9 -0
- data/test/javascripts/scripts/private/ScrapeData.js +115 -0
- data/test/javascripts/scripts/private/format-json.sh +11 -0
- data/test/javascripts/scripts/private/goto_step.bat +15 -0
- data/test/javascripts/scripts/private/goto_step.sh +13 -0
- data/test/javascripts/scripts/private/push-to-github.sh +7 -0
- data/test/javascripts/scripts/private/retag.sh +15 -0
- data/test/javascripts/scripts/private/snapshot-web.sh +19 -0
- data/test/javascripts/scripts/private/snapshot.sh +43 -0
- data/test/javascripts/scripts/test.bat +11 -0
- data/test/javascripts/scripts/test.sh +9 -0
- data/test/javascripts/scripts/update-repo.sh +13 -0
- data/test/javascripts/scripts/watchr.rb +19 -0
- data/test/javascripts/scripts/web-server.js +244 -0
- data/test/javascripts/test/e2e/scenarios.js +65 -0
- data/test/javascripts/test/lib/angular/angular-mocks.js +1768 -0
- data/test/javascripts/test/lib/angular/angular-scenario.js +26223 -0
- data/test/javascripts/test/lib/angular/version.txt +1 -0
- data/test/javascripts/test/unit/controllersSpec.js +54 -0
- data/test/javascripts/test/unit/directivesSpec.js +7 -0
- data/test/javascripts/test/unit/filtersSpec.js +7 -0
- data/test/javascripts/test/unit/servicesSpec.js +7 -0
- data/test/test_helper.rb +15 -0
- metadata +277 -0
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<td>{{link.rel}}</td>
|
|
2
|
+
<td>{{link.name}}</td>
|
|
3
|
+
<td>{{link.prompt}}</td>
|
|
4
|
+
<td ng-switch on="link.render">
|
|
5
|
+
<img ng-switch-when="image" ng-src={{link.href}} title={{link.rel}} width=150/>
|
|
6
|
+
<a ng-switch-default href="" ng-click="goTo(link.href)">{{link.href}}</a>
|
|
7
|
+
</td>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/* http://docs.angularjs.org/guide/dev_guide.e2e-testing */
|
|
4
|
+
|
|
5
|
+
describe('Collection JSON Browser', function() {
|
|
6
|
+
beforeEach(function() {
|
|
7
|
+
browser().navigateTo('/doc');
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('displays 1 link', function() {
|
|
11
|
+
expect(repeater('.links tr a').count()).toBe(1);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('displays 1 image', function() {
|
|
15
|
+
expect(repeater('.links tr img').count()).toBe(1);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('displays response status', function() {
|
|
19
|
+
expect(element('.status').text()).toMatch(/\s200\s/);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
describe('clicking on posts link', function(){
|
|
23
|
+
beforeEach(function() {
|
|
24
|
+
element(".links a:contains('posts')").click();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('sets and displays browser location', function() {
|
|
28
|
+
expect(browser().location().url()).toBe('/api/posts');
|
|
29
|
+
expect(element("#href").val()).toEqual('/api/posts')
|
|
30
|
+
expect(repeater('.links tr a').count()).toBe(0);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('displays a form when the response contains a template', function() {
|
|
34
|
+
expect(element("form[action='/api/posts']")).toBe()
|
|
35
|
+
expect(element("form input#title")).toBe()
|
|
36
|
+
expect(element("form input#content")).toBe()
|
|
37
|
+
expect(element("form input#category")).toBe()
|
|
38
|
+
expect(element("form button[type=submit]")).toBe()
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('lists collection items when the form is submitted successfully', function(){
|
|
42
|
+
//TODO: figure out how to test this
|
|
43
|
+
input('field.value').enter('Ruby and Angular')
|
|
44
|
+
input('field.value').enter('Happily ever after')
|
|
45
|
+
input('field.value').enter('ruby')
|
|
46
|
+
//element('#title').attr('value', 'Ruby and Angular')
|
|
47
|
+
//element('#content').attr('value', 'Happily ever after')
|
|
48
|
+
//element('#category').attr('value', 'ruby')
|
|
49
|
+
|
|
50
|
+
element("form button[type=submit]").click()
|
|
51
|
+
|
|
52
|
+
expect(repeater('ol .item').count()).toBe(1);
|
|
53
|
+
|
|
54
|
+
var data = repeater("tr.data")
|
|
55
|
+
//expect(r.row(0)).toEqual(['title', 'Post title', 'Ruby and Angular'])
|
|
56
|
+
//expect(r.row(1)).toEqual(['content', 'Post content', 'Happily ever after'])
|
|
57
|
+
expect(data.row(2)).toEqual(['category', 'Post category', 'ruby'])
|
|
58
|
+
|
|
59
|
+
var links = repeater(".item-links tr")
|
|
60
|
+
expect(links.row(1)).toEqual(['edit-form', 'post', 'Edit post', '/api/posts/1/edit'])
|
|
61
|
+
expect(links.row(2)).toEqual(['comments', 'comments', 'Comments', '/api/posts/1/comments'])
|
|
62
|
+
})
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
});
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
|
3
|
+
|
|
4
|
+
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
|
5
|
+
require File.expand_path('../../config/boot', __FILE__)
|
|
6
|
+
require 'rails/commands'
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
basePath = '../';
|
|
2
|
+
|
|
3
|
+
files = [
|
|
4
|
+
ANGULAR_SCENARIO,
|
|
5
|
+
ANGULAR_SCENARIO_ADAPTER,
|
|
6
|
+
'test/e2e/**/*.js'
|
|
7
|
+
];
|
|
8
|
+
|
|
9
|
+
autoWatch = false;
|
|
10
|
+
|
|
11
|
+
browsers = ['Chrome'];
|
|
12
|
+
|
|
13
|
+
singleRun = true;
|
|
14
|
+
|
|
15
|
+
proxies = {
|
|
16
|
+
'/': 'http://localhost:3000/doc'
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
junitReporter = {
|
|
20
|
+
outputFile: 'test_out/e2e.xml',
|
|
21
|
+
suite: 'e2e'
|
|
22
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
basePath = '../';
|
|
2
|
+
|
|
3
|
+
files = [
|
|
4
|
+
JASMINE,
|
|
5
|
+
JASMINE_ADAPTER,
|
|
6
|
+
'../../app/assets/javascripts/collection_json_browser/angular.min.js',
|
|
7
|
+
'test/lib/angular/angular-mocks.js',
|
|
8
|
+
'../../app/assets/javascripts/collection_json_browser/angular/**/*.js',
|
|
9
|
+
'test/unit/**/*.js'
|
|
10
|
+
];
|
|
11
|
+
|
|
12
|
+
autoWatch = true;
|
|
13
|
+
|
|
14
|
+
browsers = ['Chrome'];
|
|
15
|
+
|
|
16
|
+
junitReporter = {
|
|
17
|
+
outputFile: 'test_out/unit.xml',
|
|
18
|
+
suite: 'unit'
|
|
19
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
|
|
3
|
+
REM Windows script for running e2e tests
|
|
4
|
+
REM You have to run server and capture some browser first
|
|
5
|
+
REM
|
|
6
|
+
REM Requirements:
|
|
7
|
+
REM - NodeJS (http://nodejs.org/)
|
|
8
|
+
REM - Karma (npm install -g karma)
|
|
9
|
+
|
|
10
|
+
set BASE_DIR=%~dp0
|
|
11
|
+
karma start "%BASE_DIR%\..\config\karma-e2e.conf.js" %*
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// Script which scrapes http://google.com/phone and generates JSON files used by this application
|
|
4
|
+
// To run this file you will need node.js and dependencies listed below
|
|
5
|
+
|
|
6
|
+
var httpAgent = require('http-agent'),
|
|
7
|
+
jsdom = require('jsdom'),
|
|
8
|
+
fs = require('fs'),
|
|
9
|
+
sys = require('sys');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var agent = httpAgent.create('www.google.com', ['/phone/']);
|
|
13
|
+
var baseDir = __dirname + '/../app/phones/';
|
|
14
|
+
var phones = [];
|
|
15
|
+
|
|
16
|
+
function boolean (text) {
|
|
17
|
+
return /true/i.test(text);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
agent.addListener('next', function (error, agent) {
|
|
21
|
+
var htmlPage = agent.body.replace('</head>', '</head><body>').
|
|
22
|
+
replace(/<script[\s\S]*?<\/script>/gi, '');
|
|
23
|
+
// console.log(htmlPage);
|
|
24
|
+
var window = jsdom.jsdom(htmlPage).createWindow();
|
|
25
|
+
jsdom.jQueryify(window, 'http://code.jquery.com/jquery-1.4.2.min.js', function (window, jquery) {
|
|
26
|
+
var body = jquery('body');
|
|
27
|
+
if (phones.length) {
|
|
28
|
+
var c1 = body.find('.g-section .g-unit:nth-child(1)');
|
|
29
|
+
var c2 = body.find('.g-section .g-unit:nth-child(2)');
|
|
30
|
+
var phone = {};
|
|
31
|
+
phone.id = agent.url.split(/\//).pop();
|
|
32
|
+
phone.name = body.find('h2').text().trim();
|
|
33
|
+
phone.description = body.find('.description').text().trim();
|
|
34
|
+
phone.availability = c1.find('table:nth-child(1) th:contains("Availability")+td').text().trim().split(/\s*\n\s*/),
|
|
35
|
+
phone.battery = {
|
|
36
|
+
type: c1.find('table:nth-child(2) th:contains("Type")+td').text(),
|
|
37
|
+
talkTime: c1.find('table:nth-child(2) th:contains("Talk time")+td').text(),
|
|
38
|
+
standbyTime: c1.find('table:nth-child(2) th:contains("Standby time")+td').text()
|
|
39
|
+
};
|
|
40
|
+
phone.storage = {
|
|
41
|
+
ram: c1.find('table:nth-child(3) th:contains("RAM")+td').text(),
|
|
42
|
+
flash: c1.find('table:nth-child(3) th:contains("Internal storage")+td').text()
|
|
43
|
+
};
|
|
44
|
+
phone.connectivity = {
|
|
45
|
+
cell: c1.find('table:nth-child(4) th:contains("Network support")+td').text(),
|
|
46
|
+
wifi: c1.find('table:nth-child(4) th:contains("WiFi")+td').text(),
|
|
47
|
+
bluetooth: c1.find('table:nth-child(4) th:contains("Bluetooth")+td').text(),
|
|
48
|
+
infrared: boolean(c1.find('table:nth-child(4) th:contains("Infrared")+td img').attr('src')),
|
|
49
|
+
gps: boolean(c1.find('table:nth-child(4) th:contains("GPS")+td img').attr('src'))
|
|
50
|
+
};
|
|
51
|
+
phone.android = {
|
|
52
|
+
os: c2.find('table:nth-child(1) th:contains("OS Version")+td').text(),
|
|
53
|
+
ui: c2.find('table:nth-child(1) th:contains("UI")+td').text()
|
|
54
|
+
};
|
|
55
|
+
phone.sizeAndWeight = {
|
|
56
|
+
dimensions: c2.find('table:nth-child(2) th:contains("Dimensions")+td').text().trim().split(/\s*\n\s*/),
|
|
57
|
+
weight: c2.find('table:nth-child(2) th:contains("Weight")+td').text().trim()
|
|
58
|
+
};
|
|
59
|
+
phone.display = {
|
|
60
|
+
screenSize: c2.find('table:nth-child(3) th:contains("Screen size")+td').text(),
|
|
61
|
+
screenResolution: c2.find('table:nth-child(3) th:contains("Screen resolution")+td').text(),
|
|
62
|
+
touchScreen: boolean(c2.find('table:nth-child(3) th:contains("Touch screen")+td img').attr('src'))
|
|
63
|
+
};
|
|
64
|
+
phone.hardware = {
|
|
65
|
+
fmRadio: boolean(c2.find('table:nth-child(4) th:contains("FM Radio")+td img').attr('src')),
|
|
66
|
+
physicalKeyboard: c2.find('table:nth-child(4) th:contains("Physical keyboard")+td img').attr('src'),
|
|
67
|
+
accelerometer: boolean(c2.find('table:nth-child(4) th:contains("Accelerometer")+td img').attr('src')),
|
|
68
|
+
cpu: c2.find('table:nth-child(4) th:contains("CPU")+td').text(),
|
|
69
|
+
usb: c2.find('table:nth-child(4) th:contains("USB")+td').text(),
|
|
70
|
+
audioJack: c2.find('table:nth-child(4) th:contains("Audio / headphone jack")+td').text()
|
|
71
|
+
};
|
|
72
|
+
phone.camera= {
|
|
73
|
+
primary: c2.find('table:nth-child(5) th:contains("Primary")+td').text(),
|
|
74
|
+
features: c2.find('table:nth-child(5) th:contains("Features")+td').text().trim().split(/\s*\n\s*/)
|
|
75
|
+
};
|
|
76
|
+
phone.additionalFeatures = c2.find('table:nth-child(6) td').text();
|
|
77
|
+
phone.images = [];
|
|
78
|
+
body.find('#thumbs img').each(function(){
|
|
79
|
+
var imgUrl = 'http://www.google.com' + jquery(this).attr('src');
|
|
80
|
+
phone.images.push({
|
|
81
|
+
small: imgUrl,
|
|
82
|
+
large: imgUrl.replace(/\/small$/, '/large')
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
fs.writeSync(fs.openSync(baseDir + phone.id + '.json', 'w'), JSON.stringify(phone));
|
|
86
|
+
} else {
|
|
87
|
+
var age = 0;
|
|
88
|
+
body.find('ul.phonelist li.list').each(function(a){
|
|
89
|
+
var url = jquery(this).find('.name a').attr('href');
|
|
90
|
+
console.log('=======>', url);
|
|
91
|
+
var phone = {};
|
|
92
|
+
phone.id = url.split(/\//).pop();
|
|
93
|
+
phone.age = age++;
|
|
94
|
+
phone.imageUrl = 'http://google.com' +
|
|
95
|
+
jquery(this).find('img.phone').attr('src');
|
|
96
|
+
phone.snippet = jquery(this).find('.description').text().trim();
|
|
97
|
+
phone.name = jquery(this).find('strong').text().trim();
|
|
98
|
+
phone.carrier = jquery(this).find('.buy-from img').attr('alt');
|
|
99
|
+
phone.buyUrl = jquery(this).find('.buy-from a').attr('href');
|
|
100
|
+
console.log(phone);
|
|
101
|
+
phones.push(phone);
|
|
102
|
+
agent.addUrl(url);
|
|
103
|
+
});
|
|
104
|
+
fs.writeSync(fs.openSync(baseDir + '.json', 'w'), JSON.stringify(phones));
|
|
105
|
+
}
|
|
106
|
+
console.log(phone);
|
|
107
|
+
agent.next();
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
agent.addListener('stop', function (error, agent) {
|
|
112
|
+
sys.puts('the agent has stopped');
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
agent.start();
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
|
|
3
|
+
REM Windows script for changing step
|
|
4
|
+
REM This script just copies content of given step into sandbox
|
|
5
|
+
|
|
6
|
+
set SB_DIR=%~dp0
|
|
7
|
+
set STEP=%1
|
|
8
|
+
|
|
9
|
+
rd /Q /S "%SB_DIR%/app/js" ^
|
|
10
|
+
"%SB_DIR%/app/partials" ^
|
|
11
|
+
"%SB_DIR%/app/css" ^
|
|
12
|
+
"%SB_DIR%/test/unit" ^
|
|
13
|
+
"%SB_DIR%/test/e2e"
|
|
14
|
+
|
|
15
|
+
xcopy "%SB_DIR%\..\step-%STEP%" "%SB_DIR%" /E /Y
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
######
|
|
4
|
+
# This script is useful only for committers to the upstream github repo.
|
|
5
|
+
######
|
|
6
|
+
|
|
7
|
+
for tag in `git tag`; do
|
|
8
|
+
git tag -d $tag
|
|
9
|
+
done
|
|
10
|
+
|
|
11
|
+
for sha in `git log --oneline | grep step- | cut -d ' ' -f 1`; do
|
|
12
|
+
tag=`git log $sha...$sha~1 --oneline | cut -d ' ' -f 2`
|
|
13
|
+
echo Creating tag $tag for $sha
|
|
14
|
+
git tag $tag $sha
|
|
15
|
+
done
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
ROOT_DIR=`dirname $0`/../..
|
|
4
|
+
cd $ROOT_DIR
|
|
5
|
+
|
|
6
|
+
SNAP_DIR=angular-phonecat-snapshots-web
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
rm -rf $SNAP_DIR
|
|
10
|
+
mkdir $SNAP_DIR
|
|
11
|
+
|
|
12
|
+
for i in {0..11}
|
|
13
|
+
do
|
|
14
|
+
mkdir $SNAP_DIR/step-$i
|
|
15
|
+
git checkout -f step-$i
|
|
16
|
+
|
|
17
|
+
cp -r app test $SNAP_DIR/step-$i/
|
|
18
|
+
rm -rf $SNAP_DIR/step-$i/test/lib/jstestdriver
|
|
19
|
+
done
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
ROOT_DIR=`dirname $0`/../..
|
|
4
|
+
cd $ROOT_DIR
|
|
5
|
+
|
|
6
|
+
SNAP_DIR=angular-phonecat-snapshots
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
rm -rf $SNAP_DIR
|
|
10
|
+
mkdir $SNAP_DIR
|
|
11
|
+
|
|
12
|
+
for i in {0..11}
|
|
13
|
+
do
|
|
14
|
+
mkdir $SNAP_DIR/step-$i
|
|
15
|
+
git checkout -f step-$i
|
|
16
|
+
|
|
17
|
+
if [[ $i = 0 ]]; then
|
|
18
|
+
cp -r app config scripts test $SNAP_DIR/step-0/
|
|
19
|
+
mkdir $SNAP_DIR/step-0/logs
|
|
20
|
+
rm -r $SNAP_DIR/step-0/scripts/private
|
|
21
|
+
rm $SNAP_DIR/step-0/scripts/update-repo.sh
|
|
22
|
+
else
|
|
23
|
+
cp -r app $SNAP_DIR/step-$i/
|
|
24
|
+
mkdir $SNAP_DIR/step-$i/test/
|
|
25
|
+
cp -r test/unit test/e2e $SNAP_DIR/step-$i/test
|
|
26
|
+
rm -r $SNAP_DIR/step-$i/app/img
|
|
27
|
+
rm -r $SNAP_DIR/step-$i/app/lib
|
|
28
|
+
rm -rf $SNAP_DIR/step-$i/app/phones
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
if [[ $i = 5 ]]; then
|
|
32
|
+
cp -r app/img $SNAP_DIR/step-0/app/
|
|
33
|
+
cp -r app/phones $SNAP_DIR/step-0/app/
|
|
34
|
+
fi
|
|
35
|
+
done
|
|
36
|
+
|
|
37
|
+
mkdir $SNAP_DIR/sandbox
|
|
38
|
+
cp scripts/private/goto_step.sh $SNAP_DIR/sandbox/
|
|
39
|
+
cp scripts/private/goto_step.bat $SNAP_DIR/sandbox/
|
|
40
|
+
|
|
41
|
+
zip -r angular-phonecat-`date +"%y%m%d_%H%M"` $SNAP_DIR
|
|
42
|
+
|
|
43
|
+
git checkout master
|