pullentity-client 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.DS_Store +0 -0
- data/.gitignore +47 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/bin/pullentity +5 -0
- data/lib/.DS_Store +0 -0
- data/lib/pullentity-client/.DS_Store +0 -0
- data/lib/pullentity-client/builder/middleman.rb +14 -0
- data/lib/pullentity-client/cli.rb +85 -0
- data/lib/pullentity-client/generate/auth.rb +173 -0
- data/lib/pullentity-client/generate/exporter.rb +107 -0
- data/lib/pullentity-client/generate/project.rb +99 -0
- data/lib/pullentity-client/generate/view.rb +47 -0
- data/lib/pullentity-client/helpers.rb +146 -0
- data/lib/pullentity-client/logger.rb +14 -0
- data/lib/pullentity-client/templates/.DS_Store +0 -0
- data/lib/pullentity-client/templates/app/.DS_Store +0 -0
- data/lib/pullentity-client/templates/app/assets/.DS_Store +0 -0
- data/lib/pullentity-client/templates/app/assets/fonts/fontawesome-webfont.eot +0 -0
- data/lib/pullentity-client/templates/app/assets/fonts/fontawesome-webfont.svg +255 -0
- data/lib/pullentity-client/templates/app/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/lib/pullentity-client/templates/app/assets/fonts/fontawesome-webfont.woff +0 -0
- data/lib/pullentity-client/templates/app/assets/images/.DS_Store +0 -0
- data/lib/pullentity-client/templates/app/assets/images/favicon.ico +0 -0
- data/lib/pullentity-client/templates/app/assets/javascripts/application.js.erb +4 -0
- data/lib/pullentity-client/templates/app/assets/javascripts/mustache.js +535 -0
- data/lib/pullentity-client/templates/app/assets/stylesheets/application.css.scss +1 -0
- data/lib/pullentity-client/templates/app/assets/stylesheets/customtheme.css.scss +1 -0
- data/lib/pullentity-client/templates/app/index.html.haml +15 -0
- data/lib/pullentity-client/templates/app/views/.DS_Store +0 -0
- data/lib/pullentity-client/templates/app/views/list.haml +11 -0
- data/lib/pullentity-client/templates/app/views/shared/body.haml +26 -0
- data/lib/pullentity-client/templates/app/views/shared/css.haml +48 -0
- data/lib/pullentity-client/templates/app/views/shared/head.haml +19 -0
- data/lib/pullentity-client/templates/app/views/shared/js.haml +43 -0
- data/lib/pullentity-client/templates/app/views/themes/home.haml +21 -0
- data/lib/pullentity-client/templates/app/views/themes/theme1.haml +21 -0
- data/lib/pullentity-client/templates/defaults/Gemfile.erb +8 -0
- data/lib/pullentity-client/templates/defaults/LICENSE.erb +1 -0
- data/lib/pullentity-client/templates/defaults/Readme.mkd.erb +1 -0
- data/lib/pullentity-client/templates/defaults/build.yml.erb +2 -0
- data/lib/pullentity-client/templates/defaults/config.erb +23 -0
- data/lib/pullentity-client/templates/defaults/gitignore.erb +2 -0
- data/lib/pullentity-client/templates/defaults/layout.haml.erb +13 -0
- data/lib/pullentity-client/templates/defaults/pullentity.yml.erb +5 -0
- data/lib/pullentity-client/templates/defaults/test-data.js.erb +87 -0
- data/lib/pullentity-client/templates/rakefile +0 -0
- data/lib/pullentity-client/templates/specs/app_spec.coffee.erb +3 -0
- data/lib/pullentity-client/utils.rb +81 -0
- data/lib/pullentity-client/version.rb +5 -0
- data/lib/pullentity-client.rb +39 -0
- data/pullentity-client.gemspec +39 -0
- data/spec/cli/command_spec.rb +90 -0
- data/spec/pullentity-client/builder/middleman_spec.rb +22 -0
- data/spec/pullentity-client/generate/exporter_spec.rb +53 -0
- data/spec/pullentity-client/generate/project_spec.rb +90 -0
- data/spec/pullentity-client/logger_spec.rb +25 -0
- data/spec/pullentity-client/utils_spec.rb +94 -0
- data/spec/spec_helper.rb +42 -0
- data/vendor/assets/fonts/fontawesome-webfont.eot +0 -0
- data/vendor/assets/fonts/fontawesome-webfont.svg +255 -0
- data/vendor/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/fonts/fontawesome-webfont.woff +0 -0
- data/vendor/assets/images/.DS_Store +0 -0
- data/vendor/assets/images/pullentity/.DS_Store +0 -0
- data/vendor/assets/javascripts/pullentity/.DS_Store +0 -0
- data/vendor/assets/javascripts/pullentity.js +0 -0
- data/vendor/assets/stylesheets/.DS_Store +0 -0
- data/vendor/assets/stylesheets/pullentity/themes/default.css.scss +0 -0
- data/vendor/assets/stylesheets/pullentity.css.scss +1 -0
- metadata +335 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZjQ3ZGIxNmY5MDA4MzY4MzZjMjAzMmNlMjM3ZDNlNmY3OGNmM2FmOQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MGVmNjAyNjFkMDk3YTFjMGRjODgyMjY4OTRhN2U4MTI4MjliNjNiNQ==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZmRkMzFhYWI3ZTNiODUzMDdjN2NmZWYwZmE1OWI5ZDJlYzIzMjMxNjJiMzY1
|
10
|
+
N2RhOWYyNGI1NjY5YTQ3ZDFiN2U0OTdlMjZhZjU1NmUxMjc4Mzc3MmJiOThi
|
11
|
+
NTQxYTM5YWZhNWI3MzkzZTdmMWJkYzY3NjFlMDRmNWE1YjYzNzg=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YWFmMGRhY2U5Yjg3YTcwMTFhMTI5NWYyNDI4NjQzODI3MmJhNGNkODk3Nzc4
|
14
|
+
YjY1MDdiMjM5Nzk2MmRjMzE4OGNhNGI5Yzc2NWNjMjUwMzcyOGU3MzQwMTFm
|
15
|
+
YTc2YTMxYzM0OThlMDQzZDI3Yjg3YmZlNDg5ZWYxNzk0NDVjYTk=
|
data/.DS_Store
ADDED
Binary file
|
data/.gitignore
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
.rvmrc
|
7
|
+
Gemfile.lock
|
8
|
+
InstalledFiles
|
9
|
+
_yardoc
|
10
|
+
coverage
|
11
|
+
doc/
|
12
|
+
lib/bundler/man
|
13
|
+
pkg
|
14
|
+
rdoc
|
15
|
+
spec/reports
|
16
|
+
test/tmp
|
17
|
+
test/version_tmp
|
18
|
+
tmp
|
19
|
+
|
20
|
+
# Numerous always-ignore extensions
|
21
|
+
*.diff
|
22
|
+
*.err
|
23
|
+
*.orig
|
24
|
+
*.log
|
25
|
+
*.rej
|
26
|
+
*.swo
|
27
|
+
*.swp
|
28
|
+
*.vi
|
29
|
+
*~
|
30
|
+
*.sass-cache
|
31
|
+
.rvmrc
|
32
|
+
.dropbox
|
33
|
+
*.sw?
|
34
|
+
coverage*
|
35
|
+
doc
|
36
|
+
rdoc
|
37
|
+
pkg
|
38
|
+
tmp
|
39
|
+
tags
|
40
|
+
rerun.txt
|
41
|
+
Gemfile.lock
|
42
|
+
.bundle
|
43
|
+
*.gem
|
44
|
+
dailyfocus
|
45
|
+
.lock
|
46
|
+
|
47
|
+
pkg
|
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 miguel michelson
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Pullentity::Client
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'pullentity-client'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install pullentity-client
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/pullentity
ADDED
data/lib/.DS_Store
ADDED
Binary file
|
Binary file
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require "thor/group"
|
2
|
+
require "debugger"
|
3
|
+
module Pullentity
|
4
|
+
module Client
|
5
|
+
class CLI < Thor
|
6
|
+
include Utils
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
STATUS_TYPES = {:success => 0,
|
10
|
+
:general_error => 1,
|
11
|
+
:not_supported => 3,
|
12
|
+
:not_found => 4,
|
13
|
+
:incorrect_usage => 64,
|
14
|
+
}
|
15
|
+
|
16
|
+
no_tasks {
|
17
|
+
def cli_error(message, exit_status=nil)
|
18
|
+
$stderr.puts message
|
19
|
+
exit_status = STATUS_TYPES[exit_status] if exit_status.is_a?(Symbol)
|
20
|
+
exit(exit_status || 1)
|
21
|
+
end
|
22
|
+
}
|
23
|
+
|
24
|
+
### TODO: When these commands list grows big, we need to move them into a seperate commands.rb file
|
25
|
+
map %w(--version -v) => 'info'
|
26
|
+
desc "info", "information about Pullentity::Client::Generator."
|
27
|
+
def info
|
28
|
+
say "Version #{::Pullentity::Client::VERSION}"
|
29
|
+
end
|
30
|
+
|
31
|
+
map %w(r) => 'server'
|
32
|
+
desc "server ", "run middleman app"
|
33
|
+
def server
|
34
|
+
system "echo == :::pullentity-client STARTING::: =="
|
35
|
+
system "bundle exec middleman server"
|
36
|
+
end
|
37
|
+
|
38
|
+
map %w(b) => 'build'
|
39
|
+
desc "build ", "builds middleman/ios/android app"
|
40
|
+
long_desc "Build pullentity-client static files (middleman), See 'pullentity-client help build' for more information.
|
41
|
+
\n\nExample:
|
42
|
+
\n\npullentity-client build mm ==> build middleman static files."
|
43
|
+
|
44
|
+
#method_option :attributes, :type => :hash, :default => {}, :required => true
|
45
|
+
#method_options :type => "all"
|
46
|
+
#method_options :ver => "5.1"
|
47
|
+
def build(type="", ver="5.1")
|
48
|
+
puts "echo ::== pullentity-client BUILD =="
|
49
|
+
::Pullentity::Client::Builder::Middleman.build
|
50
|
+
end
|
51
|
+
|
52
|
+
map %(n) => 'login'
|
53
|
+
desc "auth login <email> ", "login and configures auth_token."
|
54
|
+
long_desc "login and configures auth_token"
|
55
|
+
def login(email)
|
56
|
+
::Pullentity::Client::Generate::Auth.start(['set_login', email])
|
57
|
+
end
|
58
|
+
|
59
|
+
map %(n) => 'sites'
|
60
|
+
desc "list sites", "needs auth_token."
|
61
|
+
long_desc "list sites, needs auth token , run pullentity login help"
|
62
|
+
def sites
|
63
|
+
::Pullentity::Client::Generate::Auth.start(['list_sites'])
|
64
|
+
end
|
65
|
+
|
66
|
+
map %(ex) => 'export'
|
67
|
+
desc "export", "exports a new Pullentity Client project."
|
68
|
+
long_desc "builds & exports site to theme"
|
69
|
+
def export
|
70
|
+
::Pullentity::Client::Generate::Exporter.start(['export'])
|
71
|
+
end
|
72
|
+
|
73
|
+
map %(n) => 'select'
|
74
|
+
desc "select site", "needs auth_token."
|
75
|
+
long_desc "select site, needs auth token , run pullentity login help"
|
76
|
+
def select_site
|
77
|
+
::Pullentity::Client::Generate::Auth.start(['select_site'])
|
78
|
+
end
|
79
|
+
|
80
|
+
register Pullentity::Client::Generate::Project, :project, "project", "project generator"
|
81
|
+
#register Pullentity::Client::Generate::Exporter, :export, "export", "export theme"
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,173 @@
|
|
1
|
+
require 'session'
|
2
|
+
require "debugger"
|
3
|
+
module Pullentity
|
4
|
+
module Client
|
5
|
+
module Generate
|
6
|
+
class Auth < Thor
|
7
|
+
|
8
|
+
include ::Pullentity::Client::Utils
|
9
|
+
|
10
|
+
no_tasks {
|
11
|
+
|
12
|
+
def domain
|
13
|
+
"http://pullentity.com"
|
14
|
+
#"http://pullentity.dev:3000"
|
15
|
+
end
|
16
|
+
|
17
|
+
def login(email)
|
18
|
+
begin
|
19
|
+
hsh = YAML.load_file(location + "pullentity.yml")
|
20
|
+
rescue => e
|
21
|
+
say "Error, make sure you are inside a pullentity project", :red
|
22
|
+
say "and pullentity.yml file is created" , :red
|
23
|
+
raise
|
24
|
+
end
|
25
|
+
say("In order to retreive your authentication token we need your pullentity password", :yellow)
|
26
|
+
password = ask("write your password: ", :magenta )
|
27
|
+
uri = URI.parse("#{domain}/api/v1/login.json")
|
28
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
29
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
30
|
+
request.set_form_data({"email" => email, "password" => password })
|
31
|
+
response = http.request(request)
|
32
|
+
|
33
|
+
json_body = JSON.parse(response.body)
|
34
|
+
if json_body["status"] && json_body["status"] == "success"
|
35
|
+
say "Congratz!, Your token is:"
|
36
|
+
say json_body["auth_token"], :green
|
37
|
+
say "we saved it in pullentity.yml", :green
|
38
|
+
hsh["auth_token"] = json_body["auth_token"]
|
39
|
+
File.open("#{location}/pullentity.yml", "w"){|f| YAML.dump(hsh, f)}
|
40
|
+
else
|
41
|
+
say response.body, :red
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def check_for_yaml
|
46
|
+
begin
|
47
|
+
hsh = YAML.load_file(location + "pullentity.yml")
|
48
|
+
@token = hsh["auth_token"]
|
49
|
+
@site = hsh["site"]
|
50
|
+
@theme_name = hsh["theme_name"]
|
51
|
+
if hsh["auth_token"].empty?
|
52
|
+
say "Error, the auth_token is empty", :red
|
53
|
+
say "run: pullentity login" , :yellow
|
54
|
+
end
|
55
|
+
rescue => e
|
56
|
+
say "Error, make sure you are inside a pullentity project", :red
|
57
|
+
say "and pullentity.yml file is created" , :red
|
58
|
+
raise
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def write_site_in_yaml(site)
|
63
|
+
begin
|
64
|
+
hsh = YAML.load_file(location + "pullentity.yml")
|
65
|
+
rescue => e
|
66
|
+
say "Error, make sure you are inside a pullentity project", :red
|
67
|
+
say "and pullentity.yml file is created" , :red
|
68
|
+
raise
|
69
|
+
end
|
70
|
+
hsh["site"] = site
|
71
|
+
File.open("#{location}/pullentity.yml", "w"){|f| YAML.dump(hsh, f)}
|
72
|
+
end
|
73
|
+
|
74
|
+
def site_api_call()
|
75
|
+
check_for_yaml
|
76
|
+
uri = URI.parse("#{domain}/api/v1/sites.json?auth_token=#{@token}")
|
77
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
78
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
79
|
+
response = http.request(request)
|
80
|
+
@json_body = JSON.parse(response.body)
|
81
|
+
end
|
82
|
+
|
83
|
+
def export_api_call()
|
84
|
+
check_for_yaml
|
85
|
+
|
86
|
+
conn = Faraday.new(:url => domain) do |f|
|
87
|
+
f.request :multipart
|
88
|
+
f.request :url_encoded # form-encode POST params
|
89
|
+
#f.response :logger # log requests to STDOUT
|
90
|
+
f.adapter Faraday.default_adapter # make requests with Net::HTTP
|
91
|
+
end
|
92
|
+
|
93
|
+
payload = { :theme => Faraday::UploadIO.new("#{location}/pullentity_build.json", 'text/json') }
|
94
|
+
response = conn.put("/api/v1/import_theme?auth_token=#{@token}&subdomain=#{@site}&theme_name=#{@theme_name}", payload )
|
95
|
+
@json_body = JSON.parse(response.body)
|
96
|
+
say "#{@json_body[:status]} #{@json_body[:message]}", :green
|
97
|
+
end
|
98
|
+
|
99
|
+
def prompt_for_site_select
|
100
|
+
site_api_call
|
101
|
+
count = 0
|
102
|
+
arr = {}
|
103
|
+
@json_body.each do |site|
|
104
|
+
count += 1
|
105
|
+
arr[count] = site
|
106
|
+
say "[#{count}] Site: #{site["name"]}", :white
|
107
|
+
end
|
108
|
+
selector(arr)
|
109
|
+
end
|
110
|
+
|
111
|
+
def selector(arr)
|
112
|
+
answer = ask "select the site", :yellow
|
113
|
+
if arr[answer.to_i]
|
114
|
+
write_site_in_yaml(arr[answer.to_i]["subdomain"])
|
115
|
+
say "you have selected #{arr[answer.to_i]["name"]}", :green
|
116
|
+
say "we configure site name in pullentity.yml", :green
|
117
|
+
else
|
118
|
+
say "plase select one on the list" , :red
|
119
|
+
selector(arr)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def get_sites
|
124
|
+
site_api_call
|
125
|
+
@json_body.each do |site|
|
126
|
+
say "Site ID: ##{site["id"]}", :white
|
127
|
+
say " Name: " + site["name"].to_s, :green
|
128
|
+
say " Domain: " + site["keywords"].to_s, :green
|
129
|
+
say " Custom domain: " + site["custom_domain"].to_s, :green
|
130
|
+
say " Subdomain: " + site["subdomain"].to_s, :green
|
131
|
+
say " Activated: " + site["activated"].to_s, :green
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def location
|
136
|
+
base_location
|
137
|
+
end
|
138
|
+
|
139
|
+
def source_root
|
140
|
+
File.dirname(__FILE__)
|
141
|
+
end
|
142
|
+
|
143
|
+
}
|
144
|
+
|
145
|
+
#map %(n) => 'login'
|
146
|
+
desc "auth login <email> ", "login and configures auth_token."
|
147
|
+
long_desc "login and configures auth_token"
|
148
|
+
def set_login(email)
|
149
|
+
login(email)
|
150
|
+
end
|
151
|
+
|
152
|
+
desc "list sites", ""
|
153
|
+
def list_sites
|
154
|
+
get_sites
|
155
|
+
end
|
156
|
+
|
157
|
+
desc "select site", ""
|
158
|
+
def select_site
|
159
|
+
prompt_for_site_select
|
160
|
+
end
|
161
|
+
|
162
|
+
desc "export theme site", ""
|
163
|
+
def export(name)
|
164
|
+
say "exporting current theme...", :green
|
165
|
+
export_api_call
|
166
|
+
end
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'session'
|
2
|
+
require 'faraday'
|
3
|
+
module Pullentity
|
4
|
+
module Client
|
5
|
+
module Generate
|
6
|
+
class Exporter < Thor
|
7
|
+
|
8
|
+
include ::Pullentity::Client::Utils
|
9
|
+
|
10
|
+
class << self
|
11
|
+
|
12
|
+
include ::Pullentity::Client::Utils
|
13
|
+
|
14
|
+
def create(name)
|
15
|
+
build_theme_list
|
16
|
+
build_shared_views
|
17
|
+
build_hash_output(name)
|
18
|
+
create_with_template('pullentity_build.json', 'defaults/build.yml', { :json=> @full_app_hash })
|
19
|
+
end
|
20
|
+
|
21
|
+
def build_theme_list
|
22
|
+
@theme_list = []
|
23
|
+
Dir.foreach(location.join("build/views/themes") ).grep(/.html/).each do |theme|
|
24
|
+
@theme_list << {
|
25
|
+
:name => theme.gsub(".html", "") ,
|
26
|
+
:content => File.open(location.join("build/views/themes/#{theme}")).readlines.join("")
|
27
|
+
}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def name_from_yaml
|
32
|
+
yml = YAML.load(File.open(location.join("pullentity.yml")))
|
33
|
+
return yml["theme_name"]
|
34
|
+
end
|
35
|
+
|
36
|
+
def build_shared_views
|
37
|
+
|
38
|
+
@js = Nokogiri::HTML(File.open(location.join("build/views/shared/js.html")).readlines.join("")).css("script").first.content
|
39
|
+
@head = File.open(location.join("build/views/shared/head.html")).readlines.join("")
|
40
|
+
@css = Nokogiri::HTML(File.open(location.join("build/views/shared/css.html")).readlines.join("")).css("style").first.content
|
41
|
+
@layout = File.open(location.join("build/views/shared/body.html")).readlines.join("")
|
42
|
+
@list = File.open(location.join("build/views/list.html")).readlines.join("")
|
43
|
+
end
|
44
|
+
|
45
|
+
def build_hash_output(name)
|
46
|
+
@full_app_hash = {
|
47
|
+
|
48
|
+
:theme_name => name,
|
49
|
+
:themes => @theme_list,
|
50
|
+
:js => @js,
|
51
|
+
:css => @css,
|
52
|
+
:layout => @layout,
|
53
|
+
:head=> @head,
|
54
|
+
:list=> @list,
|
55
|
+
:assets => assets_hash
|
56
|
+
}
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
def assets_hash
|
61
|
+
images = []
|
62
|
+
Dir.foreach(location.join("build/assets/images") ).grep(/.jpg|.jpeg|.png|.gif|.ico/).each do |image|
|
63
|
+
images << image
|
64
|
+
end
|
65
|
+
fonts = []
|
66
|
+
Dir.foreach(location.join("build/assets/fonts") ).grep(/.eot|.svg|.ttf|.woff/).each do |font|
|
67
|
+
fonts << font
|
68
|
+
end
|
69
|
+
js = File.open(location.join("build/assets/javascripts/application.js")).readlines.join("")
|
70
|
+
css = File.open(location.join("build/assets/stylesheets/application.css")).readlines.join("")
|
71
|
+
|
72
|
+
{ :images => images , :js => js, :css => css , :fonts=> fonts }
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
def location
|
77
|
+
base_location
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
def source_root
|
82
|
+
File.dirname(__FILE__)
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
map %(n) => 'export'
|
88
|
+
desc "export", "exports a new Pullentity Client project."
|
89
|
+
long_desc "Exports a new Pullentity project"
|
90
|
+
def export
|
91
|
+
begin
|
92
|
+
name_for = YAML.load_file(location + "pullentity.yml")["theme_name"]
|
93
|
+
rescue => e
|
94
|
+
say "Error, make sure you are inside a pullentity project", :red
|
95
|
+
say "and pullentity.yml file is created" , :red
|
96
|
+
raise
|
97
|
+
end
|
98
|
+
name_for = YAML.load_file(location + "pullentity.yml")["theme_name"]
|
99
|
+
::Pullentity::Client::Builder::Middleman.build
|
100
|
+
::Pullentity::Client::Generate::Exporter.create(name_for)
|
101
|
+
::Pullentity::Client::Generate::Auth.start(['export', name_for])
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'session'
|
2
|
+
module Pullentity
|
3
|
+
module Client
|
4
|
+
module Generate
|
5
|
+
class Project < Thor
|
6
|
+
|
7
|
+
include ::Pullentity::Client::Utils
|
8
|
+
|
9
|
+
class << self
|
10
|
+
|
11
|
+
attr_accessor :project_name, :device_platform, :app_id
|
12
|
+
|
13
|
+
include ::Pullentity::Client::Utils
|
14
|
+
|
15
|
+
def create(name)
|
16
|
+
@project_name = name
|
17
|
+
|
18
|
+
begin
|
19
|
+
create_directories('tmp')
|
20
|
+
copy_defaults
|
21
|
+
remove_old_files
|
22
|
+
generate_files
|
23
|
+
log "Your Pullentity Theme project is ready for you to get coding!"
|
24
|
+
rescue => e
|
25
|
+
error "There was an error generating your Pullentity Client project. #{e} #{e.backtrace}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def copy_defaults
|
30
|
+
end
|
31
|
+
|
32
|
+
def generate_files
|
33
|
+
create_project_directory
|
34
|
+
full_app_hash = {:app_name => @project_name, :app_name_underscore => underscore(@project_name), :platform => @device_platform}
|
35
|
+
create_with_template('.gitignore', 'defaults/gitignore', full_app_hash)
|
36
|
+
create_with_template('Gemfile', 'defaults/Gemfile', full_app_hash)
|
37
|
+
create_with_template('LICENSE', 'defaults/LICENSE', full_app_hash)
|
38
|
+
create_with_template('pullentity.yml', 'defaults/pullentity.yml', full_app_hash)
|
39
|
+
|
40
|
+
create_with_template('config.rb', 'defaults/config', full_app_hash)
|
41
|
+
default_templates = ['Readme.mkd']
|
42
|
+
default_templates.each do |tempfile|
|
43
|
+
create_with_template(tempfile, "defaults/#{tempfile}", full_app_hash)
|
44
|
+
end
|
45
|
+
|
46
|
+
FileUtils.cp_r(templates("app/."), location.join("source/") )
|
47
|
+
|
48
|
+
create_with_template('source/assets/javascripts/test-data.js', 'defaults/test-data.js', full_app_hash)
|
49
|
+
create_with_template('source/layout.haml', 'defaults/layout.haml', full_app_hash)
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
def create_project_directory
|
54
|
+
create_directories('docs', 'spec',
|
55
|
+
"source/assets",
|
56
|
+
"source/assets/images",
|
57
|
+
"source/assets/fonts",
|
58
|
+
"source/assets/stylesheets",
|
59
|
+
"source/assets/javascripts",
|
60
|
+
"source/views",
|
61
|
+
"source/models")
|
62
|
+
end
|
63
|
+
|
64
|
+
def remove_old_files
|
65
|
+
end
|
66
|
+
|
67
|
+
def location
|
68
|
+
base_location.join(@project_name)
|
69
|
+
end
|
70
|
+
|
71
|
+
def source_root
|
72
|
+
File.dirname(__FILE__)
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
map %(n) => 'new'
|
78
|
+
desc "project new <name> ", "generates a new Pullentity Client project."
|
79
|
+
long_desc "Generates a new Pullentity project. See 'pullentity help new' for more information.
|
80
|
+
\n\nExample:
|
81
|
+
\n\npullentity project new demo ==> Creates a new project skeleton."
|
82
|
+
def new(name)
|
83
|
+
if File.exist?(base_location.join(name))
|
84
|
+
|
85
|
+
if yes?("#{name} already exists, do you want to override? (yes or no)")
|
86
|
+
::Pullentity::Client::Generate::Project.create(name)
|
87
|
+
else
|
88
|
+
say "Skipping #{name} because it already exists"
|
89
|
+
end
|
90
|
+
else
|
91
|
+
::Pullentity::Client::Generate::Project.create(name)
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Pullentity::Client
|
2
|
+
module Generate
|
3
|
+
class View < Thor
|
4
|
+
|
5
|
+
include Thor::Actions
|
6
|
+
|
7
|
+
attr_accessor :name, :model
|
8
|
+
|
9
|
+
no_tasks {
|
10
|
+
include ::Pullentity::Client::Utils
|
11
|
+
|
12
|
+
def generate_files(view_directory, template)
|
13
|
+
spec_template = templates("specs/app_spec.coffee.erb")
|
14
|
+
template_destination = "source/#{view_directory}/#{(@context[:domain] || '').downcase}/_#{@name}.haml"
|
15
|
+
spec_destination = "spec/#{view_directory}/#{(@context[:domain] || '').downcase}/#{@name}_spec.coffee"
|
16
|
+
template( template, template_destination )
|
17
|
+
template( spec_template, spec_destination )
|
18
|
+
end
|
19
|
+
|
20
|
+
def create(name, context={})
|
21
|
+
say "really cool stuff here soon!"
|
22
|
+
end
|
23
|
+
|
24
|
+
}
|
25
|
+
|
26
|
+
map %w(s) => 'scaffold'
|
27
|
+
desc "view scaffold <list/complexlist/tabbar/toolbar/dialog> <domain> <name>", "generate a scaffold for pullentity elements."
|
28
|
+
def scaffold(cs_type, domain, name)
|
29
|
+
create(name, {
|
30
|
+
:domain => domain,
|
31
|
+
:cs_type => cs_type,
|
32
|
+
:name => name })
|
33
|
+
end
|
34
|
+
|
35
|
+
map %w(g) => 'generate'
|
36
|
+
#TODO: models, bridges
|
37
|
+
desc "generate <view> <name>", "generate a view"
|
38
|
+
def generate(type, name)
|
39
|
+
case
|
40
|
+
when type =~ /view/i
|
41
|
+
create(name)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|