artbase 0.0.1 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,185 @@
1
+
2
+
3
+
4
+ module Artbase
5
+ class Tool
6
+
7
+ def self.collection=(value)
8
+ puts " setting collection to:"
9
+ pp value
10
+
11
+ @collection = value
12
+ end
13
+
14
+
15
+ def self.main( args=ARGV )
16
+ puts "==> welcome to collection tool with args:"
17
+ pp args
18
+
19
+ options = { }
20
+ parser = OptionParser.new do |opts|
21
+
22
+ opts.on("--offset NUM", Integer,
23
+ "Start counting at offset (default: 0)") do |num|
24
+ options[ :offset] = num
25
+ end
26
+
27
+ opts.on("--limit NUM", Integer,
28
+ "Limit collection (default: ∞)") do |num|
29
+ options[ :limit] = num
30
+ end
31
+
32
+ ## todo/fix: unsupported argument type: Range
33
+ ## opts.on("--range RANGE", Range,
34
+ ## "Range of collection (default: 0..∞") do |range|
35
+ ## options[ :range] = range
36
+ ## end
37
+
38
+ opts.on("-h", "--help", "Prints this help") do
39
+ puts opts
40
+ exit
41
+ end
42
+ end
43
+
44
+ parser.parse!( args )
45
+ puts "options:"
46
+ pp options
47
+
48
+ puts "args:"
49
+ pp args
50
+
51
+ if args.size < 2
52
+ puts "!! ERROR - no command found - use <collection> <command>..."
53
+ puts ""
54
+ exit
55
+ end
56
+
57
+ name = args[0] ## todo/check - use collection_name/slug or such?
58
+ command = args[1]
59
+ subcommand = args[2]
60
+
61
+
62
+ path = if File.exist?( "./#{name}/config.rb" )
63
+ "./#{name}/config.rb"
64
+ else
65
+ "./#{name}/collection.rb"
66
+ end
67
+ puts "==> reading collection config >#{path}<..."
68
+
69
+ ## note: assume for now global const COLLECTION gets set/defined!!!
70
+ ## use/change to a script/dsl loader/eval later!!!
71
+ load( path )
72
+
73
+ ## pp COLLECTION
74
+
75
+ ## configure collection (note: requires self)
76
+ self.collection = COLLECTION
77
+
78
+
79
+ if ['d','dl','down', 'download'].include?( command )
80
+ if subcommand
81
+ if ['m', 'meta'].include?( subcommand )
82
+ download_meta
83
+ elsif ['i', 'img', 'image', 'images'].include?( subcommand )
84
+ download_images
85
+ end
86
+ else
87
+ download_meta
88
+ download_images
89
+ end
90
+ elsif ['p', 'px', 'pix', 'pixel', 'pixelate'].include?( command )
91
+ pixelate( offset: options[ :offset] )
92
+ elsif ['m', 'meta'].include?( command )
93
+ download_meta( offset: options[ :offset] )
94
+ elsif ['i', 'img', 'image', 'images'].include?( command )
95
+ download_images( offset: options[ :offset] )
96
+ elsif ['conv', 'convert'].include?( command )
97
+ convert_images
98
+ elsif ['a', 'attr', 'attributes'].include?( command )
99
+ dump_attributes
100
+ elsif ['x', 'exp', 'export'].include?( command )
101
+ export_attributes
102
+ elsif ['c', 'composite'].include?( command )
103
+ make_composite
104
+ elsif ['strip'].include?( command )
105
+ make_strip
106
+ elsif ['t', 'test'].include?( command )
107
+ puts " testing, testing, testing"
108
+ else
109
+ puts "!! ERROR - unknown command >#{command}<, sorry"
110
+ end
111
+
112
+ puts "bye"
113
+ end
114
+
115
+ def self.make_composite
116
+ puts "==> make composite"
117
+ @collection.make_composite
118
+ end
119
+
120
+ def self.convert_images
121
+ puts "==> convert images"
122
+ @collection.convert_images( overwrite: false )
123
+ end
124
+
125
+
126
+ def self.make_strip
127
+ puts "==> make strip"
128
+ @collection.make_strip
129
+ end
130
+
131
+
132
+ def self.dump_attributes
133
+ puts "==> dump attributes"
134
+ @collection.dump_attributes
135
+ end
136
+
137
+ def self.export_attributes
138
+ puts "==> export attributes"
139
+ @collection.export_attributes
140
+ end
141
+
142
+
143
+ def self.download_meta( offset: )
144
+ puts "==> download meta"
145
+
146
+ range = if offset
147
+ @collection._range( offset: offset )
148
+ else
149
+ @collection._range
150
+ end
151
+
152
+ @collection.download_meta( range )
153
+ end
154
+
155
+
156
+ def self.download_images( offset: )
157
+ puts "==> download images"
158
+
159
+ range = if offset
160
+ @collection._range( offset: offset )
161
+ else
162
+ @collection._range
163
+ end
164
+
165
+ @collection.download_images( range )
166
+ end
167
+
168
+ def self.pixelate( offset: )
169
+ puts "==> pixelate"
170
+
171
+ range = if offset
172
+ @collection._range( offset: offset )
173
+ else
174
+ @collection._range
175
+ end
176
+
177
+ @collection.pixelate( range )
178
+ end
179
+ end # class Tool
180
+
181
+
182
+ end # module Artbase
183
+
184
+
185
+
@@ -1,22 +1,21 @@
1
-
2
-
3
- class Artbase
4
-
5
- MAJOR = 0
6
- MINOR = 0
7
- PATCH = 1
8
- VERSION = [MAJOR,MINOR,PATCH].join('.')
9
-
10
- def self.version
11
- VERSION
12
- end
13
-
14
- def self.banner
15
- "artbase/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}] in (#{root})"
16
- end
17
-
18
- def self.root
19
- File.expand_path( File.dirname(File.dirname(File.dirname(__FILE__))) )
20
- end
21
-
22
- end # module Artbase
1
+
2
+
3
+ module Artbase
4
+ MAJOR = 0
5
+ MINOR = 2
6
+ PATCH = 1
7
+ VERSION = [MAJOR,MINOR,PATCH].join('.')
8
+
9
+ def self.version
10
+ VERSION
11
+ end
12
+
13
+ def self.banner
14
+ "artbase/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}] in (#{root})"
15
+ end
16
+
17
+ def self.root
18
+ File.expand_path( File.dirname(File.dirname(File.dirname(__FILE__))) )
19
+ end
20
+
21
+ end # module Artbase
data/lib/artbase.rb CHANGED
@@ -1,9 +1,78 @@
1
- require 'pp'
2
-
3
-
4
- ## our own code
5
- require 'artbase/version' # note: let version always go first
6
-
7
-
8
- pp Artbase.banner
9
- pp Artbase.root
1
+ require 'cocos'
2
+
3
+
4
+
5
+ ## 3rd party gems
6
+ require 'pixelart'
7
+
8
+
9
+
10
+
11
+ ## our own code
12
+ require_relative 'artbase/version' # note: let version always go first
13
+
14
+
15
+ ### add (shared) "global" config
16
+ module Artbase
17
+ class Configuration
18
+
19
+ #######################
20
+ ## accessors
21
+
22
+ ## todo/check: keep trailing / in ipfs_gateway - why? why not?
23
+ def ipfs_gateway() @ipfs_gateway || 'https://ipfs.io/ipfs/'; end
24
+ def ipfs_gateway=(value) @ipfs_gateway = value; end
25
+ end # class Configuration
26
+
27
+
28
+ ## lets you use
29
+ ## Artbase.configure do |config|
30
+ ## config.ipfs_gateway = 'https://cloudflare-ipfs.com/ipfs/'
31
+ ## end
32
+ def self.configure() yield( config ); end
33
+ def self.config() @config ||= Configuration.new; end
34
+ end # module Artbase
35
+
36
+
37
+ require_relative 'artbase/image'
38
+
39
+
40
+ require_relative 'artbase/helper'
41
+ require_relative 'artbase/retry' ## (global) retry_on_error helper
42
+
43
+ require_relative 'artbase/collection'
44
+ require_relative 'artbase/attributes'
45
+
46
+
47
+ require_relative 'artbase/tool'
48
+
49
+
50
+
51
+ ######
52
+ ## move to helper - why? why not?
53
+
54
+
55
+
56
+ ## quick ipfs (interplanetary file system) hack
57
+ ## - make more reuseable
58
+ ## - different name e.g. ipfs_to_http or such - why? why not?
59
+ ## change/rename parameter str to url or suc - why? why not?
60
+ def handle_ipfs( str, normalize: true,
61
+ ipfs_gateway: Artbase.config.ipfs_gateway )
62
+
63
+ if normalize && str.start_with?( 'https://ipfs.io/ipfs/' )
64
+ str = str.sub( 'https://ipfs.io/ipfs/', 'ipfs://' )
65
+ end
66
+
67
+ if str.start_with?( 'ipfs://' )
68
+ str = str.sub( 'ipfs://', ipfs_gateway ) # use/replace with public gateway
69
+ end
70
+ str
71
+ end
72
+
73
+
74
+
75
+
76
+
77
+ puts Artbase.banner
78
+ puts Artbase.root
metadata CHANGED
@@ -1,15 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artbase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-09 00:00:00.000000000 Z
11
+ date: 2022-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cocos
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: webclient
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.2.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.2.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: pixelart
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 1.3.6
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.3.6
13
55
  - !ruby/object:Gem::Dependency
14
56
  name: rdoc
15
57
  requirement: !ruby/object:Gem::Requirement
@@ -36,17 +78,18 @@ dependencies:
36
78
  requirements:
37
79
  - - "~>"
38
80
  - !ruby/object:Gem::Version
39
- version: '3.22'
81
+ version: '3.23'
40
82
  type: :development
41
83
  prerelease: false
42
84
  version_requirements: !ruby/object:Gem::Requirement
43
85
  requirements:
44
86
  - - "~>"
45
87
  - !ruby/object:Gem::Version
46
- version: '3.22'
88
+ version: '3.23'
47
89
  description: artbase
48
90
  email: wwwmake@googlegroups.com
49
- executables: []
91
+ executables:
92
+ - artbase
50
93
  extensions: []
51
94
  extra_rdoc_files:
52
95
  - CHANGELOG.md
@@ -57,9 +100,21 @@ files:
57
100
  - Manifest.txt
58
101
  - README.md
59
102
  - Rakefile
103
+ - bin/artbase
60
104
  - lib/artbase.rb
105
+ - lib/artbase/attributes.rb
106
+ - lib/artbase/collection.rb
107
+ - lib/artbase/collection/base.rb
108
+ - lib/artbase/collection/image.rb
109
+ - lib/artbase/collection/opensea.rb
110
+ - lib/artbase/collection/token.rb
111
+ - lib/artbase/helper.rb
112
+ - lib/artbase/image.rb
113
+ - lib/artbase/image/sample.rb
114
+ - lib/artbase/retry.rb
115
+ - lib/artbase/tool.rb
61
116
  - lib/artbase/version.rb
62
- homepage: https://github.com/pixelartexchange/opensea.sandbox
117
+ homepage: https://github.com/pixelartexchange/artbase
63
118
  licenses:
64
119
  - Public Domain
65
120
  metadata: {}
@@ -80,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
135
  - !ruby/object:Gem::Version
81
136
  version: '0'
82
137
  requirements: []
83
- rubygems_version: 3.1.4
138
+ rubygems_version: 3.3.7
84
139
  signing_key:
85
140
  specification_version: 4
86
141
  summary: artbase