diff --git a/README.md b/README.md index 222439f..d9ba391 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,41 @@ -# SUMMARY +# TemplatesToGithub -This plugin facilitates the movement of custom templatesets in Movable Type 4 between instances with the benefit of easy insertion into a code repository system. +# Summary +This plugin facilitates the movement of custom template sets in Movable Type between instances with the benefit of easy insertion into a git-based code repository system. -The export script exports the instance's full set of templates, including the Global Templates, into a directory of text files, organized per blog per template type, with an info.txt file providing as the index. The export script does not modify an MT instance's templates at all; it only reads from the database. +# Naming Conventions -The import script only modifies live content with the --apply_changes flag. Without that flag, the script prints status messages and any potential errors with the intended import. The import script does not preserve template_id's between environments; it keys off of blog name, template name, and output file. +## Significance of the name TemplatesToGithub +The assumption made in the naming of this plugin is that most developers using git will use use the Software-as-a-Service provider of distributed version control and source code management known as [GitHub](https://github.com), which is owned by Microsoft, as their cloud git repository. -This plugin only provides command-line tools; it does not extend any user-facing or editorial functionality of Movable Type. - - -# USAGE +But this plugin does not require use of Github. Developers could manage git repositories to which templates are contributed locally, or could manage those git repositories via a corporate or institutional git repository, or an alternative cloud service to GitHub. ## Terminology STAGING: The MT instance that has the templates you're going to export - LIVE: The MT instance where you'll import STAGING's templates - + PRODUCTION: The MT instance where you'll import STAGING's templates + +# Usage + +This plugin includes command-line tools, that are used in conjunction with the plugin itself, to implement the import and export of text files representing each template; neither the plugin nor the associated command-line tools extend any user-facing or editorial functionality within the Movable Type content management system. + +The export script exports the instance's full set of templates, including the Global Templates, into a directory of text files, organized per blog per template type, with a templates.manifest file (formerly known as info.txt) providing as the index. The export script does not modify an MT instance's templates at all; it only reads from the database. + +The import script only modifies live content with the --apply_changes flag. Without that flag, the script prints status messages and any potential errors with the intended import. The import script does not preserve template_id's between environments; it keys off of blog name, template name, and output file. ## Process -1. Deploy the TemplatesToGithub plugin and the github_export_templates.pl and github_import_templates.pl tools to both ALPHA and BETA. -2. Run the export script on the LIVE instance as a backup. +It is extremely important on multi-developer projects that everyone who may commit template code to the Github repository understands and uses the following workflow. If this process is adopted, all commits involving changes to template text files must be made from a complete set of directories created or updated using github_export_templates.pl. If execution of github_export_templates.pl is omitted on either the PRODUCTION or STAGING server, this may result in templates.manifest becoming out of sync with the template text files. + +1. Deploy the TemplatesToGithub plugin and the github_export_templates.pl and github_import_templates.pl tools to both PRODUCTION and STAGING. + +2. Run the export script on the PRODUCTION instance as a backup. - perl tools/github_export_templates --output_dir=/full/path/to/output/dir + perl tools/github_export_templates.pl --output_dir=/full/path/to/output/dir -3. Check the resulting LIVE files (in that /full/path/to/output/dir path) into your favorite code repository in its own branch. +3. Check the resulting PRODUCTION files (in that /full/path/to/output/dir path) into your favorite code repository in its own branch. 4. Run the export script on the STAGING instance. Same command as Step #2 but in the Staging environment. @@ -36,17 +45,37 @@ This plugin only provides command-line tools; it does not extend any user-facing 7. When you're ready to make those staging template live, you can do any amount of branch merging or tagging; whatever suits your process. -8. TEST OUT an import of templates into the LIVE environment with the following command: +8. TEST OUT an import of templates into the PRODUCTION environment with the following command: perl tools/github_import_templates.pl --input_dir=/full/path/to/staging/templates -9. Resolve any errors that happen in Step 8; repeat Step 8 until the script finishes successfully. Errors will be displayed if a template archive existed on STAGING but not LIVE, if a blog existed on STAGING but not LIVE; if a template cannot be found, etc. +9. Resolve any errors that happen in Step 8; repeat Step 8 until the script finishes successfully. Errors will be displayed if a template archive existed on STAGING but not PRODUCTION, if a blog existed on STAGING but not PRODUCTION; if a template cannot be found, etc. -10. Execute the template import into the LIVE environment: +10. Execute the template import into the PRODUCTION environment: perl tools/github_import_templates.pl --input_dir=/full/path/to/staging/templates --apply_changes -11. Revert to the LIVE templates (exported in Step 2) in case of emergency. \ No newline at end of file +11. Revert to the PRODUCTION templates (exported in Step 2) in case of emergency. + +# Support + +For technical support of this theme, contact After6 Services at support@after6services.com or customer.service@after6services.com. + +# License + +# Authorship + +The TemplatesToGithub Plugin and associated command line tools were originally developed by Natalie Podrazik. This project was adopted by After6 Services LLC, with small code and documentation changes by Dave Aiello. + +# Copyright + +Copyright © 2011, Natalie Podrazik. + +Copyright © 2012-2021, After6 Services LLC. All rights reserved. + +AMovable Type is a registered trademark of Six Apart Limited. + +Trademarks, product names, company names, or logos used in connection with this repository are the property of their respective owners and references do not imply any endorsement, sponsorship, or affiliation with After6 Services LLC unless otherwise specified. diff --git a/plugin/TemplatesToGithub/config.yaml b/plugin/TemplatesToGithub/config.yaml deleted file mode 100644 index 127f62d..0000000 --- a/plugin/TemplatesToGithub/config.yaml +++ /dev/null @@ -1,4 +0,0 @@ -id: TemplatesToGithub -name: TemplatesToGithub -description: This plugin provides supplemental library for command-line exporting and importing of MT templates to github.com repositories. -version: 1.0 diff --git a/plugins/TemplatesToGithub/config.yaml b/plugins/TemplatesToGithub/config.yaml new file mode 100644 index 0000000..2fc37a6 --- /dev/null +++ b/plugins/TemplatesToGithub/config.yaml @@ -0,0 +1,6 @@ +id: TemplatesToGithub +name: TemplatesToGithub +description: 'This plugin provides supplemental library for command-line exporting and importing of MT templates to github.com repositories.' +author_name: 'After6 Services LLC' +author_link: 'http://after6services.com' +version: 1.1 diff --git a/plugin/TemplatesToGithub/lib/TemplatesToGithub/Util.pm b/plugins/TemplatesToGithub/lib/TemplatesToGithub/Util.pm similarity index 99% rename from plugin/TemplatesToGithub/lib/TemplatesToGithub/Util.pm rename to plugins/TemplatesToGithub/lib/TemplatesToGithub/Util.pm index 307a659..9741db4 100644 --- a/plugin/TemplatesToGithub/lib/TemplatesToGithub/Util.pm +++ b/plugins/TemplatesToGithub/lib/TemplatesToGithub/Util.pm @@ -111,4 +111,4 @@ sub debug { print STDERR "$msg" if DEBUG; } -1; \ No newline at end of file +1; diff --git a/tools/github_export_templates.pl b/tools/github_export_templates.pl index 866eaab..a120eea 100755 --- a/tools/github_export_templates.pl +++ b/tools/github_export_templates.pl @@ -36,7 +36,7 @@ $output_dir = TemplatesToGithub::Util::create_directory($output_dir); # clear info file it if exists. -unlink("$output_dir/info.txt"); +unlink("$output_dir/templates.manifest"); # for each blog, dump their templates. my $blog_iter = MT::Blog->load_iter(); @@ -46,7 +46,7 @@ $blog->id, $blog->name, $output_dir, - "info.txt")); + "templates.manifest")); } # repeat for the global templates. @@ -54,9 +54,9 @@ 0, TemplatesToGithub::Util->GLOBAL_BLOG_NAME, $output_dir, - "info.txt")); + "templates.manifest")); -#open (OUTPUTINFO, ">>$output_dir/info.txt"); +#open (OUTPUTINFO, ">>$output_dir/templates.manifest"); #print OUTPUTINFO encode_json(\@final_summary) . "\n"; #close OUTPUTINFO; @@ -169,4 +169,4 @@ sub export_blog_templates { -1; \ No newline at end of file +1; diff --git a/tools/github_import_templates.pl b/tools/github_import_templates.pl index 086801c..683da32 100755 --- a/tools/github_import_templates.pl +++ b/tools/github_import_templates.pl @@ -112,7 +112,7 @@ sub import_blog_templates { my %template_change_counter = TemplatesToGithub::Util->TEMPLATE_TYPES; # suck in imported templates - open (INPUT, "< $input_dir/info.txt"); + open (INPUT, "< $input_dir/templates.manifest"); my $whole_file = ""; my $line = ; while ($line) {