pullentity-client 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.
- 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
|