lounge_lizard 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.gitmodules +3 -0
- data/.rspec +2 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/Guardfile +33 -0
- data/LICENSE.txt +21 -0
- data/README.md +50 -0
- data/Rakefile +43 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/circle.yml +14 -0
- data/ext/drafter/CHANGELOG.md +278 -0
- data/ext/drafter/Dockerfile +17 -0
- data/ext/drafter/Makefile +62 -0
- data/ext/drafter/appveyor.yml +17 -0
- data/ext/drafter/bin/drafter +0 -0
- data/ext/drafter/build/Makefile +387 -0
- data/ext/drafter/build/drafter.Makefile +6 -0
- data/ext/drafter/build/drafter.target.mk +159 -0
- data/ext/drafter/build/ext/snowcrash/libmarkdownparser.target.mk +141 -0
- data/ext/drafter/build/ext/snowcrash/libsnowcrash.target.mk +154 -0
- data/ext/drafter/build/ext/snowcrash/libsundown.target.mk +149 -0
- data/ext/drafter/build/ext/snowcrash/perf-libsnowcrash.target.mk +147 -0
- data/ext/drafter/build/ext/snowcrash/snowcrash.Makefile +6 -0
- data/ext/drafter/build/gyp-mac-tool +606 -0
- data/ext/drafter/build/libdrafter.target.mk +186 -0
- data/ext/drafter/build/libsos.target.mk +137 -0
- data/ext/drafter/build/out/Release/drafter +0 -0
- data/ext/drafter/build/out/Release/libdrafter.dylib +0 -0
- data/ext/drafter/build/out/Release/libmarkdownparser.a +0 -0
- data/ext/drafter/build/out/Release/libsnowcrash.a +0 -0
- data/ext/drafter/build/out/Release/libsos.a +0 -0
- data/ext/drafter/build/out/Release/libsundown.a +0 -0
- data/ext/drafter/build/out/Release/obj.target/drafter/src/config.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/drafter/src/main.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/drafter/src/reporting.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/ConversionContext.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/NamedTypesRegistry.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractAPI.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractDataStructure.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractElementFactory.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractSourceMap.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/Render.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/Serialize.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeAST.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeResult.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeSourcemap.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/drafter.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/drafter_private.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/ComparableVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Element.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/ExpandVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/IsExpandableVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/JSONSchemaVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/PrintVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Query.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Registry.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/RenderJSONVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/SerializeCompactVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/SerializeVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/TypeQueryVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/VisitorUtils.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Blueprint.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/BlueprintSourcemap.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HTTP.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HeadersParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSON.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONOneOfParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONSourcemap.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONTypeSectionParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONValueMemberParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Section.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Signature.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/UriTemplateParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/posix/RegexMatch.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/snowcrash.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsos/ext/sos/src/sos.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.o +0 -0
- data/ext/drafter/circle.yml +32 -0
- data/ext/drafter/config.gypi +10 -0
- data/ext/drafter/config.mk +5 -0
- data/ext/drafter/configure +224 -0
- data/ext/drafter/drafter.gyp +189 -0
- data/ext/drafter/drafter.xcworkspace/contents.xcworkspacedata +13 -0
- data/ext/drafter/ext/snowcrash/Makefile +58 -0
- data/ext/drafter/ext/snowcrash/appveyor.yml +7 -0
- data/ext/drafter/ext/snowcrash/common.gypi +165 -0
- data/ext/drafter/ext/snowcrash/configure +197 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/Makefile +90 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/CONTRIBUTING.md +10 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/Makefile +84 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/Makefile.win +33 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/examples/smartypants.c +72 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/examples/sundown.c +80 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini.h +37 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.c +108 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.c +84 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.c +647 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.h +77 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.c +389 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html_block_names.txt +25 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.c +297 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.h +51 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.c +225 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.h +96 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/html_blocks.h +206 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.c +2726 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.h +147 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.c +204 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.h +58 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.c +81 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.h +29 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/sundown.def +20 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/markdown/markdown.vcproj +188 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/msvc.sln +38 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/sundown/sundown.vcproj +206 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.cc +160 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.h +90 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.cc +152 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.h +103 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.cc +388 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.h +106 -0
- data/ext/drafter/ext/snowcrash/snowcrash.gyp +196 -0
- data/ext/drafter/ext/snowcrash/src/ActionParser.h +560 -0
- data/ext/drafter/ext/snowcrash/src/AssetParser.h +123 -0
- data/ext/drafter/ext/snowcrash/src/AttributesParser.h +123 -0
- data/ext/drafter/ext/snowcrash/src/Blueprint.cc +90 -0
- data/ext/drafter/ext/snowcrash/src/Blueprint.h +489 -0
- data/ext/drafter/ext/snowcrash/src/BlueprintParser.h +845 -0
- data/ext/drafter/ext/snowcrash/src/BlueprintSourcemap.cc +81 -0
- data/ext/drafter/ext/snowcrash/src/BlueprintSourcemap.h +345 -0
- data/ext/drafter/ext/snowcrash/src/BlueprintUtility.h +111 -0
- data/ext/drafter/ext/snowcrash/src/CodeBlockUtility.h +276 -0
- data/ext/drafter/ext/snowcrash/src/DataStructureGroupParser.h +157 -0
- data/ext/drafter/ext/snowcrash/src/HTTP.cc +49 -0
- data/ext/drafter/ext/snowcrash/src/HTTP.h +108 -0
- data/ext/drafter/ext/snowcrash/src/HeadersParser.cc +117 -0
- data/ext/drafter/ext/snowcrash/src/HeadersParser.h +377 -0
- data/ext/drafter/ext/snowcrash/src/MSON.cc +272 -0
- data/ext/drafter/ext/snowcrash/src/MSON.h +405 -0
- data/ext/drafter/ext/snowcrash/src/MSONMixinParser.h +103 -0
- data/ext/drafter/ext/snowcrash/src/MSONNamedTypeParser.h +135 -0
- data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.cc +132 -0
- data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.h +80 -0
- data/ext/drafter/ext/snowcrash/src/MSONParameterParser.h +166 -0
- data/ext/drafter/ext/snowcrash/src/MSONPropertyMemberParser.h +106 -0
- data/ext/drafter/ext/snowcrash/src/MSONSourcemap.cc +141 -0
- data/ext/drafter/ext/snowcrash/src/MSONSourcemap.h +181 -0
- data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.cc +209 -0
- data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.h +213 -0
- data/ext/drafter/ext/snowcrash/src/MSONUtility.h +506 -0
- data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.cc +214 -0
- data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.h +390 -0
- data/ext/drafter/ext/snowcrash/src/ModelTable.h +87 -0
- data/ext/drafter/ext/snowcrash/src/ParameterParser.h +516 -0
- data/ext/drafter/ext/snowcrash/src/ParametersParser.h +222 -0
- data/ext/drafter/ext/snowcrash/src/PayloadParser.h +733 -0
- data/ext/drafter/ext/snowcrash/src/Platform.h +33 -0
- data/ext/drafter/ext/snowcrash/src/RegexMatch.h +32 -0
- data/ext/drafter/ext/snowcrash/src/RelationParser.h +87 -0
- data/ext/drafter/ext/snowcrash/src/ResourceGroupParser.h +297 -0
- data/ext/drafter/ext/snowcrash/src/ResourceParser.h +536 -0
- data/ext/drafter/ext/snowcrash/src/Section.cc +48 -0
- data/ext/drafter/ext/snowcrash/src/Section.h +60 -0
- data/ext/drafter/ext/snowcrash/src/SectionParser.h +246 -0
- data/ext/drafter/ext/snowcrash/src/SectionParserData.h +109 -0
- data/ext/drafter/ext/snowcrash/src/SectionProcessor.h +299 -0
- data/ext/drafter/ext/snowcrash/src/Signature.cc +75 -0
- data/ext/drafter/ext/snowcrash/src/Signature.h +103 -0
- data/ext/drafter/ext/snowcrash/src/SignatureSectionProcessor.h +442 -0
- data/ext/drafter/ext/snowcrash/src/SourceAnnotation.h +166 -0
- data/ext/drafter/ext/snowcrash/src/StringUtility.h +323 -0
- data/ext/drafter/ext/snowcrash/src/UriTemplateParser.cc +195 -0
- data/ext/drafter/ext/snowcrash/src/UriTemplateParser.h +240 -0
- data/ext/drafter/ext/snowcrash/src/ValuesParser.h +111 -0
- data/ext/drafter/ext/snowcrash/src/posix/RegexMatch.cc +99 -0
- data/ext/drafter/ext/snowcrash/src/snowcrash.cc +90 -0
- data/ext/drafter/ext/snowcrash/src/snowcrash.h +44 -0
- data/ext/drafter/ext/snowcrash/src/win/RegexMatch.cc +78 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/AUTHORS +12 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/DEPS +23 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/OWNERS +1 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/PRESUBMIT.py +137 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/buildbot_run.py +136 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/commit_queue/OWNERS +6 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/commit_queue/cq_config.json +15 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/codereview.settings +10 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/data/win/large-pdb-shim.cc +12 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/gyp +8 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/gyp.bat +5 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/gyp_main.py +16 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSNew.py +340 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSProject.py +208 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSSettings.py +1096 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSToolFile.py +58 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUserFile.py +147 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUtil.py +270 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUtil.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSVersion.py +445 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSVersion.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/__init__.py +548 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/__init__.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/common.py +608 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/common.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/easy_xml.py +157 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/flock_tool.py +54 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.py +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/analyzer.py +741 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/android.py +1069 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/cmake.py +1248 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/dump_dependency_json.py +99 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/eclipse.py +425 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/gypd.py +94 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/gypsh.py +56 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.py +2218 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/msvs.py +3467 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/ninja.py +2427 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/ninja.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.py +1300 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/input.py +2899 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/input.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/mac_tool.py +605 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/msvs_emulation.py +1093 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/msvs_emulation.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ninja_syntax.py +160 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ninja_syntax.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ordered_dict.py +289 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/simple_copy.py +46 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/simple_copy.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/win_tool.py +314 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.py +1664 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_ninja.py +276 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_ninja.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.py +2927 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xml_fix.py +69 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylintrc +307 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/samples/samples +81 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/samples/samples.bat +5 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/setup.py +19 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/Xcode/Specifications/gyp.pbfilespec +27 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/Xcode/Specifications/gyp.xclangspec +226 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/emacs/gyp.el +275 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/graphviz.py +100 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_gyp.py +155 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_sln.py +169 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_vcproj.py +329 -0
- data/ext/drafter/ext/snowcrash/vcbuild.bat +139 -0
- data/ext/drafter/ext/sos/Makefile +62 -0
- data/ext/drafter/ext/sos/src/sos.cc +235 -0
- data/ext/drafter/ext/sos/src/sos.h +188 -0
- data/ext/drafter/ext/sos/src/sosJSON.h +121 -0
- data/ext/drafter/ext/sos/src/sosYAML.h +105 -0
- data/ext/drafter/src/ConversionContext.cc +39 -0
- data/ext/drafter/src/ConversionContext.h +34 -0
- data/ext/drafter/src/NamedTypesRegistry.cc +405 -0
- data/ext/drafter/src/NamedTypesRegistry.h +28 -0
- data/ext/drafter/src/NodeInfo.h +143 -0
- data/ext/drafter/src/RefractAPI.cc +579 -0
- data/ext/drafter/src/RefractAPI.h +28 -0
- data/ext/drafter/src/RefractDataStructure.cc +1199 -0
- data/ext/drafter/src/RefractDataStructure.h +26 -0
- data/ext/drafter/src/RefractElementFactory.cc +107 -0
- data/ext/drafter/src/RefractElementFactory.h +67 -0
- data/ext/drafter/src/RefractSourceMap.cc +29 -0
- data/ext/drafter/src/RefractSourceMap.h +57 -0
- data/ext/drafter/src/Render.cc +157 -0
- data/ext/drafter/src/Render.h +40 -0
- data/ext/drafter/src/Serialize.cc +160 -0
- data/ext/drafter/src/Serialize.h +289 -0
- data/ext/drafter/src/SerializeAST.cc +507 -0
- data/ext/drafter/src/SerializeAST.h +29 -0
- data/ext/drafter/src/SerializeResult.cc +170 -0
- data/ext/drafter/src/SerializeResult.h +34 -0
- data/ext/drafter/src/SerializeSourcemap.cc +331 -0
- data/ext/drafter/src/SerializeSourcemap.h +21 -0
- data/ext/drafter/src/Version.h +40 -0
- data/ext/drafter/src/config.cc +91 -0
- data/ext/drafter/src/config.h +38 -0
- data/ext/drafter/src/drafter.cc +137 -0
- data/ext/drafter/src/drafter.h +102 -0
- data/ext/drafter/src/drafter_private.cc +85 -0
- data/ext/drafter/src/drafter_private.h +34 -0
- data/ext/drafter/src/main.cc +137 -0
- data/ext/drafter/src/refract/AppendDecorator.h +58 -0
- data/ext/drafter/src/refract/Build.h +67 -0
- data/ext/drafter/src/refract/ComparableVisitor.cc +43 -0
- data/ext/drafter/src/refract/ComparableVisitor.h +62 -0
- data/ext/drafter/src/refract/Element.cc +409 -0
- data/ext/drafter/src/refract/Element.h +656 -0
- data/ext/drafter/src/refract/ElementFwd.h +37 -0
- data/ext/drafter/src/refract/ElementInserter.h +59 -0
- data/ext/drafter/src/refract/Exception.h +31 -0
- data/ext/drafter/src/refract/ExpandVisitor.cc +359 -0
- data/ext/drafter/src/refract/ExpandVisitor.h +58 -0
- data/ext/drafter/src/refract/FilterVisitor.h +52 -0
- data/ext/drafter/src/refract/IsExpandableVisitor.cc +140 -0
- data/ext/drafter/src/refract/IsExpandableVisitor.h +31 -0
- data/ext/drafter/src/refract/Iterate.h +160 -0
- data/ext/drafter/src/refract/JSONSchemaVisitor.cc +675 -0
- data/ext/drafter/src/refract/JSONSchemaVisitor.h +73 -0
- data/ext/drafter/src/refract/PrintVisitor.cc +164 -0
- data/ext/drafter/src/refract/PrintVisitor.h +50 -0
- data/ext/drafter/src/refract/Query.cc +13 -0
- data/ext/drafter/src/refract/Query.h +38 -0
- data/ext/drafter/src/refract/Registry.cc +114 -0
- data/ext/drafter/src/refract/Registry.h +43 -0
- data/ext/drafter/src/refract/RenderJSONVisitor.cc +255 -0
- data/ext/drafter/src/refract/RenderJSONVisitor.h +51 -0
- data/ext/drafter/src/refract/SerializeCompactVisitor.cc +167 -0
- data/ext/drafter/src/refract/SerializeCompactVisitor.h +56 -0
- data/ext/drafter/src/refract/SerializeVisitor.cc +214 -0
- data/ext/drafter/src/refract/SerializeVisitor.h +55 -0
- data/ext/drafter/src/refract/TypeQueryVisitor.cc +46 -0
- data/ext/drafter/src/refract/TypeQueryVisitor.h +110 -0
- data/ext/drafter/src/refract/Visitor.h +126 -0
- data/ext/drafter/src/refract/VisitorUtils.cc +63 -0
- data/ext/drafter/src/refract/VisitorUtils.h +231 -0
- data/ext/drafter/src/reporting.cc +263 -0
- data/ext/drafter/src/reporting.h +39 -0
- data/ext/drafter/src/stream.h +148 -0
- data/ext/drafter/tools/homebrew/drafter.rb +18 -0
- data/ext/drafter/tools/make-tarball.sh +39 -0
- data/ext/drafter/tools/refract-filter.py +96 -0
- data/ext/drafter/tools/release.sh +17 -0
- data/ext/drafter/vcbuild.bat +203 -0
- data/lib/lounge_lizard/binding.rb +29 -0
- data/lib/lounge_lizard/version.rb +3 -0
- data/lib/lounge_lizard.rb +18 -0
- data/lounge_lizard.gemspec +37 -0
- metadata +547 -0
@@ -0,0 +1,137 @@
|
|
1
|
+
# Copyright (c) 2012 Google Inc. All rights reserved.
|
2
|
+
# Use of this source code is governed by a BSD-style license that can be
|
3
|
+
# found in the LICENSE file.
|
4
|
+
|
5
|
+
|
6
|
+
"""Top-level presubmit script for GYP.
|
7
|
+
|
8
|
+
See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
|
9
|
+
for more details about the presubmit API built into gcl.
|
10
|
+
"""
|
11
|
+
|
12
|
+
|
13
|
+
PYLINT_BLACKLIST = [
|
14
|
+
# TODO: fix me.
|
15
|
+
# From SCons, not done in google style.
|
16
|
+
'test/lib/TestCmd.py',
|
17
|
+
'test/lib/TestCommon.py',
|
18
|
+
'test/lib/TestGyp.py',
|
19
|
+
]
|
20
|
+
|
21
|
+
|
22
|
+
PYLINT_DISABLED_WARNINGS = [
|
23
|
+
# TODO: fix me.
|
24
|
+
# Many tests include modules they don't use.
|
25
|
+
'W0611',
|
26
|
+
# Possible unbalanced tuple unpacking with sequence.
|
27
|
+
'W0632',
|
28
|
+
# Attempting to unpack a non-sequence.
|
29
|
+
'W0633',
|
30
|
+
# Include order doesn't properly include local files?
|
31
|
+
'F0401',
|
32
|
+
# Some use of built-in names.
|
33
|
+
'W0622',
|
34
|
+
# Some unused variables.
|
35
|
+
'W0612',
|
36
|
+
# Operator not preceded/followed by space.
|
37
|
+
'C0323',
|
38
|
+
'C0322',
|
39
|
+
# Unnecessary semicolon.
|
40
|
+
'W0301',
|
41
|
+
# Unused argument.
|
42
|
+
'W0613',
|
43
|
+
# String has no effect (docstring in wrong place).
|
44
|
+
'W0105',
|
45
|
+
# map/filter on lambda could be replaced by comprehension.
|
46
|
+
'W0110',
|
47
|
+
# Use of eval.
|
48
|
+
'W0123',
|
49
|
+
# Comma not followed by space.
|
50
|
+
'C0324',
|
51
|
+
# Access to a protected member.
|
52
|
+
'W0212',
|
53
|
+
# Bad indent.
|
54
|
+
'W0311',
|
55
|
+
# Line too long.
|
56
|
+
'C0301',
|
57
|
+
# Undefined variable.
|
58
|
+
'E0602',
|
59
|
+
# Not exception type specified.
|
60
|
+
'W0702',
|
61
|
+
# No member of that name.
|
62
|
+
'E1101',
|
63
|
+
# Dangerous default {}.
|
64
|
+
'W0102',
|
65
|
+
# Cyclic import.
|
66
|
+
'R0401',
|
67
|
+
# Others, too many to sort.
|
68
|
+
'W0201', 'W0232', 'E1103', 'W0621', 'W0108', 'W0223', 'W0231',
|
69
|
+
'R0201', 'E0101', 'C0321',
|
70
|
+
# ************* Module copy
|
71
|
+
# W0104:427,12:_test.odict.__setitem__: Statement seems to have no effect
|
72
|
+
'W0104',
|
73
|
+
]
|
74
|
+
|
75
|
+
|
76
|
+
def CheckChangeOnUpload(input_api, output_api):
|
77
|
+
report = []
|
78
|
+
report.extend(input_api.canned_checks.PanProjectChecks(
|
79
|
+
input_api, output_api))
|
80
|
+
return report
|
81
|
+
|
82
|
+
|
83
|
+
def CheckChangeOnCommit(input_api, output_api):
|
84
|
+
report = []
|
85
|
+
|
86
|
+
# Accept any year number from 2009 to the current year.
|
87
|
+
current_year = int(input_api.time.strftime('%Y'))
|
88
|
+
allowed_years = (str(s) for s in reversed(xrange(2009, current_year + 1)))
|
89
|
+
years_re = '(' + '|'.join(allowed_years) + ')'
|
90
|
+
|
91
|
+
# The (c) is deprecated, but tolerate it until it's removed from all files.
|
92
|
+
license = (
|
93
|
+
r'.*? Copyright (\(c\) )?%(year)s Google Inc\. All rights reserved\.\n'
|
94
|
+
r'.*? Use of this source code is governed by a BSD-style license that '
|
95
|
+
r'can be\n'
|
96
|
+
r'.*? found in the LICENSE file\.\n'
|
97
|
+
) % {
|
98
|
+
'year': years_re,
|
99
|
+
}
|
100
|
+
|
101
|
+
report.extend(input_api.canned_checks.PanProjectChecks(
|
102
|
+
input_api, output_api, license_header=license))
|
103
|
+
report.extend(input_api.canned_checks.CheckTreeIsOpen(
|
104
|
+
input_api, output_api,
|
105
|
+
'http://gyp-status.appspot.com/status',
|
106
|
+
'http://gyp-status.appspot.com/current'))
|
107
|
+
|
108
|
+
import os
|
109
|
+
import sys
|
110
|
+
old_sys_path = sys.path
|
111
|
+
try:
|
112
|
+
sys.path = ['pylib', 'test/lib'] + sys.path
|
113
|
+
blacklist = PYLINT_BLACKLIST
|
114
|
+
if sys.platform == 'win32':
|
115
|
+
blacklist = [os.path.normpath(x).replace('\\', '\\\\')
|
116
|
+
for x in PYLINT_BLACKLIST]
|
117
|
+
report.extend(input_api.canned_checks.RunPylint(
|
118
|
+
input_api,
|
119
|
+
output_api,
|
120
|
+
black_list=blacklist,
|
121
|
+
disabled_warnings=PYLINT_DISABLED_WARNINGS))
|
122
|
+
finally:
|
123
|
+
sys.path = old_sys_path
|
124
|
+
return report
|
125
|
+
|
126
|
+
|
127
|
+
TRYBOTS = [
|
128
|
+
'linux_try',
|
129
|
+
'mac_try',
|
130
|
+
'win_try',
|
131
|
+
]
|
132
|
+
|
133
|
+
|
134
|
+
def GetPreferredTryMasters(_, change):
|
135
|
+
return {
|
136
|
+
'client.gyp': { t: set(['defaulttests']) for t in TRYBOTS },
|
137
|
+
}
|
@@ -0,0 +1,136 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# Copyright (c) 2012 Google Inc. All rights reserved.
|
3
|
+
# Use of this source code is governed by a BSD-style license that can be
|
4
|
+
# found in the LICENSE file.
|
5
|
+
|
6
|
+
"""Argument-less script to select what to run on the buildbots."""
|
7
|
+
|
8
|
+
import os
|
9
|
+
import shutil
|
10
|
+
import subprocess
|
11
|
+
import sys
|
12
|
+
|
13
|
+
|
14
|
+
BUILDBOT_DIR = os.path.dirname(os.path.abspath(__file__))
|
15
|
+
TRUNK_DIR = os.path.dirname(BUILDBOT_DIR)
|
16
|
+
ROOT_DIR = os.path.dirname(TRUNK_DIR)
|
17
|
+
CMAKE_DIR = os.path.join(ROOT_DIR, 'cmake')
|
18
|
+
CMAKE_BIN_DIR = os.path.join(CMAKE_DIR, 'bin')
|
19
|
+
OUT_DIR = os.path.join(TRUNK_DIR, 'out')
|
20
|
+
|
21
|
+
|
22
|
+
def CallSubProcess(*args, **kwargs):
|
23
|
+
"""Wrapper around subprocess.call which treats errors as build exceptions."""
|
24
|
+
with open(os.devnull) as devnull_fd:
|
25
|
+
retcode = subprocess.call(stdin=devnull_fd, *args, **kwargs)
|
26
|
+
if retcode != 0:
|
27
|
+
print '@@@STEP_EXCEPTION@@@'
|
28
|
+
sys.exit(1)
|
29
|
+
|
30
|
+
|
31
|
+
def PrepareCmake():
|
32
|
+
"""Build CMake 2.8.8 since the version in Precise is 2.8.7."""
|
33
|
+
if os.environ['BUILDBOT_CLOBBER'] == '1':
|
34
|
+
print '@@@BUILD_STEP Clobber CMake checkout@@@'
|
35
|
+
shutil.rmtree(CMAKE_DIR)
|
36
|
+
|
37
|
+
# We always build CMake 2.8.8, so no need to do anything
|
38
|
+
# if the directory already exists.
|
39
|
+
if os.path.isdir(CMAKE_DIR):
|
40
|
+
return
|
41
|
+
|
42
|
+
print '@@@BUILD_STEP Initialize CMake checkout@@@'
|
43
|
+
os.mkdir(CMAKE_DIR)
|
44
|
+
|
45
|
+
print '@@@BUILD_STEP Sync CMake@@@'
|
46
|
+
CallSubProcess(
|
47
|
+
['git', 'clone',
|
48
|
+
'--depth', '1',
|
49
|
+
'--single-branch',
|
50
|
+
'--branch', 'v2.8.8',
|
51
|
+
'--',
|
52
|
+
'git://cmake.org/cmake.git',
|
53
|
+
CMAKE_DIR],
|
54
|
+
cwd=CMAKE_DIR)
|
55
|
+
|
56
|
+
print '@@@BUILD_STEP Build CMake@@@'
|
57
|
+
CallSubProcess(
|
58
|
+
['/bin/bash', 'bootstrap', '--prefix=%s' % CMAKE_DIR],
|
59
|
+
cwd=CMAKE_DIR)
|
60
|
+
|
61
|
+
CallSubProcess( ['make', 'cmake'], cwd=CMAKE_DIR)
|
62
|
+
|
63
|
+
|
64
|
+
def GypTestFormat(title, format=None, msvs_version=None, tests=[]):
|
65
|
+
"""Run the gyp tests for a given format, emitting annotator tags.
|
66
|
+
|
67
|
+
See annotator docs at:
|
68
|
+
https://sites.google.com/a/chromium.org/dev/developers/testing/chromium-build-infrastructure/buildbot-annotations
|
69
|
+
Args:
|
70
|
+
format: gyp format to test.
|
71
|
+
Returns:
|
72
|
+
0 for sucesss, 1 for failure.
|
73
|
+
"""
|
74
|
+
if not format:
|
75
|
+
format = title
|
76
|
+
|
77
|
+
print '@@@BUILD_STEP ' + title + '@@@'
|
78
|
+
sys.stdout.flush()
|
79
|
+
env = os.environ.copy()
|
80
|
+
if msvs_version:
|
81
|
+
env['GYP_MSVS_VERSION'] = msvs_version
|
82
|
+
command = ' '.join(
|
83
|
+
[sys.executable, 'gyp/gyptest.py',
|
84
|
+
'--all',
|
85
|
+
'--passed',
|
86
|
+
'--format', format,
|
87
|
+
'--path', CMAKE_BIN_DIR,
|
88
|
+
'--chdir', 'gyp'] + tests)
|
89
|
+
retcode = subprocess.call(command, cwd=ROOT_DIR, env=env, shell=True)
|
90
|
+
if retcode:
|
91
|
+
# Emit failure tag, and keep going.
|
92
|
+
print '@@@STEP_FAILURE@@@'
|
93
|
+
return 1
|
94
|
+
return 0
|
95
|
+
|
96
|
+
|
97
|
+
def GypBuild():
|
98
|
+
# Dump out/ directory.
|
99
|
+
print '@@@BUILD_STEP cleanup@@@'
|
100
|
+
print 'Removing %s...' % OUT_DIR
|
101
|
+
shutil.rmtree(OUT_DIR, ignore_errors=True)
|
102
|
+
print 'Done.'
|
103
|
+
|
104
|
+
retcode = 0
|
105
|
+
if sys.platform.startswith('linux'):
|
106
|
+
retcode += GypTestFormat('ninja')
|
107
|
+
retcode += GypTestFormat('make')
|
108
|
+
PrepareCmake()
|
109
|
+
retcode += GypTestFormat('cmake')
|
110
|
+
elif sys.platform == 'darwin':
|
111
|
+
retcode += GypTestFormat('ninja')
|
112
|
+
retcode += GypTestFormat('xcode')
|
113
|
+
retcode += GypTestFormat('make')
|
114
|
+
elif sys.platform == 'win32':
|
115
|
+
retcode += GypTestFormat('ninja')
|
116
|
+
if os.environ['BUILDBOT_BUILDERNAME'] == 'gyp-win64':
|
117
|
+
retcode += GypTestFormat('msvs-ninja-2013', format='msvs-ninja',
|
118
|
+
msvs_version='2013',
|
119
|
+
tests=[
|
120
|
+
r'test\generator-output\gyptest-actions.py',
|
121
|
+
r'test\generator-output\gyptest-relocate.py',
|
122
|
+
r'test\generator-output\gyptest-rules.py'])
|
123
|
+
retcode += GypTestFormat('msvs-2013', format='msvs', msvs_version='2013')
|
124
|
+
else:
|
125
|
+
raise Exception('Unknown platform')
|
126
|
+
if retcode:
|
127
|
+
# TODO(bradnelson): once the annotator supports a postscript (section for
|
128
|
+
# after the build proper that could be used for cumulative failures),
|
129
|
+
# use that instead of this. This isolates the final return value so
|
130
|
+
# that it isn't misattributed to the last stage.
|
131
|
+
print '@@@BUILD_STEP failures@@@'
|
132
|
+
sys.exit(retcode)
|
133
|
+
|
134
|
+
|
135
|
+
if __name__ == '__main__':
|
136
|
+
GypBuild()
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{
|
2
|
+
"trybots": {
|
3
|
+
"launched": {
|
4
|
+
"tryserver.nacl": {
|
5
|
+
"gyp-presubmit": ["defaulttests"],
|
6
|
+
"gyp-linux": ["defaulttests"],
|
7
|
+
"gyp-mac": ["defaulttests"],
|
8
|
+
"gyp-win32": ["defaulttests"],
|
9
|
+
"gyp-win64": ["defaulttests"]
|
10
|
+
}
|
11
|
+
},
|
12
|
+
"triggered": {
|
13
|
+
}
|
14
|
+
}
|
15
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# This file is used by gcl to get repository specific information.
|
2
|
+
CODE_REVIEW_SERVER: codereview.chromium.org
|
3
|
+
CC_LIST: gyp-developer@googlegroups.com
|
4
|
+
VIEW_VC: https://chromium.googlesource.com/external/gyp/+/
|
5
|
+
TRY_ON_UPLOAD: False
|
6
|
+
TRYSERVER_PROJECT: gyp
|
7
|
+
TRYSERVER_PATCHLEVEL: 1
|
8
|
+
TRYSERVER_ROOT: gyp
|
9
|
+
TRYSERVER_SVN_URL: svn://svn.chromium.org/chrome-try/try-nacl
|
10
|
+
PROJECT: gyp
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// Copyright (c) 2013 Google Inc. All rights reserved.
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
3
|
+
// found in the LICENSE file.
|
4
|
+
|
5
|
+
// This file is used to generate an empty .pdb -- with a 4KB pagesize -- that is
|
6
|
+
// then used during the final link for modules that have large PDBs. Otherwise,
|
7
|
+
// the linker will generate a pdb with a page size of 1KB, which imposes a limit
|
8
|
+
// of 1GB on the .pdb. By generating an initial empty .pdb with the compiler
|
9
|
+
// (rather than the linker), this limit is avoided. With this in place PDBs may
|
10
|
+
// grow to 2GB.
|
11
|
+
//
|
12
|
+
// This file is referenced by the msvs_large_pdb mechanism in MSVSUtil.py.
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
|
3
|
+
# Copyright (c) 2009 Google Inc. All rights reserved.
|
4
|
+
# Use of this source code is governed by a BSD-style license that can be
|
5
|
+
# found in the LICENSE file.
|
6
|
+
|
7
|
+
import os
|
8
|
+
import sys
|
9
|
+
|
10
|
+
# Make sure we're using the version of pylib in this repo, not one installed
|
11
|
+
# elsewhere on the system.
|
12
|
+
sys.path.insert(0, os.path.join(os.path.dirname(sys.argv[0]), 'pylib'))
|
13
|
+
import gyp
|
14
|
+
|
15
|
+
if __name__ == '__main__':
|
16
|
+
sys.exit(gyp.script_main())
|
@@ -0,0 +1,340 @@
|
|
1
|
+
# Copyright (c) 2012 Google Inc. All rights reserved.
|
2
|
+
# Use of this source code is governed by a BSD-style license that can be
|
3
|
+
# found in the LICENSE file.
|
4
|
+
|
5
|
+
"""New implementation of Visual Studio project generation."""
|
6
|
+
|
7
|
+
import os
|
8
|
+
import random
|
9
|
+
|
10
|
+
import gyp.common
|
11
|
+
|
12
|
+
# hashlib is supplied as of Python 2.5 as the replacement interface for md5
|
13
|
+
# and other secure hashes. In 2.6, md5 is deprecated. Import hashlib if
|
14
|
+
# available, avoiding a deprecation warning under 2.6. Import md5 otherwise,
|
15
|
+
# preserving 2.4 compatibility.
|
16
|
+
try:
|
17
|
+
import hashlib
|
18
|
+
_new_md5 = hashlib.md5
|
19
|
+
except ImportError:
|
20
|
+
import md5
|
21
|
+
_new_md5 = md5.new
|
22
|
+
|
23
|
+
|
24
|
+
# Initialize random number generator
|
25
|
+
random.seed()
|
26
|
+
|
27
|
+
# GUIDs for project types
|
28
|
+
ENTRY_TYPE_GUIDS = {
|
29
|
+
'project': '{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}',
|
30
|
+
'folder': '{2150E333-8FDC-42A3-9474-1A3956D46DE8}',
|
31
|
+
}
|
32
|
+
|
33
|
+
#------------------------------------------------------------------------------
|
34
|
+
# Helper functions
|
35
|
+
|
36
|
+
|
37
|
+
def MakeGuid(name, seed='msvs_new'):
|
38
|
+
"""Returns a GUID for the specified target name.
|
39
|
+
|
40
|
+
Args:
|
41
|
+
name: Target name.
|
42
|
+
seed: Seed for MD5 hash.
|
43
|
+
Returns:
|
44
|
+
A GUID-line string calculated from the name and seed.
|
45
|
+
|
46
|
+
This generates something which looks like a GUID, but depends only on the
|
47
|
+
name and seed. This means the same name/seed will always generate the same
|
48
|
+
GUID, so that projects and solutions which refer to each other can explicitly
|
49
|
+
determine the GUID to refer to explicitly. It also means that the GUID will
|
50
|
+
not change when the project for a target is rebuilt.
|
51
|
+
"""
|
52
|
+
# Calculate a MD5 signature for the seed and name.
|
53
|
+
d = _new_md5(str(seed) + str(name)).hexdigest().upper()
|
54
|
+
# Convert most of the signature to GUID form (discard the rest)
|
55
|
+
guid = ('{' + d[:8] + '-' + d[8:12] + '-' + d[12:16] + '-' + d[16:20]
|
56
|
+
+ '-' + d[20:32] + '}')
|
57
|
+
return guid
|
58
|
+
|
59
|
+
#------------------------------------------------------------------------------
|
60
|
+
|
61
|
+
|
62
|
+
class MSVSSolutionEntry(object):
|
63
|
+
def __cmp__(self, other):
|
64
|
+
# Sort by name then guid (so things are in order on vs2008).
|
65
|
+
return cmp((self.name, self.get_guid()), (other.name, other.get_guid()))
|
66
|
+
|
67
|
+
|
68
|
+
class MSVSFolder(MSVSSolutionEntry):
|
69
|
+
"""Folder in a Visual Studio project or solution."""
|
70
|
+
|
71
|
+
def __init__(self, path, name = None, entries = None,
|
72
|
+
guid = None, items = None):
|
73
|
+
"""Initializes the folder.
|
74
|
+
|
75
|
+
Args:
|
76
|
+
path: Full path to the folder.
|
77
|
+
name: Name of the folder.
|
78
|
+
entries: List of folder entries to nest inside this folder. May contain
|
79
|
+
Folder or Project objects. May be None, if the folder is empty.
|
80
|
+
guid: GUID to use for folder, if not None.
|
81
|
+
items: List of solution items to include in the folder project. May be
|
82
|
+
None, if the folder does not directly contain items.
|
83
|
+
"""
|
84
|
+
if name:
|
85
|
+
self.name = name
|
86
|
+
else:
|
87
|
+
# Use last layer.
|
88
|
+
self.name = os.path.basename(path)
|
89
|
+
|
90
|
+
self.path = path
|
91
|
+
self.guid = guid
|
92
|
+
|
93
|
+
# Copy passed lists (or set to empty lists)
|
94
|
+
self.entries = sorted(list(entries or []))
|
95
|
+
self.items = list(items or [])
|
96
|
+
|
97
|
+
self.entry_type_guid = ENTRY_TYPE_GUIDS['folder']
|
98
|
+
|
99
|
+
def get_guid(self):
|
100
|
+
if self.guid is None:
|
101
|
+
# Use consistent guids for folders (so things don't regenerate).
|
102
|
+
self.guid = MakeGuid(self.path, seed='msvs_folder')
|
103
|
+
return self.guid
|
104
|
+
|
105
|
+
|
106
|
+
#------------------------------------------------------------------------------
|
107
|
+
|
108
|
+
|
109
|
+
class MSVSProject(MSVSSolutionEntry):
|
110
|
+
"""Visual Studio project."""
|
111
|
+
|
112
|
+
def __init__(self, path, name = None, dependencies = None, guid = None,
|
113
|
+
spec = None, build_file = None, config_platform_overrides = None,
|
114
|
+
fixpath_prefix = None):
|
115
|
+
"""Initializes the project.
|
116
|
+
|
117
|
+
Args:
|
118
|
+
path: Absolute path to the project file.
|
119
|
+
name: Name of project. If None, the name will be the same as the base
|
120
|
+
name of the project file.
|
121
|
+
dependencies: List of other Project objects this project is dependent
|
122
|
+
upon, if not None.
|
123
|
+
guid: GUID to use for project, if not None.
|
124
|
+
spec: Dictionary specifying how to build this project.
|
125
|
+
build_file: Filename of the .gyp file that the vcproj file comes from.
|
126
|
+
config_platform_overrides: optional dict of configuration platforms to
|
127
|
+
used in place of the default for this target.
|
128
|
+
fixpath_prefix: the path used to adjust the behavior of _fixpath
|
129
|
+
"""
|
130
|
+
self.path = path
|
131
|
+
self.guid = guid
|
132
|
+
self.spec = spec
|
133
|
+
self.build_file = build_file
|
134
|
+
# Use project filename if name not specified
|
135
|
+
self.name = name or os.path.splitext(os.path.basename(path))[0]
|
136
|
+
|
137
|
+
# Copy passed lists (or set to empty lists)
|
138
|
+
self.dependencies = list(dependencies or [])
|
139
|
+
|
140
|
+
self.entry_type_guid = ENTRY_TYPE_GUIDS['project']
|
141
|
+
|
142
|
+
if config_platform_overrides:
|
143
|
+
self.config_platform_overrides = config_platform_overrides
|
144
|
+
else:
|
145
|
+
self.config_platform_overrides = {}
|
146
|
+
self.fixpath_prefix = fixpath_prefix
|
147
|
+
self.msbuild_toolset = None
|
148
|
+
|
149
|
+
def set_dependencies(self, dependencies):
|
150
|
+
self.dependencies = list(dependencies or [])
|
151
|
+
|
152
|
+
def get_guid(self):
|
153
|
+
if self.guid is None:
|
154
|
+
# Set GUID from path
|
155
|
+
# TODO(rspangler): This is fragile.
|
156
|
+
# 1. We can't just use the project filename sans path, since there could
|
157
|
+
# be multiple projects with the same base name (for example,
|
158
|
+
# foo/unittest.vcproj and bar/unittest.vcproj).
|
159
|
+
# 2. The path needs to be relative to $SOURCE_ROOT, so that the project
|
160
|
+
# GUID is the same whether it's included from base/base.sln or
|
161
|
+
# foo/bar/baz/baz.sln.
|
162
|
+
# 3. The GUID needs to be the same each time this builder is invoked, so
|
163
|
+
# that we don't need to rebuild the solution when the project changes.
|
164
|
+
# 4. We should be able to handle pre-built project files by reading the
|
165
|
+
# GUID from the files.
|
166
|
+
self.guid = MakeGuid(self.name)
|
167
|
+
return self.guid
|
168
|
+
|
169
|
+
def set_msbuild_toolset(self, msbuild_toolset):
|
170
|
+
self.msbuild_toolset = msbuild_toolset
|
171
|
+
|
172
|
+
#------------------------------------------------------------------------------
|
173
|
+
|
174
|
+
|
175
|
+
class MSVSSolution(object):
|
176
|
+
"""Visual Studio solution."""
|
177
|
+
|
178
|
+
def __init__(self, path, version, entries=None, variants=None,
|
179
|
+
websiteProperties=True):
|
180
|
+
"""Initializes the solution.
|
181
|
+
|
182
|
+
Args:
|
183
|
+
path: Path to solution file.
|
184
|
+
version: Format version to emit.
|
185
|
+
entries: List of entries in solution. May contain Folder or Project
|
186
|
+
objects. May be None, if the folder is empty.
|
187
|
+
variants: List of build variant strings. If none, a default list will
|
188
|
+
be used.
|
189
|
+
websiteProperties: Flag to decide if the website properties section
|
190
|
+
is generated.
|
191
|
+
"""
|
192
|
+
self.path = path
|
193
|
+
self.websiteProperties = websiteProperties
|
194
|
+
self.version = version
|
195
|
+
|
196
|
+
# Copy passed lists (or set to empty lists)
|
197
|
+
self.entries = list(entries or [])
|
198
|
+
|
199
|
+
if variants:
|
200
|
+
# Copy passed list
|
201
|
+
self.variants = variants[:]
|
202
|
+
else:
|
203
|
+
# Use default
|
204
|
+
self.variants = ['Debug|Win32', 'Release|Win32']
|
205
|
+
# TODO(rspangler): Need to be able to handle a mapping of solution config
|
206
|
+
# to project config. Should we be able to handle variants being a dict,
|
207
|
+
# or add a separate variant_map variable? If it's a dict, we can't
|
208
|
+
# guarantee the order of variants since dict keys aren't ordered.
|
209
|
+
|
210
|
+
|
211
|
+
# TODO(rspangler): Automatically write to disk for now; should delay until
|
212
|
+
# node-evaluation time.
|
213
|
+
self.Write()
|
214
|
+
|
215
|
+
|
216
|
+
def Write(self, writer=gyp.common.WriteOnDiff):
|
217
|
+
"""Writes the solution file to disk.
|
218
|
+
|
219
|
+
Raises:
|
220
|
+
IndexError: An entry appears multiple times.
|
221
|
+
"""
|
222
|
+
# Walk the entry tree and collect all the folders and projects.
|
223
|
+
all_entries = set()
|
224
|
+
entries_to_check = self.entries[:]
|
225
|
+
while entries_to_check:
|
226
|
+
e = entries_to_check.pop(0)
|
227
|
+
|
228
|
+
# If this entry has been visited, nothing to do.
|
229
|
+
if e in all_entries:
|
230
|
+
continue
|
231
|
+
|
232
|
+
all_entries.add(e)
|
233
|
+
|
234
|
+
# If this is a folder, check its entries too.
|
235
|
+
if isinstance(e, MSVSFolder):
|
236
|
+
entries_to_check += e.entries
|
237
|
+
|
238
|
+
all_entries = sorted(all_entries)
|
239
|
+
|
240
|
+
# Open file and print header
|
241
|
+
f = writer(self.path)
|
242
|
+
f.write('Microsoft Visual Studio Solution File, '
|
243
|
+
'Format Version %s\r\n' % self.version.SolutionVersion())
|
244
|
+
f.write('# %s\r\n' % self.version.Description())
|
245
|
+
|
246
|
+
# Project entries
|
247
|
+
sln_root = os.path.split(self.path)[0]
|
248
|
+
for e in all_entries:
|
249
|
+
relative_path = gyp.common.RelativePath(e.path, sln_root)
|
250
|
+
# msbuild does not accept an empty folder_name.
|
251
|
+
# use '.' in case relative_path is empty.
|
252
|
+
folder_name = relative_path.replace('/', '\\') or '.'
|
253
|
+
f.write('Project("%s") = "%s", "%s", "%s"\r\n' % (
|
254
|
+
e.entry_type_guid, # Entry type GUID
|
255
|
+
e.name, # Folder name
|
256
|
+
folder_name, # Folder name (again)
|
257
|
+
e.get_guid(), # Entry GUID
|
258
|
+
))
|
259
|
+
|
260
|
+
# TODO(rspangler): Need a way to configure this stuff
|
261
|
+
if self.websiteProperties:
|
262
|
+
f.write('\tProjectSection(WebsiteProperties) = preProject\r\n'
|
263
|
+
'\t\tDebug.AspNetCompiler.Debug = "True"\r\n'
|
264
|
+
'\t\tRelease.AspNetCompiler.Debug = "False"\r\n'
|
265
|
+
'\tEndProjectSection\r\n')
|
266
|
+
|
267
|
+
if isinstance(e, MSVSFolder):
|
268
|
+
if e.items:
|
269
|
+
f.write('\tProjectSection(SolutionItems) = preProject\r\n')
|
270
|
+
for i in e.items:
|
271
|
+
f.write('\t\t%s = %s\r\n' % (i, i))
|
272
|
+
f.write('\tEndProjectSection\r\n')
|
273
|
+
|
274
|
+
if isinstance(e, MSVSProject):
|
275
|
+
if e.dependencies:
|
276
|
+
f.write('\tProjectSection(ProjectDependencies) = postProject\r\n')
|
277
|
+
for d in e.dependencies:
|
278
|
+
f.write('\t\t%s = %s\r\n' % (d.get_guid(), d.get_guid()))
|
279
|
+
f.write('\tEndProjectSection\r\n')
|
280
|
+
|
281
|
+
f.write('EndProject\r\n')
|
282
|
+
|
283
|
+
# Global section
|
284
|
+
f.write('Global\r\n')
|
285
|
+
|
286
|
+
# Configurations (variants)
|
287
|
+
f.write('\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\r\n')
|
288
|
+
for v in self.variants:
|
289
|
+
f.write('\t\t%s = %s\r\n' % (v, v))
|
290
|
+
f.write('\tEndGlobalSection\r\n')
|
291
|
+
|
292
|
+
# Sort config guids for easier diffing of solution changes.
|
293
|
+
config_guids = []
|
294
|
+
config_guids_overrides = {}
|
295
|
+
for e in all_entries:
|
296
|
+
if isinstance(e, MSVSProject):
|
297
|
+
config_guids.append(e.get_guid())
|
298
|
+
config_guids_overrides[e.get_guid()] = e.config_platform_overrides
|
299
|
+
config_guids.sort()
|
300
|
+
|
301
|
+
f.write('\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n')
|
302
|
+
for g in config_guids:
|
303
|
+
for v in self.variants:
|
304
|
+
nv = config_guids_overrides[g].get(v, v)
|
305
|
+
# Pick which project configuration to build for this solution
|
306
|
+
# configuration.
|
307
|
+
f.write('\t\t%s.%s.ActiveCfg = %s\r\n' % (
|
308
|
+
g, # Project GUID
|
309
|
+
v, # Solution build configuration
|
310
|
+
nv, # Project build config for that solution config
|
311
|
+
))
|
312
|
+
|
313
|
+
# Enable project in this solution configuration.
|
314
|
+
f.write('\t\t%s.%s.Build.0 = %s\r\n' % (
|
315
|
+
g, # Project GUID
|
316
|
+
v, # Solution build configuration
|
317
|
+
nv, # Project build config for that solution config
|
318
|
+
))
|
319
|
+
f.write('\tEndGlobalSection\r\n')
|
320
|
+
|
321
|
+
# TODO(rspangler): Should be able to configure this stuff too (though I've
|
322
|
+
# never seen this be any different)
|
323
|
+
f.write('\tGlobalSection(SolutionProperties) = preSolution\r\n')
|
324
|
+
f.write('\t\tHideSolutionNode = FALSE\r\n')
|
325
|
+
f.write('\tEndGlobalSection\r\n')
|
326
|
+
|
327
|
+
# Folder mappings
|
328
|
+
# Omit this section if there are no folders
|
329
|
+
if any([e.entries for e in all_entries if isinstance(e, MSVSFolder)]):
|
330
|
+
f.write('\tGlobalSection(NestedProjects) = preSolution\r\n')
|
331
|
+
for e in all_entries:
|
332
|
+
if not isinstance(e, MSVSFolder):
|
333
|
+
continue # Does not apply to projects, only folders
|
334
|
+
for subentry in e.entries:
|
335
|
+
f.write('\t\t%s = %s\r\n' % (subentry.get_guid(), e.get_guid()))
|
336
|
+
f.write('\tEndGlobalSection\r\n')
|
337
|
+
|
338
|
+
f.write('EndGlobal\r\n')
|
339
|
+
|
340
|
+
f.close()
|